summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-03-31 14:37:24 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-03-31 14:37:24 -0400
commit0015d6fe2c6a53c5f757599122ae9fd1a156a69f (patch)
tree81b7269c767da1ad4a5a9ac01e58ead5e92f0983
parent46bc01f0dd1a3435b3c6ce71e1be0d19b7aaa5bd (diff)
parent59f81c5f2a25ec77baf4a30c3da9ccb7675d1562 (diff)
Merge branch 'master' into contest_link_80C2020
-rw-r--r--.gitignore2
-rw-r--r--.travis.yml1
-rw-r--r--Makefile9
-rw-r--r--asm/battle_1.s72
-rw-r--r--asm/battle_9.s171
-rw-r--r--asm/battle_anim_812C144.s76
-rw-r--r--asm/battle_anim_813F0F4.s78
-rw-r--r--asm/current.s14
-rw-r--r--asm/cute_sketch.s1
-rw-r--r--asm/dark.s2013
-rw-r--r--asm/fight.s1749
-rw-r--r--asm/flying.s30
-rw-r--r--asm/ghost.s16
-rw-r--r--asm/ground.s30
-rw-r--r--asm/ice.s48
-rw-r--r--asm/nakamura_debug_menu.s4686
-rw-r--r--asm/nohara_debug_menu.s2198
-rw-r--r--asm/normal.s50
-rw-r--r--asm/pokemon_storage_system.s13848
-rw-r--r--asm/psychic.s2183
-rw-r--r--asm/rock.s1643
-rw-r--r--asm/taya_debug_window.s2054
-rw-r--r--asm/tomomichi_debug_menu.s8100
-rw-r--r--asm/unk_debug_menu_3.s747
-rw-r--r--asm/unk_text_8095904.s256
-rw-r--r--asm/watanabe_debug_menu.s9578
-rw-r--r--asm/water.s10
-rwxr-xr-xasmdiff_de_debug.sh7
-rw-r--r--charmap.txt5
-rw-r--r--config.mk7
-rw-r--r--data-de/event_scripts.s1
-rw-r--r--data/battle_ai_scripts.s272
-rw-r--r--data/battle_anim_80CA710.s114
-rw-r--r--data/battle_anim_scripts.s15664
-rw-r--r--data/btl_attrs.s115
-rw-r--r--data/debug_menu_3.s106
-rw-r--r--data/debug_menu_nohara.s253
-rw-r--r--data/debug_menu_taya.s219
-rw-r--r--data/debug_menu_tomomichi.s2711
-rw-r--r--data/debug_menu_watanabe.s744
-rw-r--r--data/event_scripts.s1
-rw-r--r--data/graphics.s3
-rw-r--r--data/pokemon_storage_system.s686
-rw-r--r--data/roulette.s61
-rw-r--r--data/scripts/debug.inc536
-rw-r--r--data/start_menu_debug.s495
-rw-r--r--data/unk_debug_menu_3.s105
-rwxr-xr-xde_after.sh3
-rw-r--r--graphics/debug/sprite_browser.pal51
-rw-r--r--graphics/debug/sprite_browser.pngbin0 -> 416 bytes
-rw-r--r--include/battle.h2
-rw-r--r--include/battle_anim.h11
-rw-r--r--include/battle_tower.h1
-rw-r--r--include/cable_club.h3
-rw-r--r--include/clock.h1
-rw-r--r--include/constants/battle_anim.h9
-rw-r--r--include/constants/decorations.h2
-rw-r--r--include/constants/items.h34
-rw-r--r--include/contest.h19
-rw-r--r--include/credits.h11
-rw-r--r--include/debug.h10
-rw-r--r--include/decoration.h6
-rw-r--r--include/easy_chat.h1
-rw-r--r--include/event_object_movement.h (renamed from include/field_map_obj.h)44
-rw-r--r--include/ewram.h7
-rw-r--r--include/field_control_avatar.h1
-rw-r--r--include/field_fadetransition.h1
-rw-r--r--include/field_ground_effect.h27
-rw-r--r--include/field_map_obj_helpers.h23
-rw-r--r--include/field_specials.h1
-rw-r--r--include/fieldmap.h2
-rw-r--r--include/gba/macro.h2
-rw-r--r--include/global.berry.h2
-rw-r--r--include/global.h70
-rw-r--r--include/graphics.h10
-rw-r--r--include/hof_pc.h12
-rw-r--r--include/item.h23
-rw-r--r--include/link.h12
-rw-r--r--include/macros/battle_anim.inc74
-rw-r--r--include/main.h2
-rw-r--r--include/mon_markings.h31
-rw-r--r--include/mystery_event_menu.h1
-rw-r--r--include/new_game.h2
-rw-r--r--include/overworld.h12
-rw-r--r--include/pc_screen_effect.h21
-rw-r--r--include/pokeblock.h15
-rw-r--r--include/pokemon.h13
-rw-r--r--include/pokemon_icon.h3
-rw-r--r--include/pokemon_storage_system.h298
-rw-r--r--include/region_map.h1
-rw-r--r--include/reset_rtc_screen.h1
-rw-r--r--include/rom_8077ABC.h41
-rw-r--r--include/rtc.h1
-rw-r--r--include/shop.h2
-rw-r--r--include/slot_machine.h72
-rw-r--r--include/sprite.h1
-rw-r--r--include/start_menu.h2
-rw-r--r--include/strings.h2
-rw-r--r--include/text.h2
-rw-r--r--include/trade.h1
-rw-r--r--include/trainer_card.h2
-rw-r--r--ld_script.txt581
-rw-r--r--projects/Makefile3
-rw-r--r--projects/cMakeLists.txt13
-rw-r--r--projects/pokeruby.pnproj12
-rw-r--r--projects/pokeruby.sublime-project8
-rw-r--r--projects/pokeruby.sublime-workspace166
-rw-r--r--ruby_de_debug.sha11
-rw-r--r--sound/music_player_table.inc8
-rw-r--r--src/bard_music.c (renamed from src/field/bard_music.c)4
-rw-r--r--src/battle/anim/aurora.c6
-rw-r--r--src/battle/anim/blow_kiss.c6
-rw-r--r--src/battle/anim/bubble.c6
-rw-r--r--src/battle/anim/bug.c59
-rw-r--r--src/battle/anim/bullet.c4
-rw-r--r--src/battle/anim/cutter.c60
-rw-r--r--src/battle/anim/cyclone.c2
-rw-r--r--src/battle/anim/dark.c898
-rw-r--r--src/battle/anim/dragon.c4
-rw-r--r--src/battle/anim/draw.c116
-rw-r--r--src/battle/anim/drum.c2
-rw-r--r--src/battle/anim/egg.c2
-rw-r--r--src/battle/anim/energy_wave.c10
-rw-r--r--src/battle/anim/fight.c664
-rw-r--r--src/battle/anim/fire_2.c75
-rw-r--r--src/battle/anim/flying_hearts.c2
-rw-r--r--src/battle/anim/flying_path.c28
-rw-r--r--src/battle/anim/glitter.c2
-rw-r--r--src/battle/anim/grip.c2
-rw-r--r--src/battle/anim/guard.c4
-rw-r--r--src/battle/anim/guillotine.c6
-rw-r--r--src/battle/anim/heart_1.c2
-rw-r--r--src/battle/anim/heated_rock.c92
-rw-r--r--src/battle/anim/homing.c2
-rw-r--r--src/battle/anim/hop.c2
-rw-r--r--src/battle/anim/lunge_1.c14
-rw-r--r--src/battle/anim/lunge_2.c4
-rw-r--r--src/battle/anim/money.c4
-rw-r--r--src/battle/anim/note_rain.c4
-rw-r--r--src/battle/anim/note_scatter_2.c4
-rw-r--r--src/battle/anim/orbit.c12
-rw-r--r--src/battle/anim/orbit_fast.c17
-rw-r--r--src/battle/anim/orbit_scatter.c14
-rw-r--r--src/battle/anim/orbs.c18
-rw-r--r--src/battle/anim/perceive.c2
-rw-r--r--src/battle/anim/poison.c36
-rw-r--r--src/battle/anim/powder.c17
-rw-r--r--src/battle/anim/psychic.c900
-rw-r--r--src/battle/anim/ring.c22
-rw-r--r--src/battle/anim/rock.c602
-rw-r--r--src/battle/anim/scan.c12
-rw-r--r--src/battle/anim/seed.c31
-rw-r--r--src/battle/anim/shadow_minimize.c13
-rw-r--r--src/battle/anim/slash.c2
-rw-r--r--src/battle/anim/slice.c20
-rw-r--r--src/battle/anim/sonic.c38
-rw-r--r--src/battle/anim/sonic_task.c2
-rw-r--r--src/battle/anim/sunlight.c2
-rw-r--r--src/battle/anim/sword.c4
-rw-r--r--src/battle/anim/tile_out.c2
-rw-r--r--src/battle/anim/unused_4.c4
-rw-r--r--src/battle/anim/unused_7.c4
-rw-r--r--src/battle/anim/unused_8.c6
-rw-r--r--src/battle/anim/unused_9.c19
-rw-r--r--src/battle/anim/water.c4
-rw-r--r--src/battle/anim/wisp_fire.c4
-rw-r--r--src/battle/anim/wisp_orb.c4
-rw-r--r--src/battle/anim/withdraw.c6
-rw-r--r--src/battle/battle_2.c2125
-rw-r--r--src/battle/battle_4.c204
-rw-r--r--src/battle/battle_7.c30
-rw-r--r--src/battle/battle_ai.c8
-rw-r--r--src/battle/battle_anim.c113
-rw-r--r--src/battle/battle_anim_807B69C.c4
-rw-r--r--src/battle/battle_anim_80A7E7C.c480
-rw-r--r--src/battle/battle_controller_linkopponent.c108
-rw-r--r--src/battle/battle_controller_linkpartner.c112
-rw-r--r--src/battle/battle_controller_opponent.c468
-rw-r--r--src/battle/battle_controller_player.c339
-rw-r--r--src/battle/battle_controller_safari.c26
-rw-r--r--src/battle/battle_controller_wally.c76
-rw-r--r--src/battle/battle_interface.c31
-rw-r--r--src/battle/battle_records.c53
-rw-r--r--src/battle/battle_setup.c1
-rw-r--r--src/battle/battle_util.c324
-rw-r--r--src/battle/pokeball.c52
-rw-r--r--src/battle/reshow_battle_screen.c44
-rw-r--r--src/battle_tower.c (renamed from src/field/battle_tower.c)247
-rw-r--r--src/berry.c (renamed from src/field/berry.c)136
-rw-r--r--src/berry_blender.c (renamed from src/scene/berry_blender.c)335
-rw-r--r--src/berry_tag_screen.c (renamed from src/field/berry_tag_screen.c)4
-rw-r--r--src/bike.c (renamed from src/field/bike.c)22
-rw-r--r--src/birch_pc.c (renamed from src/field/birch_pc.c)0
-rw-r--r--src/blend_palette.c (renamed from src/engine/blend_palette.c)0
-rw-r--r--src/braille_puzzles.c (renamed from src/field/braille_puzzles.c)0
-rw-r--r--src/cable_car.c (renamed from src/scene/cable_car.c)173
-rw-r--r--src/cable_car_util.c (renamed from src/engine/cable_car_util.c)0
-rw-r--r--src/cable_club.c (renamed from src/engine/cable_club.c)151
-rw-r--r--src/choose_party.c (renamed from src/field/choose_party.c)33
-rw-r--r--src/clear_save_data_menu.c (renamed from src/engine/clear_save_data_menu.c)0
-rw-r--r--src/clock.c (renamed from src/engine/clock.c)3
-rw-r--r--src/coins.c (renamed from src/field/coins.c)0
-rw-r--r--src/contest.c220
-rw-r--r--src/contest_painting.c (renamed from src/scene/contest_painting.c)0
-rw-r--r--src/coord_event_weather.c (renamed from src/field/coord_event_weather.c)0
-rw-r--r--src/credits.c (renamed from src/scene/credits.c)4
-rw-r--r--src/cute_sketch.c (renamed from src/scene/cute_sketch.c)0
-rw-r--r--src/data/battle_tower/trainers.h2800
-rw-r--r--src/data/battle_tower/trainers_de.h2800
-rw-r--r--src/data/pokedex_entries_de.h3
-rw-r--r--src/data/pokedex_entries_en.h2
-rw-r--r--src/daycare.c (renamed from src/field/daycare.c)93
-rw-r--r--src/debug/kagaya_debug_menu.c183
-rw-r--r--src/debug/matsuda_debug_menu.c326
-rw-r--r--src/debug/nakamura_debug_menu.c189
-rw-r--r--src/debug/nohara_debug_menu.c12
-rw-r--r--src/debug/start_menu_debug.c6051
-rw-r--r--src/debug/taya_debug_window.c6
-rw-r--r--src/debug/tomomichi_debug_menu.c20
-rw-r--r--src/debug/watanabe_debug_menu.c11
-rw-r--r--src/decompress.c (renamed from src/engine/decompress.c)0
-rw-r--r--src/decoration.c (renamed from src/field/decoration.c)4
-rw-r--r--src/decoration_inventory.c (renamed from src/field/decoration_inventory.c)11
-rw-r--r--src/dewford_trend.c (renamed from src/field/dewford_trend.c)0
-rw-r--r--src/diploma.c (renamed from src/field/diploma.c)0
-rw-r--r--src/easy_chat_2.c2
-rw-r--r--src/egg_hatch.c (renamed from src/scene/egg_hatch.c)0
-rw-r--r--src/event_data.c (renamed from src/field/event_data.c)0
-rw-r--r--src/event_object_movement.c (renamed from src/field/field_map_obj.c)1458
-rw-r--r--src/evolution_graphics.c (renamed from src/scene/evolution_graphics.c)0
-rw-r--r--src/evolution_scene.c (renamed from src/scene/evolution_scene.c)0
-rw-r--r--src/field/field_ground_effect.c772
-rw-r--r--src/field/field_map_obj_helpers.c387
-rw-r--r--src/field_camera.c (renamed from src/field/field_camera.c)0
-rw-r--r--src/field_control_avatar.c (renamed from src/field/field_control_avatar.c)65
-rw-r--r--src/field_door.c (renamed from src/field/field_door.c)0
-rw-r--r--src/field_effect.c (renamed from src/field/field_effect.c)5
-rw-r--r--src/field_effect_helpers.c (renamed from src/field/field_effect_helpers.c)6
-rw-r--r--src/field_fadetransition.c (renamed from src/field/field_fadetransition.c)19
-rw-r--r--src/field_message_box.c (renamed from src/field/field_message_box.c)0
-rw-r--r--src/field_player_avatar.c (renamed from src/field/field_player_avatar.c)38
-rw-r--r--src/field_poison.c (renamed from src/field/field_poison.c)0
-rw-r--r--src/field_region_map.c (renamed from src/field/field_region_map.c)0
-rw-r--r--src/field_screen_effect.c (renamed from src/field/field_screen_effect.c)0
-rw-r--r--src/field_special_scene.c (renamed from src/field/field_special_scene.c)2
-rw-r--r--src/field_specials.c (renamed from src/field/field_specials.c)2
-rw-r--r--src/field_tasks.c (renamed from src/field/field_tasks.c)0
-rw-r--r--src/field_weather.c (renamed from src/field/field_weather.c)105
-rw-r--r--src/field_weather_effects.c (renamed from src/field/field_weather_effects.c)68
-rw-r--r--src/fieldmap.c (renamed from src/field/fieldmap.c)0
-rw-r--r--src/fldeff_berrytree.c (renamed from src/field/fldeff_berrytree.c)2
-rw-r--r--src/fldeff_cut.c (renamed from src/field/fldeff_cut.c)44
-rw-r--r--src/fldeff_decoration.c (renamed from src/field/fldeff_decoration.c)2
-rw-r--r--src/fldeff_escalator.c (renamed from src/field/fldeff_escalator.c)0
-rw-r--r--src/fldeff_flash.c (renamed from src/field/fldeff_flash.c)12
-rw-r--r--src/fldeff_poison.c (renamed from src/field/fldeff_poison.c)0
-rw-r--r--src/fldeff_recordmixing.c (renamed from src/field/fldeff_recordmixing.c)2
-rw-r--r--src/fldeff_secret_base_pc.c (renamed from src/field/fldeff_secret_base_pc.c)0
-rw-r--r--src/fldeff_secretpower.c (renamed from src/field/fldeff_secretpower.c)42
-rw-r--r--src/fldeff_softboiled.c (renamed from src/field/fldeff_softboiled.c)0
-rw-r--r--src/fldeff_strength.c (renamed from src/field/fldeff_strength.c)23
-rw-r--r--src/fldeff_sweetscent.c (renamed from src/field/fldeff_sweetscent.c)0
-rw-r--r--src/fldeff_teleport.c (renamed from src/field/fldeff_teleport.c)0
-rw-r--r--src/hall_of_fame.c (renamed from src/scene/hall_of_fame.c)44
-rw-r--r--src/heal_location.c (renamed from src/field/heal_location.c)0
-rw-r--r--src/hof_pc.c (renamed from src/field/hof_pc.c)0
-rw-r--r--src/intro.c (renamed from src/scene/intro.c)408
-rw-r--r--src/intro_credits_graphics.c (renamed from src/scene/intro_credits_graphics.c)148
-rw-r--r--src/item.c (renamed from src/field/item.c)343
-rw-r--r--src/item_menu.c (renamed from src/field/item_menu.c)58
-rw-r--r--src/item_use.c (renamed from src/field/item_use.c)1
-rw-r--r--src/landmark.c (renamed from src/field/landmark.c)0
-rw-r--r--src/learn_move.c (renamed from src/pokemon/learn_move.c)0
-rw-r--r--src/libs/m4a_1.s6
-rw-r--r--src/link.c (renamed from src/engine/link.c)99
-rw-r--r--src/load_save.c (renamed from src/engine/load_save.c)0
-rw-r--r--src/lottery_corner.c (renamed from src/field/lottery_corner.c)0
-rw-r--r--src/mail.c1159
-rw-r--r--src/mail_data.c (renamed from src/pokemon/mail_data.c)0
-rw-r--r--src/main.c (renamed from src/engine/main.c)0
-rw-r--r--src/main_menu.c (renamed from src/engine/main_menu.c)0
-rw-r--r--src/map_name_popup.c (renamed from src/field/map_name_popup.c)0
-rw-r--r--src/map_obj_lock.c (renamed from src/field/map_obj_lock.c)3
-rw-r--r--src/mauville_man.c (renamed from src/field/mauville_man.c)34
-rw-r--r--src/menu.c (renamed from src/engine/menu.c)0
-rw-r--r--src/menu_cursor.c (renamed from src/engine/menu_cursor.c)4
-rw-r--r--src/menu_helpers.c (renamed from src/field/menu_helpers.c)0
-rw-r--r--src/metatile_behavior.c (renamed from src/field/metatile_behavior.c)0
-rw-r--r--src/mon_markings.c (renamed from src/pokemon/mon_markings.c)20
-rw-r--r--src/money.c (renamed from src/field/money.c)0
-rw-r--r--src/mystery_event_menu.c (renamed from src/engine/mystery_event_menu.c)154
-rw-r--r--src/mystery_event_msg.c (renamed from src/engine/mystery_event_msg.c)0
-rw-r--r--src/mystery_event_script.c (renamed from src/engine/mystery_event_script.c)0
-rw-r--r--src/name_string_util.c (renamed from src/engine/name_string_util.c)0
-rw-r--r--src/naming_screen.c (renamed from src/engine/naming_screen.c)4
-rw-r--r--src/new_game.c (renamed from src/scene/new_game.c)75
-rw-r--r--src/option_menu.c (renamed from src/engine/option_menu.c)0
-rw-r--r--src/overworld.c (renamed from src/field/overworld.c)101
-rw-r--r--src/palette.c (renamed from src/engine/palette.c)0
-rw-r--r--src/party_menu.c (renamed from src/field/party_menu.c)1082
-rw-r--r--src/pc_screen_effect.c (renamed from src/field/pc_screen_effect.c)17
-rw-r--r--src/play_time.c (renamed from src/engine/play_time.c)0
-rw-r--r--src/player_pc.c (renamed from src/field/player_pc.c)0
-rw-r--r--src/pokeblock.c (renamed from src/field/pokeblock.c)74
-rw-r--r--src/pokeblock_feed.c (renamed from src/pokemon/pokeblock_feed.c)0
-rw-r--r--src/pokedex.c (renamed from src/pokemon/pokedex.c)10
-rw-r--r--src/pokedex_area_screen.c20
-rw-r--r--src/pokedex_cry_screen.c (renamed from src/pokemon/pokedex_cry_screen.c)0
-rw-r--r--src/pokemon/mail.c599
-rw-r--r--src/pokemon/pokemon_storage_system.c93
-rw-r--r--src/pokemon_1.c (renamed from src/pokemon/pokemon_1.c)67
-rw-r--r--src/pokemon_2.c (renamed from src/pokemon/pokemon_2.c)3
-rw-r--r--src/pokemon_3.c (renamed from src/pokemon/pokemon_3.c)0
-rw-r--r--src/pokemon_icon.c (renamed from src/pokemon/pokemon_icon.c)0
-rw-r--r--src/pokemon_item_effect.c (renamed from src/pokemon/pokemon_item_effect.c)0
-rw-r--r--src/pokemon_menu.c (renamed from src/pokemon/pokemon_menu.c)25
-rw-r--r--src/pokemon_size_record.c (renamed from src/pokemon/pokemon_size_record.c)0
-rw-r--r--src/pokemon_storage_system.c784
-rw-r--r--src/pokemon_storage_system_2.c2121
-rw-r--r--src/pokemon_storage_system_3.c655
-rw-r--r--src/pokemon_storage_system_4.c2849
-rw-r--r--src/pokemon_storage_system_5.c16
-rw-r--r--src/pokemon_summary_screen.c (renamed from src/pokemon/pokemon_summary_screen.c)456
-rw-r--r--src/pokenav.c16
-rw-r--r--src/pokenav_before.c563
-rw-r--r--src/random.c (renamed from src/engine/random.c)0
-rw-r--r--src/record_mixing.c (renamed from src/engine/record_mixing.c)0
-rw-r--r--src/region_map.c (renamed from src/field/region_map.c)224
-rw-r--r--src/reset_rtc_screen.c (renamed from src/engine/reset_rtc_screen.c)103
-rw-r--r--src/roamer.c (renamed from src/field/roamer.c)19
-rw-r--r--src/rom3.c14
-rw-r--r--src/rom6.c20
-rw-r--r--src/rom_8077ABC.c171
-rw-r--r--src/rotating_gate.c (renamed from src/field/rotating_gate.c)2
-rw-r--r--src/roulette.c2687
-rw-r--r--src/rtc.c (renamed from src/engine/rtc.c)29
-rw-r--r--src/safari_zone.c (renamed from src/field/safari_zone.c)2
-rw-r--r--src/save.c (renamed from src/engine/save.c)41
-rw-r--r--src/save_failed_screen.c (renamed from src/engine/save_failed_screen.c)21
-rw-r--r--src/save_menu_util.c (renamed from src/engine/save_menu_util.c)0
-rw-r--r--src/scrcmd.c (renamed from src/field/scrcmd.c)3
-rw-r--r--src/script.c (renamed from src/engine/script.c)0
-rw-r--r--src/script_menu.c (renamed from src/field/script_menu.c)0
-rw-r--r--src/script_movement.c (renamed from src/field/script_movement.c)3
-rw-r--r--src/secret_base.c (renamed from src/field/secret_base.c)338
-rw-r--r--src/shop.c (renamed from src/field/shop.c)45
-rw-r--r--src/slot_machine.c (renamed from src/field/slot_machine.c)1425
-rw-r--r--src/sound.c (renamed from src/engine/sound.c)0
-rw-r--r--src/sprite.c (renamed from src/engine/sprite.c)14
-rw-r--r--src/start_menu.c (renamed from src/field/start_menu.c)110
-rw-r--r--src/starter_choose.c (renamed from src/field/starter_choose.c)0
-rw-r--r--src/string_util.c (renamed from src/engine/string_util.c)0
-rw-r--r--src/strings.c14
-rw-r--r--src/task.c (renamed from src/engine/task.c)10
-rw-r--r--src/text.c (renamed from src/engine/text.c)12
-rw-r--r--src/text_window.c (renamed from src/engine/text_window.c)0
-rw-r--r--src/tileset_anim.c (renamed from src/engine/tileset_anim.c)0
-rw-r--r--src/time_events.c (renamed from src/engine/time_events.c)0
-rw-r--r--src/title_screen.c (renamed from src/scene/title_screen.c)19
-rw-r--r--src/trade.c (renamed from src/engine/trade.c)2
-rw-r--r--src/trader.c (renamed from src/field/trader.c)2
-rw-r--r--src/trainer_card.c (renamed from src/engine/trainer_card.c)97
-rw-r--r--src/trainer_see.c (renamed from src/field/trainer_see.c)2
-rw-r--r--src/trig.c (renamed from src/engine/trig.c)0
-rw-r--r--src/tv.c (renamed from src/field/tv.c)12
-rw-r--r--src/unk_text_8095904.c266
-rw-r--r--src/use_pokeblock.c (renamed from src/field/use_pokeblock.c)1
-rw-r--r--src/util.c (renamed from src/engine/util.c)0
-rw-r--r--src/wallclock.c (renamed from src/field/wallclock.c)0
-rw-r--r--src/wild_encounter.c (renamed from src/field/wild_encounter.c)41
-rw-r--r--sym_bss.txt77
-rw-r--r--sym_common.txt95
-rw-r--r--sym_ewram.txt276
373 files changed, 74168 insertions, 43101 deletions
diff --git a/.gitignore b/.gitignore
index 4e73c4f17..cfb969f5c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -39,3 +39,5 @@ build/
.idea/
*.DS_Store
*.pl
+.vs/
+.projects/ARM/
diff --git a/.travis.yml b/.travis.yml
index 9a196819b..6e88230ac 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -55,5 +55,6 @@ matrix:
- ./build_tools.sh
- make -j2 ruby_de
- make -j2 sapphire_de
+ - make -j2 ruby_de_debug
allow_failures:
- env: _="Formatting"
diff --git a/Makefile b/Makefile
index 91abef07a..9e2a2366e 100644
--- a/Makefile
+++ b/Makefile
@@ -19,9 +19,9 @@ PREPROC := tools/preproc/preproc
SCANINC := tools/scaninc/scaninc
RAMSCRGEN := tools/ramscrgen/ramscrgen
-ASFLAGS := -mcpu=arm7tdmi -I include --defsym $(GAME_VERSION)=1 --defsym REVISION=$(GAME_REVISION) --defsym $(GAME_LANGUAGE)=1
+ASFLAGS := -mcpu=arm7tdmi -I include --defsym $(GAME_VERSION)=1 --defsym REVISION=$(GAME_REVISION) --defsym $(GAME_LANGUAGE)=1 --defsym DEBUG=$(DEBUG)
CC1FLAGS := -mthumb-interwork -Wimplicit -Wparentheses -Wunused -Werror -O2 -fhex-asm
-CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef -Werror -Wno-trigraphs -D $(GAME_VERSION) -D REVISION=$(GAME_REVISION) -D $(GAME_LANGUAGE)
+CPPFLAGS := -I tools/agbcc/include -iquote include -nostdinc -undef -Werror -Wno-trigraphs -D $(GAME_VERSION) -D REVISION=$(GAME_REVISION) -D $(GAME_LANGUAGE) -D DEBUG=$(DEBUG)
#### Files ####
@@ -100,12 +100,12 @@ clean: tidy
$(RM) $(ALL_OBJECTS)
find . \( -iname '*.1bpp' -o -iname '*.4bpp' -o -iname '*.8bpp' -o -iname '*.gbapal' -o -iname '*.lz' -o -iname '*.rl' \) -exec rm {} +
-ALL_BUILDS := ruby ruby_rev1 ruby_rev1 sapphire sapphire_rev1 sapphire_rev2 ruby_de sapphire_de
+ALL_BUILDS := ruby ruby_rev1 ruby_rev1 sapphire sapphire_rev1 sapphire_rev2 ruby_de sapphire_de ruby_de_debug
tidy:
$(RM) $(ALL_BUILDS:%=poke%{.gba,.elf,.map})
$(RM) -r build
-%.gba: %.elf
+$(ROM): %.gba: %.elf
$(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@
%.elf: $(LD_SCRIPT) $(ALL_OBJECTS)
@@ -138,6 +138,7 @@ sapphire_rev1: ; @$(MAKE) --no-print-directory GAME_VERSION=SAPPHIRE GAME_REVISI
sapphire_rev2: ; @$(MAKE) --no-print-directory GAME_VERSION=SAPPHIRE GAME_REVISION=2
ruby_de: ; @$(MAKE) --no-print-directory GAME_VERSION=RUBY GAME_LANGUAGE=GERMAN
sapphire_de: ; @$(MAKE) --no-print-directory GAME_VERSION=SAPPHIRE GAME_LANGUAGE=GERMAN
+ruby_de_debug: ; @$(MAKE) --no-print-directory GAME_VERSION=RUBY GAME_LANGUAGE=GERMAN DEBUG=1
#### Graphics Rules ####
diff --git a/asm/battle_1.s b/asm/battle_1.s
index 980bd6a65..cd925e10d 100644
--- a/asm/battle_1.s
+++ b/asm/battle_1.s
@@ -794,6 +794,77 @@ _0800DAB0: .4byte 0x0600d000
_0800DAB4: .4byte gBattleTerrainPalette_BattleTower
thumb_func_end DrawMainBattleBackground
+.if DEBUG
+ thumb_func_start sub_800DAB8
+sub_800DAB8:
+.syntax divided
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffffc
+ ldr r0, ._113 @ gUnknown_08D00000
+ mov r1, #0xc0
+ lsl r1, r1, #0x13
+ bl LZDecompressVram
+ ldr r0, ._113 + 4 @ gUnknown_08D00524
+ ldr r4, ._113 + 8 @ 0x600c000
+ mov r2, #0x80
+ lsl r2, r2, #0x4
+ add r1, r4, #0
+ bl CpuSet
+ ldr r0, ._113 + 12 @ gUnknown_08D004E0
+ mov r1, #0x0
+ mov r2, #0x40
+ bl LoadCompressedPalette
+ bl sub_800D74C
+ bl DrawMainBattleBackground
+ ldr r0, ._113 + 16 @ gBattleTypeFlags
+ ldrh r1, [r0]
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._112 @cond_branch
+ ldr r0, ._113 + 20 @ 0x6000600
+ mov r1, #0x0
+ add r2, r4, #0
+ mov r3, #0x1
+ bl debug_sub_8008218
+ ldr r5, ._113 + 24 @ 0x101
+ mov r4, #0x1
+ str r4, [sp]
+ add r0, r5, #0
+ mov r1, #0x3
+ mov r2, #0x1
+ mov r3, #0x3
+ bl debug_sub_8008264
+ str r4, [sp]
+ add r0, r5, #0
+ mov r1, #0x3
+ mov r2, #0x15
+ mov r3, #0x3
+ bl debug_sub_8008264
+ str r4, [sp]
+ add r0, r5, #0
+ mov r1, #0x3
+ mov r2, #0x29
+ mov r3, #0x3
+ bl debug_sub_8008264
+._112:
+ add sp, sp, #0x4
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._114:
+ .align 2, 0
+._113:
+ .word gUnknown_08D00000
+ .word gUnknown_08D00524
+ .word 0x600c000
+ .word gUnknown_08D004E0
+ .word gBattleTypeFlags
+ .word 0x6000600
+ .word 0x101
+.syntax unified
+ thumb_func_end sub_800DAB8
+.else
thumb_func_start sub_800DAB8
sub_800DAB8: @ 800DAB8
push {lr}
@@ -820,6 +891,7 @@ _0800DAEC: .4byte gUnknown_08D00524
_0800DAF0: .4byte 0x0600c000
_0800DAF4: .4byte gUnknown_08D004E0
thumb_func_end sub_800DAB8
+.endif
thumb_func_start sub_800DAF8
sub_800DAF8: @ 800DAF8
diff --git a/asm/battle_9.s b/asm/battle_9.s
index 9dbb7c619..3f162df12 100644
--- a/asm/battle_9.s
+++ b/asm/battle_9.s
@@ -1387,6 +1387,176 @@ _08036AFE:
bx r1
thumb_func_end AI_ShouldSwitch
+.if DEBUG
+ thumb_func_start sub_8036B0C
+sub_8036B0C:
+.syntax divided
+ push {r4, r5, r6, lr}
+ ldr r5, ._205 @ gBattleTypeFlags
+ ldrh r1, [r5]
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._197 @cond_branch
+ b ._216
+._197:
+ bl AI_ShouldSwitch
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._199 @cond_branch
+ b ._200
+._199:
+ ldr r4, ._205 + 4 @ 0x2000000
+ ldr r0, ._205 + 8 @ gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x19
+ ldr r1, ._205 + 12 @ 0x160c8
+ add r0, r0, r1
+ add r0, r0, r4
+ ldrb r0, [r0]
+ cmp r0, #0x6
+ bne ._201 @cond_branch
+ bl sub_8036CD4
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x6
+ bne ._211 @cond_branch
+ ldrh r1, [r5]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._203 @cond_branch
+ mov r0, #0x1
+ bl GetBankByIdentity
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r6, r5, #0
+ b ._204
+._206:
+ .align 2, 0
+._205:
+ .word gBattleTypeFlags
+ .word 0x2000000
+ .word gActiveBank
+ .word 0x160c8
+._203:
+ mov r0, #0x1
+ bl GetBankByIdentity
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ mov r0, #0x3
+ bl GetBankByIdentity
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+._204:
+ mov r4, #0x0
+._212:
+ mov r0, #0x64
+ mul r0, r0, r4
+ ldr r1, ._214 @ gEnemyParty
+ add r0, r0, r1
+ mov r1, #0x39
+ bl GetMonData
+ cmp r0, #0
+ beq ._210 @cond_branch
+ ldr r1, ._214 + 4 @ gBattlePartyID
+ lsl r0, r6, #0x1
+ add r0, r0, r1
+ ldrh r0, [r0]
+ cmp r4, r0
+ beq ._210 @cond_branch
+ lsl r0, r5, #0x1
+ add r0, r0, r1
+ ldrh r0, [r0]
+ cmp r4, r0
+ beq ._210 @cond_branch
+ ldr r1, ._214 + 8 @ 0x2000000
+ ldr r2, ._214 + 12 @ 0x16068
+ add r0, r6, r2
+ add r0, r0, r1
+ ldrb r0, [r0]
+ cmp r4, r0
+ beq ._210 @cond_branch
+ add r0, r5, r2
+ add r0, r0, r1
+ ldrb r0, [r0]
+ cmp r4, r0
+ bne ._211 @cond_branch
+._210:
+ add r4, r4, #0x1
+ cmp r4, #0x5
+ ble ._212 @cond_branch
+._211:
+ ldr r0, ._214 + 16 @ gActiveBank
+ ldrb r0, [r0]
+ bl GetBankIdentity
+ ldr r1, ._214 + 8 @ 0x2000000
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x19
+ ldr r3, ._214 + 20 @ 0x160c8
+ add r0, r0, r3
+ add r0, r0, r1
+ strb r4, [r0]
+._201:
+ ldr r4, ._214 + 16 @ gActiveBank
+ ldrb r0, [r4]
+ bl GetBankIdentity
+ ldr r2, ._214 + 8 @ 0x2000000
+ ldrb r1, [r4]
+ ldr r3, ._214 + 12 @ 0x16068
+ add r1, r1, r3
+ add r1, r1, r2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x19
+ add r3, r3, #0x60
+ add r0, r0, r3
+ add r0, r0, r2
+ ldrb r0, [r0]
+ strb r0, [r1]
+ b ._217
+._215:
+ .align 2, 0
+._214:
+ .word gEnemyParty
+ .word gBattlePartyID
+ .word 0x2000000
+ .word 0x16068
+ .word gActiveBank
+ .word 0x160c8
+._200:
+ ldr r0, ._218 @ gUnknown_02023A14
+ ldrb r1, [r0]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._216 @cond_branch
+ bl AI_ShouldUseItem
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._217 @cond_branch
+._216:
+ ldr r0, ._218 + 4 @ gActiveBank
+ ldrb r0, [r0]
+ mov r2, #0x1
+ eor r2, r2, r0
+ lsl r2, r2, #0x8
+ mov r0, #0x1
+ mov r1, #0x0
+ bl Emitcmd33
+._217:
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._219:
+ .align 2, 0
+._218:
+ .word gUnknown_02023A14+0x50
+ .word gActiveBank
+.syntax unified
+ thumb_func_end sub_8036B0C
+.else
thumb_func_start sub_8036B0C
sub_8036B0C: @ 8036B0C
push {r4-r6,lr}
@@ -1540,6 +1710,7 @@ _08036C40:
.align 2, 0
_08036C48: .4byte gActiveBank
thumb_func_end sub_8036B0C
+.endif
thumb_func_start sub_8036C4C
sub_8036C4C: @ 8036C4C
diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s
index 03ffc0eda..d748a78f1 100644
--- a/asm/battle_anim_812C144.s
+++ b/asm/battle_anim_812C144.s
@@ -128,7 +128,7 @@ sub_812C220: @ 812C220
adds r4, r0, 0
movs r0, 0x5A
strh r0, [r4, 0x2E]
- ldr r0, _0812C258 @ =sub_80782D8
+ ldr r0, _0812C258 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
movs r0, 0x7
strh r0, [r4, 0x30]
@@ -151,7 +151,7 @@ sub_812C220: @ 812C220
pop {r0}
bx r0
.align 2, 0
-_0812C258: .4byte sub_80782D8
+_0812C258: .4byte WaitAnimForDuration
_0812C25C: .4byte sub_812C268
_0812C260: .4byte REG_BLDCNT
_0812C264: .4byte REG_BLDALPHA
@@ -234,7 +234,7 @@ sub_812C2BC: @ 812C2BC
subs r1, r6
lsls r1, 16
asrs r1, 16
- bl sub_80790F0
+ bl ArcTan2Neg
lsls r0, 16
movs r1, 0xC0
lsls r1, 23
@@ -262,7 +262,7 @@ _0812C31A:
strh r0, [r5, 0x2E]
strh r7, [r5, 0x32]
strh r6, [r5, 0x36]
- ldr r0, _0812C350 @ =sub_8078B34
+ ldr r0, _0812C350 @ =StartTranslateAnimSpriteByDeltas
str r0, [r5, 0x1C]
ldr r1, _0812C354 @ =DestroyAnimSprite
adds r0, r5, 0
@@ -274,7 +274,7 @@ _0812C31A:
.align 2, 0
_0812C348: .4byte gAnimBankTarget
_0812C34C: .4byte gBattleAnimArgs
-_0812C350: .4byte sub_8078B34
+_0812C350: .4byte StartTranslateAnimSpriteByDeltas
_0812C354: .4byte DestroyAnimSprite
thumb_func_end sub_812C2BC
@@ -795,7 +795,7 @@ sub_812C720: @ 812C720
sub sp, 0x4
adds r4, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r0, _0812C784 @ =gAnimBankTarget
ldrb r0, [r0]
mov r5, sp
@@ -803,7 +803,7 @@ sub_812C720: @ 812C720
movs r1, 0
mov r2, sp
adds r3, r5, 0
- bl sub_807A3FC
+ bl SetAverageBattlerPositions
ldr r0, _0812C788 @ =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
@@ -830,7 +830,7 @@ _0812C754:
ldr r0, _0812C790 @ =0x0000ffce
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_80786EC
+ bl InitAnimSpriteTranslationOverDuration
ldr r0, _0812C794 @ =sub_812C798
str r0, [r4, 0x1C]
add sp, 0x4
@@ -849,7 +849,7 @@ _0812C794: .4byte sub_812C798
sub_812C798: @ 812C798
push {r4,lr}
adds r4, r0, 0
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
lsls r0, 24
cmp r0, 0
beq _0812C7BA
@@ -857,7 +857,7 @@ sub_812C798: @ 812C798
movs r0, 0x1E
strh r0, [r4, 0x2E]
strh r1, [r4, 0x30]
- ldr r0, _0812C7C0 @ =sub_80782D8
+ ldr r0, _0812C7C0 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _0812C7C4 @ =sub_812C7C8
adds r0, r4, 0
@@ -867,7 +867,7 @@ _0812C7BA:
pop {r0}
bx r0
.align 2, 0
-_0812C7C0: .4byte sub_80782D8
+_0812C7C0: .4byte WaitAnimForDuration
_0812C7C4: .4byte sub_812C7C8
thumb_func_end sub_812C798
@@ -2301,7 +2301,7 @@ sub_812D294: @ 812D294
bne _0812D2A8
adds r0, r5, 0
movs r1, 0
- bl sub_80787B0
+ bl InitAnimSpritePos
_0812D2A8:
ldrh r0, [r5, 0x2E]
adds r0, 0x1
@@ -2376,7 +2376,7 @@ _0812D2F0:
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
- ldr r0, _0812D34C @ =sub_8078B34
+ ldr r0, _0812D34C @ =StartTranslateAnimSpriteByDeltas
str r0, [r5, 0x1C]
_0812D33C:
pop {r4,r5}
@@ -2385,7 +2385,7 @@ _0812D33C:
.align 2, 0
_0812D344: .4byte DestroyAnimSprite
_0812D348: .4byte gAnimBankTarget
-_0812D34C: .4byte sub_8078B34
+_0812D34C: .4byte StartTranslateAnimSpriteByDeltas
thumb_func_end sub_812D294
thumb_func_start sub_812D350
@@ -2915,7 +2915,7 @@ sub_812D724: @ 812D724
_0812D736:
adds r0, r4, 0
movs r1, 0
- bl sub_80787B0
+ bl InitAnimSpritePos
movs r0, 0x90
lsls r0, 4
strh r0, [r4, 0x30]
@@ -3227,7 +3227,7 @@ _0812D9A2:
cmp r0, 0
beq _0812D9F0
ldr r3, _0812D9E4 @ =gSprites
- ldr r4, _0812D9E8 @ =gObjectBankIDs
+ ldr r4, _0812D9E8 @ =gBankSpriteIds
ldr r2, _0812D9D4 @ =gAnimBankAttacker
ldrb r0, [r2]
adds r0, r4
@@ -3248,11 +3248,11 @@ _0812D9D8: .4byte 0x040000d4
_0812D9DC: .4byte 0x84000200
_0812D9E0: .4byte gSharedMem + 0x19348
_0812D9E4: .4byte gSprites
-_0812D9E8: .4byte gObjectBankIDs
+_0812D9E8: .4byte gBankSpriteIds
_0812D9EC: .4byte gSpriteAffineAnimTable_81E7C18
_0812D9F0:
ldr r3, _0812DA34 @ =gSprites
- ldr r4, _0812DA38 @ =gObjectBankIDs
+ ldr r4, _0812DA38 @ =gBankSpriteIds
ldr r2, _0812DA3C @ =gAnimBankAttacker
ldrb r0, [r2]
adds r0, r4
@@ -3288,7 +3288,7 @@ _0812DA2A:
b _0812DAFA
.align 2, 0
_0812DA34: .4byte gSprites
-_0812DA38: .4byte gObjectBankIDs
+_0812DA38: .4byte gBankSpriteIds
_0812DA3C: .4byte gAnimBankAttacker
_0812DA40: .4byte gSpriteAffineAnimTable_81E7BEC
_0812DA44: .4byte gTasks
@@ -3401,7 +3401,7 @@ c3_80DFBE4: @ 812DB18
lsrs r0, 24
ldr r4, _0812DB48 @ =gBattleAnimArgs
ldr r3, _0812DB4C @ =gSprites
- ldr r2, _0812DB50 @ =gObjectBankIDs
+ ldr r2, _0812DB50 @ =gBankSpriteIds
ldr r1, _0812DB54 @ =gAnimBankAttacker
ldrb r1, [r1]
adds r1, r2
@@ -3422,7 +3422,7 @@ c3_80DFBE4: @ 812DB18
.align 2, 0
_0812DB48: .4byte gBattleAnimArgs
_0812DB4C: .4byte gSprites
-_0812DB50: .4byte gObjectBankIDs
+_0812DB50: .4byte gBankSpriteIds
_0812DB54: .4byte gAnimBankAttacker
thumb_func_end c3_80DFBE4
@@ -4626,7 +4626,7 @@ sub_812E4F0: @ 812E4F0
bne _0812E50E
adds r0, r4, 0
movs r1, 0
- bl sub_80787B0
+ bl InitAnimSpritePos
ldrh r0, [r4, 0x2E]
adds r0, 0x1
strh r0, [r4, 0x2E]
@@ -7672,7 +7672,7 @@ sub_812FC68: @ 812FC68
lsls r0, 3
mov r1, r8
adds r4, r0, r1
- ldr r1, _0812FCCC @ =gObjectBankIDs
+ ldr r1, _0812FCCC @ =gBankSpriteIds
ldr r2, _0812FCD0 @ =gAnimBankAttacker
ldrb r0, [r2]
adds r0, r1
@@ -7709,7 +7709,7 @@ _0812FCAC:
b _0812FD4C
.align 2, 0
_0812FCC8: .4byte gTasks
-_0812FCCC: .4byte gObjectBankIDs
+_0812FCCC: .4byte gBankSpriteIds
_0812FCD0: .4byte gAnimBankAttacker
_0812FCD4: .4byte gBattleAnimArgs
_0812FCD8: .4byte 0xffff8000
@@ -8939,7 +8939,7 @@ _081305C6:
adds r0, r1
lsls r0, 2
adds r0, r4
- bl sub_80786EC
+ bl InitAnimSpriteTranslationOverDuration
mov r1, r10
ldrb r0, [r1]
bl GetBankSide
@@ -9023,7 +9023,7 @@ _081306D6:
lsls r0, 2
ldr r1, _08130708 @ =gSprites
adds r0, r1
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
ldrh r0, [r4, 0xC]
adds r0, 0x1
strh r0, [r4, 0xC]
@@ -9042,7 +9042,7 @@ _0813070C:
lsls r0, 2
ldr r1, _0813072C @ =gSprites
adds r0, r1
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
lsls r0, 24
cmp r0, 0
beq _081307AA
@@ -10151,7 +10151,7 @@ sub_8130F5C: @ 8130F5C
bne _08130F80
adds r0, r4, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r0, _08130F7C @ =gAnimBankAttacker
b _08130F82
.align 2, 0
@@ -10356,11 +10356,11 @@ _081310FA:
strh r0, [r4, 0x34]
strh r1, [r4, 0x36]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimSpriteTranslationDeltas
b _081311CA
_08131110:
adds r0, r4, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
lsls r0, 24
cmp r0, 0
beq _081311DE
@@ -10694,7 +10694,7 @@ _08131384:
cmp r0, 0
beq _081313C6
ldr r3, _081313F8 @ =gSprites
- ldr r2, _081313FC @ =gObjectBankIDs
+ ldr r2, _081313FC @ =gBankSpriteIds
ldrb r0, [r4]
adds r0, r2
ldrb r1, [r0]
@@ -10744,7 +10744,7 @@ _081313E8:
.align 2, 0
_081313F4: .4byte gAnimBankAttacker
_081313F8: .4byte gSprites
-_081313FC: .4byte gObjectBankIDs
+_081313FC: .4byte gBankSpriteIds
_08131400: .4byte gSpriteAffineAnimTable_81E7C18
_08131404: .4byte sub_8131408
thumb_func_end sub_81312E4
@@ -12326,7 +12326,7 @@ _08132084: .4byte gAnimBankAttacker
_08132088: .4byte gAnimBankTarget
_0813208C: .4byte gTasks
_08132090:
- ldr r1, _081320CC @ =gObjectBankIDs
+ ldr r1, _081320CC @ =gBankSpriteIds
ldr r0, _081320D0 @ =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
@@ -12357,7 +12357,7 @@ _08132090:
ldrsh r1, [r2, r3]
b _0813215E
.align 2, 0
-_081320CC: .4byte gObjectBankIDs
+_081320CC: .4byte gBankSpriteIds
_081320D0: .4byte gAnimBankAttacker
_081320D4: .4byte gSprites
_081320D8:
@@ -12385,7 +12385,7 @@ _081320EC:
strh r1, [r0, 0x26]
b _08132188
_08132104:
- ldr r1, _08132144 @ =gObjectBankIDs
+ ldr r1, _08132144 @ =gBankSpriteIds
ldr r0, _08132148 @ =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
@@ -12418,7 +12418,7 @@ _08132104:
bgt _08132188
b _08132162
.align 2, 0
-_08132144: .4byte gObjectBankIDs
+_08132144: .4byte gBankSpriteIds
_08132148: .4byte gAnimBankAttacker
_0813214C: .4byte gSprites
_08132150:
@@ -12438,7 +12438,7 @@ _08132162:
strh r0, [r2, 0x26]
b _08132188
_0813216A:
- ldr r1, _08132190 @ =gObjectBankIDs
+ ldr r1, _08132190 @ =gBankSpriteIds
ldr r0, _08132194 @ =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
@@ -12457,7 +12457,7 @@ _08132188:
pop {r0}
bx r0
.align 2, 0
-_08132190: .4byte gObjectBankIDs
+_08132190: .4byte gBankSpriteIds
_08132194: .4byte gAnimBankAttacker
_08132198: .4byte gSprites
thumb_func_end sub_8131FFC
diff --git a/asm/battle_anim_813F0F4.s b/asm/battle_anim_813F0F4.s
index ccb4854af..a2e942ec9 100644
--- a/asm/battle_anim_813F0F4.s
+++ b/asm/battle_anim_813F0F4.s
@@ -818,7 +818,7 @@ sub_813F798: @ 813F798
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r1, _0813F7C4 @ =gObjectBankIDs
+ ldr r1, _0813F7C4 @ =gBankSpriteIds
ldr r0, _0813F7C8 @ =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
@@ -838,7 +838,7 @@ sub_813F798: @ 813F798
beq _0813F7D6
b _0813F838
.align 2, 0
-_0813F7C4: .4byte gObjectBankIDs
+_0813F7C4: .4byte gBankSpriteIds
_0813F7C8: .4byte gAnimBankAttacker
_0813F7CC: .4byte gTasks
_0813F7D0:
@@ -909,7 +909,7 @@ sub_813F844: @ 813F844
sub sp, 0xC
lsls r0, 24
lsrs r5, r0, 24
- ldr r1, _0813F87C @ =gObjectBankIDs
+ ldr r1, _0813F87C @ =gBankSpriteIds
ldr r4, _0813F880 @ =gAnimBankAttacker
ldrb r0, [r4]
adds r1, r0, r1
@@ -929,7 +929,7 @@ sub_813F844: @ 813F844
ldr r1, _0813F888 @ =gPlayerParty
b _0813F89C
.align 2, 0
-_0813F87C: .4byte gObjectBankIDs
+_0813F87C: .4byte gBankSpriteIds
_0813F880: .4byte gAnimBankAttacker
_0813F884: .4byte gBattlePartyID
_0813F888: .4byte gPlayerParty
@@ -1256,7 +1256,7 @@ sub_813FA94: @ 813FA94
ldr r0, _0813FB68 @ =sub_813FD90
str r0, [r4]
ldr r3, _0813FB6C @ =gSharedMem + 0x17840
- ldr r1, _0813FB70 @ =gObjectBankIDs
+ ldr r1, _0813FB70 @ =gBankSpriteIds
mov r2, r8
ldrb r0, [r2]
adds r0, r1
@@ -1299,7 +1299,7 @@ _0813FB60: .4byte gSprites
_0813FB64: .4byte gAnimBankTarget
_0813FB68: .4byte sub_813FD90
_0813FB6C: .4byte gSharedMem + 0x17840
-_0813FB70: .4byte gObjectBankIDs
+_0813FB70: .4byte gBankSpriteIds
_0813FB74: .4byte gTasks
_0813FB78: .4byte sub_813FB7C
thumb_func_end sub_813FA94
@@ -1419,7 +1419,7 @@ _0813FBE0:
str r0, [r4]
movs r0, 0
bl GetBankByIdentity
- ldr r1, _0813FCB0 @ =gObjectBankIDs
+ ldr r1, _0813FCB0 @ =gBankSpriteIds
lsls r0, 24
lsrs r0, 24
adds r0, r1
@@ -1450,7 +1450,7 @@ _0813FCA0: .4byte gBallSpriteTemplates
_0813FCA4: .4byte gSprites
_0813FCA8: .4byte gAnimBankTarget
_0813FCAC: .4byte SpriteCallbackDummy
-_0813FCB0: .4byte gObjectBankIDs
+_0813FCB0: .4byte gBankSpriteIds
_0813FCB4: .4byte gTasks
_0813FCB8: .4byte sub_813FCBC
thumb_func_end sub_813FBB8
@@ -1463,7 +1463,7 @@ sub_813FCBC: @ 813FCBC
ldr r6, _0813FD1C @ =gSprites
movs r0, 0
bl GetBankByIdentity
- ldr r1, _0813FD20 @ =gObjectBankIDs
+ ldr r1, _0813FD20 @ =gBankSpriteIds
lsls r0, 24
lsrs r0, 24
adds r0, r1
@@ -1505,7 +1505,7 @@ _0813FD16:
bx r0
.align 2, 0
_0813FD1C: .4byte gSprites
-_0813FD20: .4byte gObjectBankIDs
+_0813FD20: .4byte gBankSpriteIds
_0813FD24: .4byte gTasks
_0813FD28: .4byte sub_813FD90
_0813FD2C: .4byte sub_813FD34
@@ -1520,7 +1520,7 @@ sub_813FD34: @ 813FD34
ldr r6, _0813FD88 @ =gSprites
movs r0, 0
bl GetBankByIdentity
- ldr r4, _0813FD8C @ =gObjectBankIDs
+ ldr r4, _0813FD8C @ =gBankSpriteIds
lsls r0, 24
lsrs r0, 24
adds r0, r4
@@ -1554,7 +1554,7 @@ _0813FD80:
bx r0
.align 2, 0
_0813FD88: .4byte gSprites
-_0813FD8C: .4byte gObjectBankIDs
+_0813FD8C: .4byte gBankSpriteIds
thumb_func_end sub_813FD34
thumb_func_start sub_813FD90
@@ -1572,7 +1572,7 @@ sub_813FD90: @ 813FD90
ldr r0, _0813FDB8 @ =0x0000ffd8
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_80786EC
+ bl InitAnimSpriteTranslationOverDuration
ldr r0, _0813FDBC @ =sub_813FDC0
str r0, [r4, 0x1C]
pop {r4}
@@ -1588,7 +1588,7 @@ sub_813FDC0: @ 813FDC0
push {r4,r5,lr}
sub sp, 0x4
adds r4, r0, 0
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
lsls r0, 24
cmp r0, 0
beq _0813FE5A
@@ -1688,7 +1688,7 @@ sub_813FE70: @ 813FE70
ldr r0, _0813FEB8 @ =sub_813FEC8
str r0, [r4, 0x1C]
ldr r2, _0813FEBC @ =gSprites
- ldr r1, _0813FEC0 @ =gObjectBankIDs
+ ldr r1, _0813FEC0 @ =gBankSpriteIds
ldr r0, _0813FEC4 @ =gAnimBankTarget
ldrb r0, [r0]
adds r0, r1
@@ -1707,7 +1707,7 @@ _0813FEAC:
_0813FEB4: .4byte TaskDummy
_0813FEB8: .4byte sub_813FEC8
_0813FEBC: .4byte gSprites
-_0813FEC0: .4byte gObjectBankIDs
+_0813FEC0: .4byte gBankSpriteIds
_0813FEC4: .4byte gAnimBankTarget
thumb_func_end sub_813FE70
@@ -1715,7 +1715,7 @@ _0813FEC4: .4byte gAnimBankTarget
sub_813FEC8: @ 813FEC8
push {r4-r7,lr}
adds r7, r0, 0
- ldr r1, _0813FF0C @ =gObjectBankIDs
+ ldr r1, _0813FF0C @ =gBankSpriteIds
ldr r0, _0813FF10 @ =gAnimBankTarget
ldrb r0, [r0]
adds r0, r1
@@ -1748,7 +1748,7 @@ _0813FEFA:
beq _0813FF1E
b _0813FFDC
.align 2, 0
-_0813FF0C: .4byte gObjectBankIDs
+_0813FF0C: .4byte gBankSpriteIds
_0813FF10: .4byte gAnimBankTarget
_0813FF14: .4byte gTasks
_0813FF18:
@@ -2478,7 +2478,7 @@ _08140490:
cmp r1, r0
bne _081404CC
ldr r5, _081404D8 @ =gSprites
- ldr r4, _081404DC @ =gObjectBankIDs
+ ldr r4, _081404DC @ =gBankSpriteIds
ldrb r0, [r7]
adds r0, r4
ldrb r1, [r0]
@@ -2509,7 +2509,7 @@ _081404CC:
.align 2, 0
_081404D4: .4byte 0x0000013b
_081404D8: .4byte gSprites
-_081404DC: .4byte gObjectBankIDs
+_081404DC: .4byte gBankSpriteIds
_081404E0: .4byte sub_81404E4
thumb_func_end sub_8140454
@@ -2697,7 +2697,7 @@ sub_81405F4: @ 81405F4
bl sub_8141314
_08140646:
ldr r6, _081406B4 @ =gSprites
- ldr r5, _081406B8 @ =gObjectBankIDs
+ ldr r5, _081406B8 @ =gBankSpriteIds
ldr r4, _081406B0 @ =gAnimBankTarget
ldrb r0, [r4]
adds r0, r5
@@ -2748,7 +2748,7 @@ _081406A8: .4byte sub_81406BC
_081406AC: .4byte gLastUsedItem
_081406B0: .4byte gAnimBankTarget
_081406B4: .4byte gSprites
-_081406B8: .4byte gObjectBankIDs
+_081406B8: .4byte gBankSpriteIds
thumb_func_end sub_81405F4
thumb_func_start sub_81406BC
@@ -2770,7 +2770,7 @@ sub_81406BC: @ 81406BC
strb r0, [r2]
_081406DA:
ldr r4, _08140708 @ =gSprites
- ldr r3, _0814070C @ =gObjectBankIDs
+ ldr r3, _0814070C @ =gBankSpriteIds
ldr r2, _08140710 @ =gAnimBankTarget
ldrb r0, [r2]
adds r0, r3
@@ -2792,7 +2792,7 @@ _081406DA:
b _08140734
.align 2, 0
_08140708: .4byte gSprites
-_0814070C: .4byte gObjectBankIDs
+_0814070C: .4byte gBankSpriteIds
_08140710: .4byte gAnimBankTarget
_08140714:
ldr r6, _0814079C @ =0xfffffee0
@@ -2822,7 +2822,7 @@ _08140734:
cmp r5, 0
beq _08140796
ldr r4, _081407A0 @ =gSprites
- ldr r3, _081407A4 @ =gObjectBankIDs
+ ldr r3, _081407A4 @ =gBankSpriteIds
ldr r2, _081407A8 @ =gAnimBankTarget
ldrb r0, [r2]
adds r0, r3
@@ -2867,7 +2867,7 @@ _08140796:
.align 2, 0
_0814079C: .4byte 0xfffffee0
_081407A0: .4byte gSprites
-_081407A4: .4byte gObjectBankIDs
+_081407A4: .4byte gBankSpriteIds
_081407A8: .4byte gAnimBankTarget
_081407AC: .4byte gSharedMem + 0x17840
_081407B0: .4byte sub_81405C8
@@ -4581,7 +4581,7 @@ sub_814151C: @ 814151C
lsrs r7, r0, 24
movs r0, 0
mov r8, r0
- ldr r0, _08141550 @ =gObjectBankIDs
+ ldr r0, _08141550 @ =gBankSpriteIds
ldr r3, _08141554 @ =gAnimBankAttacker
ldrb r2, [r3]
adds r0, r2, r0
@@ -4601,7 +4601,7 @@ sub_814151C: @ 814151C
beq _08141562
b _081416B6
.align 2, 0
-_08141550: .4byte gObjectBankIDs
+_08141550: .4byte gBankSpriteIds
_08141554: .4byte gAnimBankAttacker
_08141558: .4byte gTasks
_0814155C:
@@ -4882,7 +4882,7 @@ _08141744:
.align 2, 0
_08141778: .4byte REG_BLDALPHA
_0814177C:
- ldr r1, _081417C0 @ =gObjectBankIDs
+ ldr r1, _081417C0 @ =gBankSpriteIds
ldr r3, _081417C4 @ =gAnimBankAttacker
ldrb r0, [r3]
adds r0, r1
@@ -4916,7 +4916,7 @@ _081417B8:
pop {r0}
bx r0
.align 2, 0
-_081417C0: .4byte gObjectBankIDs
+_081417C0: .4byte gBankSpriteIds
_081417C4: .4byte gAnimBankAttacker
_081417C8: .4byte gSprites
_081417CC: .4byte 0x06010000
@@ -5479,7 +5479,7 @@ sub_8141C30: @ 8141C30
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0
- bl sub_80787B0
+ bl InitAnimSpritePos
movs r0, 0x1E
strh r0, [r4, 0x2E]
movs r0, 0x1
@@ -5508,8 +5508,8 @@ sub_8141C30: @ 8141C30
ldr r0, _08141CA8 @ =0x0000ffe0
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_80786EC
- ldr r1, _08141CAC @ =gObjectBankIDs
+ bl InitAnimSpriteTranslationOverDuration
+ ldr r1, _08141CAC @ =gBankSpriteIds
ldr r0, _08141CB0 @ =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
@@ -5529,7 +5529,7 @@ sub_8141C30: @ 8141C30
.align 2, 0
_08141CA4: .4byte gBattleAnimArgs
_08141CA8: .4byte 0x0000ffe0
-_08141CAC: .4byte gObjectBankIDs
+_08141CAC: .4byte gBankSpriteIds
_08141CB0: .4byte gAnimBankAttacker
_08141CB4: .4byte gSprites
_08141CB8: .4byte sub_8141CBC
@@ -5540,7 +5540,7 @@ sub_8141CBC: @ 8141CBC
push {lr}
adds r3, r0, 0
ldr r2, _08141CE4 @ =gSprites
- ldr r1, _08141CE8 @ =gObjectBankIDs
+ ldr r1, _08141CE8 @ =gBankSpriteIds
ldr r0, _08141CEC @ =gAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
@@ -5560,7 +5560,7 @@ _08141CE0:
bx r0
.align 2, 0
_08141CE4: .4byte gSprites
-_08141CE8: .4byte gObjectBankIDs
+_08141CE8: .4byte gBankSpriteIds
_08141CEC: .4byte gAnimBankAttacker
_08141CF0: .4byte sub_8141CF4
thumb_func_end sub_8141CBC
@@ -5569,7 +5569,7 @@ _08141CF0: .4byte sub_8141CF4
sub_8141CF4: @ 8141CF4
push {r4,lr}
adds r4, r0, 0
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
lsls r0, 24
cmp r0, 0
beq _08141D16
@@ -5596,7 +5596,7 @@ sub_8141D20: @ 8141D20
push {r4,r5,lr}
adds r4, r0, 0
ldr r5, _08141D70 @ =gSprites
- ldr r3, _08141D74 @ =gObjectBankIDs
+ ldr r3, _08141D74 @ =gBankSpriteIds
ldr r2, _08141D78 @ =gAnimBankAttacker
ldrb r0, [r2]
adds r0, r3
@@ -5633,7 +5633,7 @@ _08141D68:
bx r0
.align 2, 0
_08141D70: .4byte gSprites
-_08141D74: .4byte gObjectBankIDs
+_08141D74: .4byte gBankSpriteIds
_08141D78: .4byte gAnimBankAttacker
thumb_func_end sub_8141D20
diff --git a/asm/current.s b/asm/current.s
index 4ef537dc3..fa3fec58a 100644
--- a/asm/current.s
+++ b/asm/current.s
@@ -12,7 +12,7 @@ sub_80D648C: @ 80D648C
push {r4-r6,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r5, _080D6500 @ =gBattleAnimArgs
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x2E]
@@ -34,7 +34,7 @@ sub_80D648C: @ 80D648C
lsrs r0, 24
strh r0, [r4, 0x36]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimSpriteTranslationDeltas
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x38]
ldrh r0, [r5, 0xA]
@@ -74,7 +74,7 @@ _080D6510: .4byte sub_80D6514
sub_80D6514: @ 80D6514
push {r4,lr}
adds r4, r0, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
lsls r0, 24
cmp r0, 0
bne _080D657E
@@ -442,7 +442,7 @@ _080D67F6:
ldr r0, _080D6810 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
- ldr r0, _080D6814 @ =sub_80782D8
+ ldr r0, _080D6814 @ =WaitAnimForDuration
str r0, [r4, 0x1C]
ldr r1, _080D6818 @ =DestroyAnimSprite
adds r0, r4, 0
@@ -452,7 +452,7 @@ _080D67F6:
bx r0
.align 2, 0
_080D6810: .4byte gBattleAnimArgs
-_080D6814: .4byte sub_80782D8
+_080D6814: .4byte WaitAnimForDuration
_080D6818: .4byte DestroyAnimSprite
thumb_func_end sub_80D679C
@@ -998,7 +998,7 @@ sub_80D6BB8: @ 80D6BB8
strh r0, [r4, 0x36]
strh r6, [r4, 0x38]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimSpriteTranslationDeltas
ldr r1, _080D6CB0 @ =sub_80D6D00
adds r0, r4, 0
bl StoreSpriteCallbackInData
@@ -1062,7 +1062,7 @@ _080D6CC6:
sub_80D6CCC: @ 80D6CCC
push {r4,lr}
adds r4, r0, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
lsls r0, 24
cmp r0, 0
beq _080D6CF4
diff --git a/asm/cute_sketch.s b/asm/cute_sketch.s
index 8cb6cdbd8..bc72a6ef5 100644
--- a/asm/cute_sketch.s
+++ b/asm/cute_sketch.s
@@ -5,7 +5,6 @@
.text
-
thumb_func_start sub_80FCB5C
sub_80FCB5C: @ 80FCB5C
push {r4-r7,lr}
diff --git a/asm/dark.s b/asm/dark.s
deleted file mode 100644
index 9f6ad3278..000000000
--- a/asm/dark.s
+++ /dev/null
@@ -1,2013 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- @ dark
-
- thumb_func_start sub_80DFF1C
-sub_80DFF1C: @ 80DFF1C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080DFF50 @ =gBattleAnimArgs
- ldrh r0, [r5]
- ldrh r1, [r4, 0x20]
- adds r0, r1
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- ldrb r1, [r5, 0x4]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x8]
- strh r0, [r4, 0x30]
- ldrh r0, [r5, 0xA]
- strh r0, [r4, 0x32]
- ldr r0, _080DFF54 @ =sub_80DFF58
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DFF50: .4byte gBattleAnimArgs
-_080DFF54: .4byte sub_80DFF58
- thumb_func_end sub_80DFF1C
-
- thumb_func_start sub_80DFF58
-sub_80DFF58: @ 80DFF58
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x36]
- adds r0, r1
- strh r0, [r2, 0x36]
- ldrh r1, [r2, 0x30]
- ldrh r3, [r2, 0x38]
- adds r1, r3
- strh r1, [r2, 0x38]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2, 0x24]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r2, 0x26]
- ldrh r0, [r2, 0x34]
- adds r0, 0x1
- strh r0, [r2, 0x34]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x32
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bne _080DFF8E
- ldr r0, _080DFF94 @ =sub_80DFF98
- str r0, [r2, 0x1C]
-_080DFF8E:
- pop {r0}
- bx r0
- .align 2, 0
-_080DFF94: .4byte sub_80DFF98
- thumb_func_end sub_80DFF58
-
- thumb_func_start sub_80DFF98
-sub_80DFF98: @ 80DFF98
- push {lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x36]
- ldrh r0, [r3, 0x2E]
- subs r1, r0
- strh r1, [r3, 0x36]
- ldrh r0, [r3, 0x38]
- ldrh r2, [r3, 0x30]
- subs r0, r2
- strh r0, [r3, 0x38]
- lsls r1, 16
- asrs r1, 24
- strh r1, [r3, 0x24]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r3, 0x26]
- ldrh r0, [r3, 0x34]
- subs r0, 0x1
- strh r0, [r3, 0x34]
- lsls r0, 16
- cmp r0, 0
- bne _080DFFCA
- adds r0, r3, 0
- bl move_anim_8074EE0
-_080DFFCA:
- pop {r0}
- bx r0
- thumb_func_end sub_80DFF98
-
- thumb_func_start sub_80DFFD0
-sub_80DFFD0: @ 80DFFD0
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r0, _080DFFE4 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r3, r0, 0
- cmp r1, 0
- bne _080DFFEC
- ldr r0, _080DFFE8 @ =gAnimBankAttacker
- b _080DFFEE
- .align 2, 0
-_080DFFE4: .4byte gBattleAnimArgs
-_080DFFE8: .4byte gAnimBankAttacker
-_080DFFEC:
- ldr r0, _080E001C @ =gAnimBankTarget
-_080DFFEE:
- ldrb r5, [r0]
- movs r6, 0x14
- ldrh r2, [r4, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- adds r1, 0x4
- ldr r7, _080E0020 @ =0x000003ff
- adds r0, r7, 0
- ands r1, r0
- ldr r0, _080E0024 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- movs r1, 0x2
- ldrsh r0, [r3, r1]
- cmp r0, 0x1
- beq _080E004C
- cmp r0, 0x1
- bgt _080E0028
- cmp r0, 0
- beq _080E0032
- b _080E00A0
- .align 2, 0
-_080E001C: .4byte gAnimBankTarget
-_080E0020: .4byte 0x000003ff
-_080E0024: .4byte 0xfffffc00
-_080E0028:
- cmp r0, 0x2
- beq _080E0066
- cmp r0, 0x3
- beq _080E007E
- b _080E00A0
-_080E0032:
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_807A100
- subs r0, 0x8
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_807A100
- adds r0, 0x8
- strh r0, [r4, 0x22]
- b _080E00A0
-_080E004C:
- adds r0, r5, 0
- movs r1, 0x5
- bl sub_807A100
- subs r0, 0xE
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_807A100
- adds r0, 0x10
- strh r0, [r4, 0x22]
- b _080E00A0
-_080E0066:
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_807A100
- adds r0, 0x8
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_807A100
- adds r0, 0x8
- b _080E0094
-_080E007E:
- adds r0, r5, 0
- movs r1, 0x4
- bl sub_807A100
- adds r0, 0xE
- strh r0, [r4, 0x20]
- adds r0, r5, 0
- movs r1, 0x2
- bl sub_807A100
- adds r0, 0x10
-_080E0094:
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
- movs r6, 0xEC
-_080E00A0:
- movs r0, 0x20
- strh r0, [r4, 0x2E]
- lsls r0, r6, 24
- asrs r0, 24
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- adds r0, 0xC
- strh r0, [r4, 0x36]
- ldr r0, _080E00C8 @ =0x0000fff4
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_80786EC
- ldr r0, _080E00CC @ =sub_80E00D0
- str r0, [r4, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E00C8: .4byte 0x0000fff4
-_080E00CC: .4byte sub_80E00D0
- thumb_func_end sub_80DFFD0
-
- thumb_func_start sub_80E00D0
-sub_80E00D0: @ 80E00D0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078718
- lsls r0, 24
- cmp r0, 0
- beq _080E00E4
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080E00E4:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E00D0
-
- thumb_func_start sub_80E00EC
-sub_80E00EC: @ 80E00EC
- push {r4-r7,lr}
- sub sp, 0x18
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080E0150 @ =gTasks
- adds r5, r1, r0
- ldr r4, _080E0154 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1F
- movs r6, 0
- strh r0, [r5, 0x16]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_807A100
- subs r0, 0x7
- strh r0, [r5, 0x14]
- ldrh r1, [r5, 0x16]
- strh r1, [r5, 0x12]
- strh r0, [r5, 0x10]
- subs r1, r0
- lsls r1, 8
- strh r1, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- subs r1, 0x20
- strh r1, [r5, 0x24]
- adds r0, 0x20
- strh r0, [r5, 0x26]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080E015C
- ldr r0, _080E0158 @ =0x0000fff4
- b _080E015E
- .align 2, 0
-_080E0150: .4byte gTasks
-_080E0154: .4byte gAnimBankAttacker
-_080E0158: .4byte 0x0000fff4
-_080E015C:
- ldr r0, _080E01A8 @ =0x0000ffc0
-_080E015E:
- strh r0, [r5, 0x18]
- ldr r0, _080E01AC @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xE]
- cmp r0, 0x1
- bne _080E01C4
- add r4, sp, 0xC
- adds r0, r4, 0
- bl sub_8078914
- ldr r0, _080E01B0 @ =gBattle_BG1_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- ldr r1, _080E01B4 @ =REG_BLDCNT
- ldr r2, _080E01B8 @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- ldrb r1, [r4, 0x8]
- lsls r1, 4
- movs r0, 0
- movs r2, 0x20
- bl FillPalette
- ldr r0, _080E01BC @ =REG_BG1VOFS
- str r0, [sp]
- movs r7, 0x2
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E01F4
- ldr r1, _080E01C0 @ =gBattle_BG2_X
- b _080E01EE
- .align 2, 0
-_080E01A8: .4byte 0x0000ffc0
-_080E01AC: .4byte gAnimBankAttacker
-_080E01B0: .4byte gBattle_BG1_Y
-_080E01B4: .4byte REG_BLDCNT
-_080E01B8: .4byte 0x00003f42
-_080E01BC: .4byte REG_BG1VOFS
-_080E01C0: .4byte gBattle_BG2_X
-_080E01C4:
- ldr r0, _080E0278 @ =gBattle_BG2_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- ldr r1, _080E027C @ =REG_BLDCNT
- ldr r2, _080E0280 @ =0x00003f44
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0
- movs r1, 0x90
- movs r2, 0x20
- bl FillPalette
- ldr r0, _080E0284 @ =REG_BG2VOFS
- str r0, [sp]
- movs r7, 0x4
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E01F4
- ldr r1, _080E0288 @ =gBattle_BG1_X
-_080E01EE:
- ldrh r0, [r1]
- adds r0, 0xF0
- strh r0, [r1]
-_080E01F4:
- ldr r0, _080E028C @ =0xa2600001
- str r0, [sp, 0x4]
- mov r2, sp
- movs r1, 0
- movs r0, 0x1
- strb r0, [r2, 0x8]
- mov r0, sp
- strb r1, [r0, 0x9]
- strh r1, [r5, 0x1E]
- movs r0, 0x10
- strh r0, [r5, 0x20]
- strh r1, [r5, 0x8]
- strh r1, [r5, 0xA]
- strh r1, [r5, 0xC]
- movs r0, 0x3
- bl sub_80E08CC
- movs r3, 0
- ldr r4, _080E0290 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r4, r0
-_080E0220:
- lsls r1, r3, 1
- adds r2, r1, r4
- ldrh r0, [r5, 0x1C]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r5, 0x1C]
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x6F
- bls _080E0220
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldr r1, _080E0294 @ =REG_WINOUT
- movs r0, 0x3F
- eors r7, r0
- movs r2, 0xFC
- lsls r2, 6
- adds r0, r2, 0
- orrs r7, r0
- strh r7, [r1]
- subs r1, 0x2
- adds r2, 0x3F
- adds r0, r2, 0
- strh r0, [r1]
- ldr r2, _080E0298 @ =gBattle_WIN0H
- ldrh r0, [r5, 0x24]
- lsls r0, 8
- ldrh r1, [r5, 0x26]
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080E029C @ =gBattle_WIN0V
- movs r0, 0xA0
- strh r0, [r1]
- ldr r0, _080E02A0 @ =sub_80E02A4
- str r0, [r5]
- add sp, 0x18
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0278: .4byte gBattle_BG2_Y
-_080E027C: .4byte REG_BLDCNT
-_080E0280: .4byte 0x00003f44
-_080E0284: .4byte REG_BG2VOFS
-_080E0288: .4byte gBattle_BG1_X
-_080E028C: .4byte 0xa2600001
-_080E0290: .4byte gScanlineEffectRegBuffers
-_080E0294: .4byte REG_WINOUT
-_080E0298: .4byte gBattle_WIN0H
-_080E029C: .4byte gBattle_WIN0V
-_080E02A0: .4byte sub_80E02A4
- thumb_func_end sub_80E00EC
-
- thumb_func_start sub_80E02A4
-sub_80E02A4: @ 80E02A4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080E02C8 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080E02BE
- b _080E03B6
-_080E02BE:
- lsls r0, 2
- ldr r1, _080E02CC @ =_080E02D0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E02C8: .4byte gTasks
-_080E02CC: .4byte _080E02D0
- .align 2, 0
-_080E02D0:
- .4byte _080E02E4
- .4byte _080E0344
- .4byte _080E035E
- .4byte _080E039C
- .4byte _080E03B0
-_080E02E4:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E03B6
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080E0314
- ldrh r1, [r4, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- cmp r0, 0xC
- beq _080E0322
- adds r0, r1, 0x1
- strh r0, [r4, 0x1E]
- b _080E0322
-_080E0314:
- ldrh r1, [r4, 0x20]
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x8
- beq _080E0322
- subs r0, r1, 0x1
- strh r0, [r4, 0x20]
-_080E0322:
- ldr r2, _080E0340 @ =REG_BLDALPHA
- ldrh r0, [r4, 0x20]
- lsls r0, 8
- ldrh r1, [r4, 0x1E]
- orrs r0, r1
- strh r0, [r2]
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0xC
- bne _080E03B6
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x8
- bne _080E03B6
- b _080E03A2
- .align 2, 0
-_080E0340: .4byte REG_BLDALPHA
-_080E0344:
- ldrh r0, [r4, 0x10]
- subs r0, 0x8
- strh r0, [r4, 0x10]
- adds r0, r4, 0
- bl sub_80E079C
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r2, 0x18
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bge _080E03B6
- b _080E03A2
-_080E035E:
- ldrh r0, [r4, 0x10]
- subs r0, 0x8
- strh r0, [r4, 0x10]
- adds r0, r4, 0
- bl sub_80E079C
- ldrh r1, [r4, 0x24]
- adds r1, 0x4
- strh r1, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- subs r2, r0, 0x4
- strh r2, [r4, 0x26]
- lsls r1, 16
- lsls r0, r2, 16
- cmp r1, r0
- blt _080E0380
- strh r2, [r4, 0x24]
-_080E0380:
- ldr r3, _080E0398 @ =gBattle_WIN0H
- ldrh r2, [r4, 0x24]
- lsls r0, r2, 8
- ldrh r1, [r4, 0x26]
- orrs r0, r1
- strh r0, [r3]
- lsls r2, 16
- lsls r1, 16
- cmp r2, r1
- bne _080E03B6
- b _080E03A2
- .align 2, 0
-_080E0398: .4byte gBattle_WIN0H
-_080E039C:
- ldr r1, _080E03AC @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080E03A2:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E03B6
- .align 2, 0
-_080E03AC: .4byte gScanlineEffect
-_080E03B0:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080E03B6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80E02A4
-
- thumb_func_start sub_80E03BC
-sub_80E03BC: @ 80E03BC
- push {r4-r7,lr}
- sub sp, 0x18
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080E03E4 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bls _080E03D8
- b _080E05F2
-_080E03D8:
- lsls r0, 2
- ldr r1, _080E03E8 @ =_080E03EC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E03E4: .4byte gTasks
-_080E03E8: .4byte _080E03EC
- .align 2, 0
-_080E03EC:
- .4byte _080E0400
- .4byte _080E048C
- .4byte _080E04D0
- .4byte _080E053C
- .4byte _080E05A4
-_080E0400:
- bl IsContest
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E043C
- ldr r0, _080E042C @ =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080E0430 @ =gBattle_WIN0V
- strh r1, [r0]
- ldr r0, _080E0434 @ =REG_WININ
- ldr r2, _080E0438 @ =0x00003f3f
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080E05F2
- .align 2, 0
-_080E042C: .4byte gBattle_WIN0H
-_080E0430: .4byte gBattle_WIN0V
-_080E0434: .4byte REG_WININ
-_080E0438: .4byte 0x00003f3f
-_080E043C:
- ldr r0, _080E045C @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0xE]
- cmp r0, 0x1
- bne _080E046C
- ldr r1, _080E0460 @ =REG_BLDCNT
- ldr r2, _080E0464 @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _080E0468 @ =gBattle_BG2_X
- b _080E0476
- .align 2, 0
-_080E045C: .4byte gAnimBankTarget
-_080E0460: .4byte REG_BLDCNT
-_080E0464: .4byte 0x00003f42
-_080E0468: .4byte gBattle_BG2_X
-_080E046C:
- ldr r1, _080E0480 @ =REG_BLDCNT
- ldr r2, _080E0484 @ =0x00003f44
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _080E0488 @ =gBattle_BG1_X
-_080E0476:
- ldrh r0, [r1]
- adds r0, 0xF0
- strh r0, [r1]
- b _080E0590
- .align 2, 0
-_080E0480: .4byte REG_BLDCNT
-_080E0484: .4byte 0x00003f44
-_080E0488: .4byte gBattle_BG1_X
-_080E048C:
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080E04B4
- mov r0, sp
- bl sub_8078914
- ldr r0, _080E04B0 @ =gBattle_BG1_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- mov r0, sp
- ldrb r1, [r0, 0x8]
- lsls r1, 4
- movs r0, 0
- movs r2, 0x20
- bl FillPalette
- b _080E04C4
- .align 2, 0
-_080E04B0: .4byte gBattle_BG1_Y
-_080E04B4:
- ldr r0, _080E04CC @ =gBattle_BG2_Y
- ldrh r0, [r0]
- strh r0, [r5, 0x1C]
- movs r0, 0
- movs r1, 0x90
- movs r2, 0x20
- bl FillPalette
-_080E04C4:
- movs r0, 0x3
- bl sub_80E08CC
- b _080E0590
- .align 2, 0
-_080E04CC: .4byte gBattle_BG2_Y
-_080E04D0:
- ldr r4, _080E051C @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x1F
- movs r6, 0
- strh r0, [r5, 0x16]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_807A100
- subs r0, 0x7
- strh r0, [r5, 0x14]
- ldrh r1, [r5, 0x16]
- subs r1, r0
- lsls r1, 8
- strh r1, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- subs r1, r0, 0x4
- strh r1, [r5, 0x24]
- adds r0, 0x4
- strh r0, [r5, 0x26]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080E0524
- ldr r0, _080E0520 @ =0x0000fff4
- b _080E0526
- .align 2, 0
-_080E051C: .4byte gAnimBankTarget
-_080E0520: .4byte 0x0000fff4
-_080E0524:
- ldr r0, _080E0538 @ =0x0000ffc0
-_080E0526:
- strh r0, [r5, 0x18]
- ldrh r0, [r5, 0x18]
- strh r0, [r5, 0x10]
- strh r0, [r5, 0x12]
- movs r0, 0xC
- strh r0, [r5, 0x1E]
- movs r0, 0x8
- strh r0, [r5, 0x20]
- b _080E0590
- .align 2, 0
-_080E0538: .4byte 0x0000ffc0
-_080E053C:
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- cmp r0, 0x1
- bne _080E054C
- ldr r0, _080E0548 @ =REG_BG1VOFS
- b _080E054E
- .align 2, 0
-_080E0548: .4byte REG_BG1VOFS
-_080E054C:
- ldr r0, _080E0598 @ =REG_BG2VOFS
-_080E054E:
- str r0, [sp, 0xC]
- movs r3, 0
- add r4, sp, 0xC
- ldr r6, _080E059C @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r7, r6, r0
-_080E055C:
- lsls r1, r3, 1
- adds r2, r1, r6
- ldrh r0, [r5, 0x1C]
- adds r0, 0x9F
- subs r0, r3
- strh r0, [r2]
- adds r1, r7
- ldrh r0, [r5, 0x1C]
- adds r0, 0x9F
- subs r0, r3
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x6F
- bls _080E055C
- ldr r1, _080E05A0 @ =0xa2600001
- str r1, [r4, 0x4]
- movs r2, 0
- movs r0, 0x1
- strb r0, [r4, 0x8]
- strb r2, [r4, 0x9]
- ldr r0, [sp, 0xC]
- ldr r2, [r4, 0x8]
- bl ScanlineEffect_SetParams
-_080E0590:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080E05F2
- .align 2, 0
-_080E0598: .4byte REG_BG2VOFS
-_080E059C: .4byte gScanlineEffectRegBuffers
-_080E05A0: .4byte 0xa2600001
-_080E05A4:
- movs r1, 0xE
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- bne _080E05BC
- ldr r1, _080E05B4 @ =REG_WINOUT
- ldr r2, _080E05B8 @ =0x00003f3d
- b _080E05C0
- .align 2, 0
-_080E05B4: .4byte REG_WINOUT
-_080E05B8: .4byte 0x00003f3d
-_080E05BC:
- ldr r1, _080E05FC @ =REG_WINOUT
- ldr r2, _080E0600 @ =0x00003f3b
-_080E05C0:
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _080E0604 @ =REG_WININ
- ldr r2, _080E0608 @ =0x00003f3f
- adds r0, r2, 0
- strh r0, [r1]
- ldr r2, _080E060C @ =gBattle_WIN0H
- ldrh r0, [r5, 0x24]
- lsls r0, 8
- ldrh r1, [r5, 0x26]
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080E0610 @ =gBattle_WIN0V
- movs r0, 0xA0
- strh r0, [r1]
- movs r0, 0
- strh r0, [r5, 0x8]
- strh r0, [r5, 0xA]
- strh r0, [r5, 0xC]
- ldr r1, _080E0614 @ =REG_BLDALPHA
- ldr r2, _080E0618 @ =0x0000080c
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _080E061C @ =sub_80E0620
- str r0, [r5]
-_080E05F2:
- add sp, 0x18
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E05FC: .4byte REG_WINOUT
-_080E0600: .4byte 0x00003f3b
-_080E0604: .4byte REG_WININ
-_080E0608: .4byte 0x00003f3f
-_080E060C: .4byte gBattle_WIN0H
-_080E0610: .4byte gBattle_WIN0V
-_080E0614: .4byte REG_BLDALPHA
-_080E0618: .4byte 0x0000080c
-_080E061C: .4byte sub_80E0620
- thumb_func_end sub_80E03BC
-
- thumb_func_start sub_80E0620
-sub_80E0620: @ 80E0620
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080E0644 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080E063A
- b _080E0784
-_080E063A:
- lsls r0, 2
- ldr r1, _080E0648 @ =_080E064C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E0644: .4byte gTasks
-_080E0648: .4byte _080E064C
- .align 2, 0
-_080E064C:
- .4byte _080E0660
- .4byte _080E068C
- .4byte _080E06F4
- .4byte _080E0754
- .4byte _080E0768
-_080E0660:
- ldrh r0, [r4, 0x12]
- adds r0, 0x8
- strh r0, [r4, 0x12]
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r4, 0x16]
- movs r3, 0x16
- ldrsh r1, [r4, r3]
- cmp r0, r1
- blt _080E0676
- strh r2, [r4, 0x12]
-_080E0676:
- adds r0, r4, 0
- bl sub_80E079C
- movs r0, 0x12
- ldrsh r1, [r4, r0]
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r1, r0
- beq _080E068A
- b _080E0784
-_080E068A:
- b _080E075A
-_080E068C:
- movs r3, 0x26
- ldrsh r0, [r4, r3]
- movs r2, 0x24
- ldrsh r1, [r4, r2]
- subs r0, r1
- cmp r0, 0x3F
- bgt _080E06A8
- ldrh r0, [r4, 0x24]
- subs r0, 0x4
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x26]
- adds r0, 0x4
- strh r0, [r4, 0x26]
- b _080E06AC
-_080E06A8:
- movs r0, 0x1
- strh r0, [r4, 0xA]
-_080E06AC:
- ldr r2, _080E06F0 @ =gBattle_WIN0H
- ldrh r0, [r4, 0x24]
- lsls r0, 8
- ldrh r1, [r4, 0x26]
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0x10]
- adds r0, 0x8
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- ldrh r2, [r4, 0x14]
- movs r3, 0x14
- ldrsh r1, [r4, r3]
- cmp r0, r1
- blt _080E06CE
- strh r2, [r4, 0x10]
-_080E06CE:
- adds r0, r4, 0
- bl sub_80E079C
- movs r0, 0x10
- ldrsh r1, [r4, r0]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080E0784
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- cmp r0, 0
- beq _080E0784
- movs r0, 0
- strh r0, [r4, 0xA]
- b _080E075A
- .align 2, 0
-_080E06F0: .4byte gBattle_WIN0H
-_080E06F4:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080E0784
- movs r0, 0
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080E0724
- ldrh r1, [r4, 0x1E]
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080E0732
- subs r0, r1, 0x1
- strh r0, [r4, 0x1E]
- b _080E0732
-_080E0724:
- ldrh r1, [r4, 0x20]
- movs r3, 0x20
- ldrsh r0, [r4, r3]
- cmp r0, 0xF
- bgt _080E0732
- adds r0, r1, 0x1
- strh r0, [r4, 0x20]
-_080E0732:
- ldr r2, _080E0750 @ =REG_BLDALPHA
- ldrh r0, [r4, 0x20]
- lsls r0, 8
- ldrh r1, [r4, 0x1E]
- orrs r0, r1
- strh r0, [r2]
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080E0784
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x10
- bne _080E0784
- b _080E075A
- .align 2, 0
-_080E0750: .4byte REG_BLDALPHA
-_080E0754:
- ldr r1, _080E0764 @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080E075A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080E0784
- .align 2, 0
-_080E0764: .4byte gScanlineEffect
-_080E0768:
- ldr r0, _080E078C @ =gBattle_WIN0H
- movs r1, 0
- strh r1, [r0]
- ldr r0, _080E0790 @ =gBattle_WIN0V
- strh r1, [r0]
- ldr r0, _080E0794 @ =REG_WININ
- ldr r3, _080E0798 @ =0x00003f3f
- adds r1, r3, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080E0784:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E078C: .4byte gBattle_WIN0H
-_080E0790: .4byte gBattle_WIN0V
-_080E0794: .4byte REG_WININ
-_080E0798: .4byte 0x00003f3f
- thumb_func_end sub_80E0620
-
- thumb_func_start sub_80E079C
-sub_80E079C: @ 80E079C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldrh r0, [r6, 0x12]
- ldrh r4, [r6, 0x10]
- subs r0, r4
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0
- beq _080E0890
- movs r2, 0x22
- ldrsh r0, [r6, r2]
- bl __divsi3
- mov r8, r0
- movs r3, 0x14
- ldrsh r0, [r6, r3]
- lsls r5, r0, 8
- lsls r0, r4, 16
- movs r4, 0
- cmp r0, 0
- ble _080E07FC
- ldr r0, _080E0888 @ =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, _080E088C @ =gScanlineEffect
-_080E07D0:
- lsls r2, r4, 16
- asrs r2, 16
- lsls r3, r2, 1
- ldrb r1, [r7, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r3, r0
- add r3, r12
- adds r1, r2, 0
- subs r1, 0x9F
- ldrh r0, [r6, 0x1C]
- subs r0, r1
- strh r0, [r3]
- adds r2, 0x1
- lsls r2, 16
- lsrs r4, r2, 16
- asrs r2, 16
- movs r1, 0x10
- ldrsh r0, [r6, r1]
- cmp r2, r0
- blt _080E07D0
-_080E07FC:
- ldrh r4, [r6, 0x10]
- lsls r3, r4, 16
- asrs r1, r3, 16
- movs r2, 0x12
- ldrsh r0, [r6, r2]
- cmp r1, r0
- bgt _080E0846
- ldr r0, _080E0888 @ =gScanlineEffectRegBuffers
- mov r12, r0
- ldr r7, _080E088C @ =gScanlineEffect
-_080E0810:
- asrs r4, r3, 16
- cmp r4, 0
- blt _080E0832
- asrs r1, r5, 8
- subs r1, r4
- lsls r3, r4, 1
- ldrb r2, [r7, 0x14]
- lsls r0, r2, 4
- subs r0, r2
- lsls r0, 7
- adds r3, r0
- add r3, r12
- lsls r1, 16
- asrs r1, 16
- ldrh r2, [r6, 0x1C]
- adds r1, r2
- strh r1, [r3]
-_080E0832:
- add r5, r8
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r3, r4, 16
- asrs r1, r3, 16
- movs r2, 0x12
- ldrsh r0, [r6, r2]
- cmp r1, r0
- ble _080E0810
-_080E0846:
- movs r3, 0x1C
- ldrsh r0, [r6, r3]
- adds r0, 0x9F
- lsls r2, r4, 16
- asrs r1, r2, 16
- subs r5, r0, r1
- movs r3, 0x16
- ldrsh r0, [r6, r3]
- cmp r1, r0
- bge _080E08BE
- ldr r7, _080E0888 @ =gScanlineEffectRegBuffers
- ldr r4, _080E088C @ =gScanlineEffect
-_080E085E:
- asrs r3, r2, 16
- cmp r3, 0
- blt _080E0876
- lsls r2, r3, 1
- ldrb r1, [r4, 0x14]
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 7
- adds r2, r0
- adds r2, r7
- strh r5, [r2]
- subs r5, 0x1
-_080E0876:
- adds r0, r3, 0x1
- lsls r2, r0, 16
- asrs r1, r2, 16
- movs r3, 0x16
- ldrsh r0, [r6, r3]
- cmp r1, r0
- blt _080E085E
- b _080E08BE
- .align 2, 0
-_080E0888: .4byte gScanlineEffectRegBuffers
-_080E088C: .4byte gScanlineEffect
-_080E0890:
- movs r1, 0x1C
- ldrsh r0, [r6, r1]
- adds r5, r0, 0
- adds r5, 0x9F
- movs r4, 0
- ldr r3, _080E08C8 @ =gScanlineEffectRegBuffers
- movs r2, 0xF0
- lsls r2, 3
- adds r6, r3, r2
-_080E08A2:
- lsls r0, r4, 16
- asrs r0, 16
- lsls r2, r0, 1
- adds r1, r2, r3
- strh r5, [r1]
- adds r2, r6
- strh r5, [r2]
- subs r5, 0x1
- adds r0, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x6F
- ble _080E08A2
-_080E08BE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E08C8: .4byte gScanlineEffectRegBuffers
- thumb_func_end sub_80E079C
-
- thumb_func_start sub_80E08CC
-sub_80E08CC: @ 80E08CC
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0
- ldr r7, _080E0914 @ =gSprites
- movs r1, 0x3
- ands r0, r1
- lsls r5, r0, 2
- movs r0, 0xD
- negs r0, r0
- adds r6, r0, 0
-_080E08E2:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080E0902
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r0, [r1, 0x5]
- ands r0, r6
- orrs r0, r5
- strb r0, [r1, 0x5]
-_080E0902:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _080E08E2
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0914: .4byte gSprites
- thumb_func_end sub_80E08CC
-
- thumb_func_start sub_80E0918
-sub_80E0918: @ 80E0918
- 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
- ldr r6, _080E09B8 @ =gAnimBankAttacker
- ldrb r0, [r6]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- eors r0, r1
- negs r1, r0
- orrs r1, r0
- lsrs r4, r1, 31
- ldrb r0, [r6]
- adds r1, r4, 0
- bl sub_8076034
- ldr r0, _080E09BC @ =gSprites
- mov r9, r0
- ldr r0, _080E09C0 @ =gObjectBankIDs
- mov r8, r0
- ldrb r0, [r6]
- add r0, r8
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r9
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r7, 0x5
- negs r7, r7
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r6]
- movs r5, 0x2
- eors r0, r5
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080E09A2
- ldrb r0, [r6]
- eors r0, r5
- movs r1, 0x1
- eors r4, r1
- adds r1, r4, 0
- bl sub_8076034
- ldrb r0, [r6]
- eors r0, r5
- add r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r9
- adds r0, 0x3E
- ldrb r2, [r0]
- adds r1, r7, 0
- ands r1, r2
- strb r1, [r0]
-_080E09A2:
- mov r0, r10
- bl DestroyAnimVisualTask
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E09B8: .4byte gAnimBankAttacker
-_080E09BC: .4byte gSprites
-_080E09C0: .4byte gObjectBankIDs
- thumb_func_end sub_80E0918
-
- thumb_func_start sub_80E09C4
-sub_80E09C4: @ 80E09C4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _080E0A0C @ =gAnimBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- eors r0, r1
- negs r1, r0
- orrs r1, r0
- lsrs r5, r1, 31
- adds r0, r5, 0
- bl sub_8076464
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080E0A00
- movs r0, 0x1
- eors r5, r0
- adds r0, r5, 0
- bl sub_8076464
-_080E0A00:
- adds r0, r6, 0
- bl DestroyAnimVisualTask
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0A0C: .4byte gAnimBankAttacker
- thumb_func_end sub_80E09C4
-
- thumb_func_start sub_80E0A10
-sub_80E0A10: @ 80E0A10
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _080E0A40 @ =gBattleAnimArgs
- ldrh r0, [r1]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- ldrh r0, [r1, 0x2]
- ldrh r2, [r4, 0x22]
- adds r0, r2
- strh r0, [r4, 0x22]
- ldrb r1, [r1, 0x4]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, _080E0A44 @ =sub_8078600
- str r0, [r4, 0x1C]
- ldr r1, _080E0A48 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0A40: .4byte gBattleAnimArgs
-_080E0A44: .4byte sub_8078600
-_080E0A48: .4byte DestroyAnimSprite
- thumb_func_end sub_80E0A10
-
- thumb_func_start sub_80E0A4C
-sub_80E0A4C: @ 80E0A4C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r7, 0
- ldr r0, _080E0B50 @ =gBattle_WIN0H
- strh r7, [r0]
- ldr r0, _080E0B54 @ =gBattle_WIN0V
- strh r7, [r0]
- ldr r1, _080E0B58 @ =REG_WININ
- ldr r2, _080E0B5C @ =0x00003f3f
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r3, _080E0B60 @ =0x00003f3d
- adds r0, r3, 0
- strh r0, [r1]
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _080E0B64 @ =REG_BLDCNT
- ldr r2, _080E0B68 @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r3, _080E0B6C @ =0x00000c08
- adds r0, r3, 0
- strh r0, [r1]
- ldr r5, _080E0B70 @ =REG_BG1CNT
- ldrb r1, [r5]
- movs r0, 0x4
- negs r0, r0
- mov r8, r0
- ands r0, r1
- strb r0, [r5]
- ldrb r1, [r5, 0x1]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r5, 0x1]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E0AC4
- ldrb r0, [r5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r5]
-_080E0AC4:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080E0B40
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E0B40
- ldr r4, _080E0B74 @ =gAnimBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _080E0AF4
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- cmp r0, 0
- bne _080E0B40
-_080E0AF4:
- ldrb r0, [r4]
- movs r6, 0x2
- eors r0, r6
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080E0B40
- ldr r3, _080E0B78 @ =gSprites
- ldr r1, _080E0B7C @ =gObjectBankIDs
- ldrb r0, [r4]
- eors r0, r6
- adds r0, r1
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- subs r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldrb r1, [r5]
- mov r0, r8
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r5]
- movs r7, 0x1
-_080E0B40:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080E0B84
- ldr r0, _080E0B80 @ =gSharedMem + 0x19348
- ldrh r5, [r0]
- b _080E0BCC
- .align 2, 0
-_080E0B50: .4byte gBattle_WIN0H
-_080E0B54: .4byte gBattle_WIN0V
-_080E0B58: .4byte REG_WININ
-_080E0B5C: .4byte 0x00003f3f
-_080E0B60: .4byte 0x00003f3d
-_080E0B64: .4byte REG_BLDCNT
-_080E0B68: .4byte 0x00003f42
-_080E0B6C: .4byte 0x00000c08
-_080E0B70: .4byte REG_BG1CNT
-_080E0B74: .4byte gAnimBankAttacker
-_080E0B78: .4byte gSprites
-_080E0B7C: .4byte gObjectBankIDs
-_080E0B80: .4byte gSharedMem + 0x19348
-_080E0B84:
- ldr r4, _080E0BA4 @ =gAnimBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080E0BB0
- ldr r1, _080E0BA8 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E0BAC @ =gEnemyParty
- b _080E0BC0
- .align 2, 0
-_080E0BA4: .4byte gAnimBankAttacker
-_080E0BA8: .4byte gBattlePartyID
-_080E0BAC: .4byte gEnemyParty
-_080E0BB0:
- ldr r1, _080E0C58 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080E0C5C @ =gPlayerParty
-_080E0BC0:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
-_080E0BCC:
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080E0C60 @ =gAnimBankAttacker
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_807A4A0
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, sp
- bl sub_8078914
- ldr r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0xC]
- ldr r2, _080E0C64 @ =0x040000d4
- add r0, sp, 0xC
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r0, _080E0C68 @ =0x85000400
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r0, _080E0C6C @ =gUnknown_08D1D574
- bl LZDecompressVram
- ldr r0, _080E0C70 @ =gUnknown_08D1D410
- ldr r1, [sp]
- bl LZDecompressVram
- ldr r0, _080E0C74 @ =gUnknown_08D1D54C
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r2, _080E0C78 @ =gBattle_BG1_X
- ldr r0, _080E0C7C @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r1, 0x20]
- negs r0, r0
- adds r0, 0x60
- strh r0, [r2]
- ldr r2, _080E0C80 @ =gBattle_BG1_Y
- ldrh r0, [r1, 0x22]
- negs r0, r0
- adds r0, 0x20
- strh r0, [r2]
- ldrb r0, [r1, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- adds r1, r0, 0
- ldr r2, _080E0C84 @ =gBattleAnimArgs
- movs r3, 0x2
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _080E0C88
- adds r0, r1, 0
- movs r1, 0
- bl sub_8079108
- b _080E0C94
- .align 2, 0
-_080E0C58: .4byte gBattlePartyID
-_080E0C5C: .4byte gPlayerParty
-_080E0C60: .4byte gAnimBankAttacker
-_080E0C64: .4byte 0x040000d4
-_080E0C68: .4byte 0x85000400
-_080E0C6C: .4byte gUnknown_08D1D574
-_080E0C70: .4byte gUnknown_08D1D410
-_080E0C74: .4byte gUnknown_08D1D54C
-_080E0C78: .4byte gBattle_BG1_X
-_080E0C7C: .4byte gSprites
-_080E0C80: .4byte gBattle_BG1_Y
-_080E0C84: .4byte gBattleAnimArgs
-_080E0C88:
- lsls r0, r1, 4
- ldrh r3, [r2, 0x4]
- movs r1, 0x10
- movs r2, 0xB
- bl BlendPalette
-_080E0C94:
- ldr r1, _080E0CC4 @ =gTasks
- mov r2, r9
- lsls r0, r2, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- ldr r2, _080E0CC8 @ =gBattleAnimArgs
- ldrh r1, [r2]
- strh r1, [r0, 0xA]
- ldrh r1, [r2, 0x2]
- strh r1, [r0, 0xC]
- ldrh r1, [r2, 0x4]
- strh r1, [r0, 0xE]
- strh r7, [r0, 0x14]
- ldr r1, _080E0CCC @ =sub_80E0CD0
- str r1, [r0]
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0CC4: .4byte gTasks
-_080E0CC8: .4byte gBattleAnimArgs
-_080E0CCC: .4byte sub_80E0CD0
- thumb_func_end sub_80E0A4C
-
- thumb_func_start sub_80E0CD0
-sub_80E0CD0: @ 80E0CD0
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080E0DF0 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r4, r0, r1
- ldrh r0, [r4, 0x1C]
- adds r0, 0x4
- movs r5, 0
- strh r0, [r4, 0x1C]
- ldr r2, _080E0DF4 @ =gBattle_BG1_X
- ldrh r3, [r2]
- subs r1, r3, 0x4
- strh r1, [r2]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x80
- bne _080E0DE8
- strh r5, [r4, 0x1C]
- adds r0, r3, 0
- adds r0, 0x7C
- strh r0, [r2]
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080E0DE8
- movs r0, 0
- bl sub_8076464
- ldr r0, _080E0DF8 @ =gBattle_WIN0H
- strh r5, [r0]
- ldr r0, _080E0DFC @ =gBattle_WIN0V
- strh r5, [r0]
- ldr r0, _080E0E00 @ =REG_WININ
- ldr r2, _080E0E04 @ =0x00003f3f
- adds r1, r2, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080E0D40
- ldr r2, _080E0E08 @ =REG_BG1CNT
- ldrb r1, [r2]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080E0D40:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 8
- adds r1, r3, 0
- eors r0, r1
- strh r0, [r2]
- ldr r0, _080E0E0C @ =REG_BLDCNT
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- ldr r6, _080E0E10 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- adds r1, r0, 0
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080E0D84
- adds r0, r1, 0
- movs r1, 0x1
- bl sub_8079108
-_080E0D84:
- movs r3, 0x8
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- mov r0, sp
- bl sub_8078914
- ldr r2, [sp, 0x4]
- str r5, [sp, 0xC]
- ldr r1, _080E0E14 @ =0x040000d4
- add r0, sp, 0xC
- str r0, [r1]
- str r2, [r1, 0x4]
- ldr r0, _080E0E18 @ =0x85000200
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080E0DE2
- ldr r2, _080E0E1C @ =gObjectBankIDs
- ldr r0, _080E0E20 @ =gAnimBankAttacker
- ldrb r1, [r0]
- movs r0, 0x2
- eors r0, r1
- adds r0, r2
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldrb r3, [r2, 0x5]
- lsls r1, r3, 28
- lsrs r1, 30
- adds r1, 0x1
- movs r0, 0x3
- ands r1, r0
- lsls r1, 2
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
-_080E0DE2:
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080E0DE8:
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0DF0: .4byte gTasks
-_080E0DF4: .4byte gBattle_BG1_X
-_080E0DF8: .4byte gBattle_WIN0H
-_080E0DFC: .4byte gBattle_WIN0V
-_080E0E00: .4byte REG_WININ
-_080E0E04: .4byte 0x00003f3f
-_080E0E08: .4byte REG_BG1CNT
-_080E0E0C: .4byte REG_BLDCNT
-_080E0E10: .4byte gSprites
-_080E0E14: .4byte 0x040000d4
-_080E0E18: .4byte 0x85000200
-_080E0E1C: .4byte gObjectBankIDs
-_080E0E20: .4byte gAnimBankAttacker
- thumb_func_end sub_80E0CD0
-
- thumb_func_start sub_80E0E24
-sub_80E0E24: @ 80E0E24
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _080E0E44 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r2, r0, 0
- cmp r1, 0x7
- bhi _080E0E88
- lsls r0, r1, 2
- ldr r1, _080E0E48 @ =_080E0E4C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080E0E44: .4byte gBattleAnimArgs
-_080E0E48: .4byte _080E0E4C
- .align 2, 0
-_080E0E4C:
- .4byte _080E0E6C
- .4byte _080E0E6C
- .4byte _080E0E6C
- .4byte _080E0E6C
- .4byte _080E0E78
- .4byte _080E0E7C
- .4byte _080E0E80
- .4byte _080E0E84
-_080E0E6C:
- ldrb r0, [r2]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r2, r0, 24
- b _080E0E8A
-_080E0E78:
- movs r4, 0
- b _080E0E90
-_080E0E7C:
- movs r4, 0x2
- b _080E0E90
-_080E0E80:
- movs r4, 0x1
- b _080E0E90
-_080E0E84:
- movs r4, 0x3
- b _080E0E90
-_080E0E88:
- movs r2, 0xFF
-_080E0E8A:
- movs r0, 0
- cmp r0, 0
- beq _080E0EB6
-_080E0E90:
- adds r0, r4, 0
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080E0EB4
- ldr r0, _080E0EB0 @ =gObjectBankIDs
- adds r0, r4, r0
- ldrb r2, [r0]
- b _080E0EB6
- .align 2, 0
-_080E0EB0: .4byte gObjectBankIDs
-_080E0EB4:
- movs r2, 0xFF
-_080E0EB6:
- cmp r2, 0xFF
- beq _080E0ED2
- ldr r1, _080E0EE0 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- adds r0, 0x10
- ldr r1, _080E0EE4 @ =gBattleAnimArgs
- ldrb r1, [r1, 0x2]
- bl sub_8079108
-_080E0ED2:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080E0EE0: .4byte gSprites
-_080E0EE4: .4byte gBattleAnimArgs
- thumb_func_end sub_80E0E24
-
- thumb_func_start sub_80E0EE8
-sub_80E0EE8: @ 80E0EE8
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080E0F14 @ =gAnimMoveTurn
- ldrb r0, [r2]
- cmp r0, 0x1
- bhi _080E0EFC
- ldr r1, _080E0F18 @ =gBattleAnimArgs
- movs r0, 0
- strh r0, [r1, 0xE]
-_080E0EFC:
- ldrb r0, [r2]
- cmp r0, 0x2
- bne _080E0F08
- ldr r1, _080E0F18 @ =gBattleAnimArgs
- movs r0, 0x1
- strh r0, [r1, 0xE]
-_080E0F08:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080E0F14: .4byte gAnimMoveTurn
-_080E0F18: .4byte gBattleAnimArgs
- thumb_func_end sub_80E0EE8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/fight.s b/asm/fight.s
deleted file mode 100644
index e8e3299af..000000000
--- a/asm/fight.s
+++ /dev/null
@@ -1,1749 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- @ fight
-
- thumb_func_start unc_080B08A0
-unc_080B08A0: @ 80D8FF0
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080D9020 @ =gBattleAnimArgs
- movs r0, 0
- ldrsh r1, [r5, r0]
- adds r0, r4, 0
- bl sub_807867C
- ldrh r0, [r5, 0x2]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x22]
- movs r0, 0xF
- strh r0, [r4, 0x2E]
- ldr r0, _080D9024 @ =sub_80782D8
- str r0, [r4, 0x1C]
- ldr r1, _080D9028 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9020: .4byte gBattleAnimArgs
-_080D9024: .4byte sub_80782D8
-_080D9028: .4byte DestroyAnimSprite
- thumb_func_end unc_080B08A0
-
- thumb_func_start sub_80D902C
-sub_80D902C: @ 80D902C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080D9070 @ =gBattleAnimArgs
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _080D9054
- ldr r0, _080D9074 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D9054
- ldrh r0, [r4, 0x2]
- negs r0, r0
- strh r0, [r4, 0x2]
- ldrh r0, [r4, 0x6]
- negs r0, r0
- strh r0, [r4, 0x6]
-_080D9054:
- ldr r4, _080D9070 @ =gBattleAnimArgs
- ldrb r1, [r4, 0xC]
- adds r0, r5, 0
- bl StartSpriteAnim
- movs r0, 0
- strh r0, [r4, 0xC]
- adds r0, r5, 0
- bl sub_8079534
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9070: .4byte gBattleAnimArgs
-_080D9074: .4byte gAnimBankAttacker
- thumb_func_end sub_80D902C
-
- thumb_func_start sub_80D9078
-sub_80D9078: @ 80D9078
- push {r4,lr}
- adds r4, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080D9094
- ldr r0, _080D90A0 @ =gBattleAnimArgs
- ldrh r1, [r0, 0x2]
- negs r1, r1
- strh r1, [r0, 0x2]
- ldrh r1, [r0, 0x6]
- negs r1, r1
- strh r1, [r0, 0x6]
-_080D9094:
- adds r0, r4, 0
- bl sub_80D902C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D90A0: .4byte gBattleAnimArgs
- thumb_func_end sub_80D9078
-
- thumb_func_start sub_80D90A4
-sub_80D90A4: @ 80D90A4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080D90C4 @ =gBattleAnimArgs
- ldrb r1, [r4, 0x8]
- bl StartSpriteAnim
- movs r1, 0x6
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080D90C8
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_80787B0
- b _080D90D0
- .align 2, 0
-_080D90C4: .4byte gBattleAnimArgs
-_080D90C8:
- adds r0, r5, 0
- movs r1, 0x1
- bl sub_8078764
-_080D90D0:
- ldr r0, _080D90E8 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0x2E]
- ldr r0, _080D90EC @ =sub_80782D8
- str r0, [r5, 0x1C]
- ldr r1, _080D90F0 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D90E8: .4byte gBattleAnimArgs
-_080D90EC: .4byte sub_80782D8
-_080D90F0: .4byte DestroyAnimSprite
- thumb_func_end sub_80D90A4
-
- thumb_func_start sub_80D90F4
-sub_80D90F4: @ 80D90F4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- ldr r0, _080D9110 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r0, r2]
- mov r9, r0
- cmp r1, 0
- bne _080D9118
- ldr r0, _080D9114 @ =gAnimBankAttacker
- b _080D911A
- .align 2, 0
-_080D9110: .4byte gBattleAnimArgs
-_080D9114: .4byte gAnimBankAttacker
-_080D9118:
- ldr r0, _080D9260 @ =gAnimBankTarget
-_080D911A:
- ldrb r0, [r0]
- mov r8, r0
- mov r4, r9
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bge _080D9138
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x5
- bl __umodsi3
- strh r0, [r4, 0x4]
-_080D9138:
- ldrb r1, [r4, 0x4]
- adds r0, r5, 0
- bl StartSpriteAnim
- mov r0, r8
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- mov r0, r8
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- mov r0, r8
- movs r1, 0x1
- bl sub_807A100
- lsls r0, 16
- asrs r1, r0, 16
- lsrs r0, 31
- adds r1, r0
- lsls r1, 15
- lsrs r6, r1, 16
- mov r0, r8
- movs r1, 0
- bl sub_807A100
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _080D9182
- adds r0, 0x3
-_080D9182:
- lsls r4, r0, 14
- lsrs r4, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- lsls r1, r6, 16
- asrs r1, 16
- bl __modsi3
- lsls r0, 16
- lsrs r6, r0, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- lsls r4, 16
- asrs r4, 16
- adds r1, r4, 0
- bl __modsi3
- lsls r0, 16
- lsrs r4, r0, 16
- bl Random
- movs r7, 0x1
- adds r1, r7, 0
- ands r1, r0
- cmp r1, 0
- beq _080D91C4
- lsls r0, r6, 16
- negs r0, r0
- lsrs r6, r0, 16
-_080D91C4:
- bl Random
- adds r1, r7, 0
- ands r1, r0
- cmp r1, 0
- beq _080D91D6
- lsls r0, r4, 16
- negs r0, r0
- lsrs r4, r0, 16
-_080D91D6:
- ldr r0, _080D9264 @ =gBanksBySide
- add r0, r8
- ldrb r1, [r0]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- bne _080D91EC
- lsls r0, r4, 16
- ldr r1, _080D9268 @ =0xfff00000
- adds r0, r1
- lsrs r4, r0, 16
-_080D91EC:
- lsls r0, r6, 16
- asrs r0, 16
- ldrh r2, [r5, 0x20]
- adds r0, r2
- strh r0, [r5, 0x20]
- lsls r0, r4, 16
- asrs r0, 16
- ldrh r3, [r5, 0x22]
- adds r0, r3
- strh r0, [r5, 0x22]
- mov r1, r9
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x2E]
- ldr r0, _080D926C @ =gBattleAnimSpriteTemplate_83DB4A8
- movs r2, 0x20
- ldrsh r1, [r5, r2]
- movs r3, 0x22
- ldrsh r2, [r5, r3]
- adds r3, r5, 0
- adds r3, 0x43
- ldrb r3, [r3]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x3C]
- cmp r0, 0x40
- beq _080D9250
- movs r0, 0x3C
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080D9270 @ =gSprites
- adds r0, r4
- movs r1, 0
- bl StartSpriteAffineAnim
- movs r2, 0x3C
- ldrsh r1, [r5, r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, _080D9274 @ =SpriteCallbackDummy
- str r1, [r0]
-_080D9250:
- ldr r0, _080D9278 @ =sub_80D927C
- str r0, [r5, 0x1C]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9260: .4byte gAnimBankTarget
-_080D9264: .4byte gBanksBySide
-_080D9268: .4byte 0xfff00000
-_080D926C: .4byte gBattleAnimSpriteTemplate_83DB4A8
-_080D9270: .4byte gSprites
-_080D9274: .4byte SpriteCallbackDummy
-_080D9278: .4byte sub_80D927C
- thumb_func_end sub_80D90F4
-
- thumb_func_start sub_80D927C
-sub_80D927C: @ 80D927C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _080D92C4
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- cmp r0, 0x40
- beq _080D92B8
- ldr r4, _080D92C0 @ =gSprites
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- movs r0, 0x3C
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
-_080D92B8:
- adds r0, r5, 0
- bl DestroyAnimSprite
- b _080D92C8
- .align 2, 0
-_080D92C0: .4byte gSprites
-_080D92C4:
- subs r0, r1, 0x1
- strh r0, [r5, 0x2E]
-_080D92C8:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80D927C
-
- thumb_func_start sub_80D92D0
-sub_80D92D0: @ 80D92D0
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8078764
- movs r0, 0x1E
- strh r0, [r4, 0x2E]
- ldr r0, _080D92F0 @ =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080D92F4
- ldrh r0, [r4, 0x20]
- subs r0, 0x14
- strh r0, [r4, 0x32]
- b _080D9306
- .align 2, 0
-_080D92F0: .4byte gBattleAnimArgs
-_080D92F4:
- ldrh r0, [r4, 0x20]
- adds r0, 0x14
- strh r0, [r4, 0x32]
- adds r2, r4, 0
- adds r2, 0x3F
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_080D9306:
- ldrh r0, [r4, 0x22]
- subs r0, 0x14
- strh r0, [r4, 0x36]
- ldr r0, _080D9320 @ =sub_8078B34
- str r0, [r4, 0x1C]
- ldr r1, _080D9324 @ =sub_80D9328
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9320: .4byte sub_8078B34
-_080D9324: .4byte sub_80D9328
- thumb_func_end sub_80D92D0
-
- thumb_func_start sub_80D9328
-sub_80D9328: @ 80D9328
- push {r4-r6,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x38]
- adds r0, 0x1
- movs r6, 0
- strh r0, [r5, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB
- bne _080D9368
- ldrh r2, [r5, 0x20]
- ldrh r4, [r5, 0x24]
- subs r0, r2, r4
- strh r0, [r5, 0x32]
- ldrh r1, [r5, 0x22]
- ldrh r3, [r5, 0x26]
- subs r0, r1, r3
- strh r0, [r5, 0x36]
- movs r0, 0x8
- strh r0, [r5, 0x2E]
- adds r2, r4
- strh r2, [r5, 0x20]
- adds r1, r3
- strh r1, [r5, 0x22]
- strh r6, [r5, 0x26]
- strh r6, [r5, 0x24]
- ldr r0, _080D9370 @ =sub_8078B34
- str r0, [r5, 0x1C]
- ldr r1, _080D9374 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
-_080D9368:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9370: .4byte sub_8078B34
-_080D9374: .4byte DestroyAnimSprite
- thumb_func_end sub_80D9328
-
- thumb_func_start sub_80D9378
-sub_80D9378: @ 80D9378
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r0, _080D93F4 @ =gAnimBankAttacker
- ldrb r1, [r0]
- movs r0, 0x2
- ldr r2, _080D93F8 @ =gAnimBankTarget
- eors r0, r1
- ldrb r1, [r2]
- cmp r0, r1
- bne _080D93A4
- ldrb r0, [r2]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _080D93A4
- ldr r1, _080D93FC @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r0, [r1, r2]
- negs r0, r0
- strh r0, [r1]
-_080D93A4:
- adds r0, r6, 0
- movs r1, 0x1
- bl sub_8078764
- ldr r0, _080D93F4 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D93C2
- ldr r1, _080D93FC @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- negs r0, r0
- strh r0, [r1, 0x4]
-_080D93C2:
- ldr r4, _080D93FC @ =gBattleAnimArgs
- ldrh r0, [r4, 0x6]
- movs r5, 0
- strh r0, [r6, 0x2E]
- ldrh r0, [r6, 0x20]
- strh r0, [r6, 0x30]
- ldrh r1, [r4, 0x4]
- adds r0, r1
- strh r0, [r6, 0x32]
- ldrh r0, [r6, 0x22]
- strh r0, [r6, 0x34]
- strh r0, [r6, 0x36]
- adds r0, r6, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldrh r0, [r4, 0xA]
- strh r0, [r6, 0x38]
- ldrh r0, [r4, 0x8]
- strh r0, [r6, 0x3A]
- strh r5, [r6, 0x3C]
- ldr r0, _080D9400 @ =sub_80D9404
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D93F4: .4byte gAnimBankAttacker
-_080D93F8: .4byte gAnimBankTarget
-_080D93FC: .4byte gBattleAnimArgs
-_080D9400: .4byte sub_80D9404
- thumb_func_end sub_80D9378
-
- thumb_func_start sub_80D9404
-sub_80D9404: @ 80D9404
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078B5C
- lsls r0, 24
- cmp r0, 0
- bne _080D9430
- ldrh r0, [r4, 0x3C]
- lsls r0, 16
- asrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- ldrh r2, [r4, 0x3C]
- adds r0, r2
- strh r0, [r4, 0x3C]
- b _080D9436
-_080D9430:
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D9436:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D9404
-
- thumb_func_start sub_80D943C
-sub_80D943C: @ 80D943C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8078764
- ldr r5, _080D9468 @ =gBattleAnimArgs
- ldrb r1, [r5, 0x4]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldr r0, _080D946C @ =sub_80782D8
- str r0, [r4, 0x1C]
- ldr r1, _080D9470 @ =sub_80D9474
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9468: .4byte gBattleAnimArgs
-_080D946C: .4byte sub_80782D8
-_080D9470: .4byte sub_80D9474
- thumb_func_end sub_80D943C
-
- thumb_func_start sub_80D9474
-sub_80D9474: @ 80D9474
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl StartSpriteAffineAnim
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x14
- strh r0, [r4, 0x2E]
- ldr r0, _080D94A0 @ =sub_80782D8
- str r0, [r4, 0x1C]
- ldr r1, _080D94A4 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D94A0: .4byte sub_80782D8
-_080D94A4: .4byte DestroyAnimSprite
- thumb_func_end sub_80D9474
-
- thumb_func_start sub_80D94A8
-sub_80D94A8: @ 80D94A8
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x1
- bl sub_8078764
- ldr r0, _080D94C4 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- strh r0, [r4, 0x2E]
- ldr r0, _080D94C8 @ =sub_80D94CC
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D94C4: .4byte gBattleAnimArgs
-_080D94C8: .4byte sub_80D94CC
- thumb_func_end sub_80D94A8
-
- thumb_func_start sub_80D94CC
-sub_80D94CC: @ 80D94CC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r0, [r5, 0x2E]
- subs r0, 0x1
- strh r0, [r5, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080D9510
- movs r0, 0x6
- strh r0, [r5, 0x2E]
- ldr r4, _080D9518 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- ldr r0, _080D951C @ =sub_8078B34
- str r0, [r5, 0x1C]
- ldr r1, _080D9520 @ =sub_80D9524
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
-_080D9510:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9518: .4byte gAnimBankTarget
-_080D951C: .4byte sub_8078B34
-_080D9520: .4byte sub_80D9524
- thumb_func_end sub_80D94CC
-
- thumb_func_start sub_80D9524
-sub_80D9524: @ 80D9524
- push {lr}
- movs r1, 0xF
- strh r1, [r0, 0x2E]
- ldr r1, _080D9538 @ =sub_80782D8
- str r1, [r0, 0x1C]
- ldr r1, _080D953C @ =DestroyAnimSprite
- bl StoreSpriteCallbackInData
- pop {r0}
- bx r0
- .align 2, 0
-_080D9538: .4byte sub_80782D8
-_080D953C: .4byte DestroyAnimSprite
- thumb_func_end sub_80D9524
-
- thumb_func_start sub_80D9540
-sub_80D9540: @ 80D9540
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080D956C
- adds r0, r4, 0
- movs r1, 0x1
- bl sub_8078764
- ldr r1, _080D9568 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080D95C8
- .align 2, 0
-_080D9568: .4byte gBattleAnimArgs
-_080D956C:
- ldrh r0, [r4, 0x30]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r4, 0x24]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x34]
- adds r0, 0x3
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x34]
- cmp r0, 0x64
- ble _080D95BA
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- lsrs r0, r1, 31
- adds r0, r1, r0
- asrs r0, 1
- lsls r0, 1
- subs r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- movs r0, 0x1
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080D95BA:
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- cmp r0, 0x78
- ble _080D95C8
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D95C8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D9540
-
- thumb_func_start sub_80D95D0
-sub_80D95D0: @ 80D95D0
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080D95E4 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080D95EC
- ldr r4, _080D95E8 @ =gAnimBankAttacker
- b _080D95EE
- .align 2, 0
-_080D95E4: .4byte gBattleAnimArgs
-_080D95E8: .4byte gAnimBankAttacker
-_080D95EC:
- ldr r4, _080D9634 @ =gAnimBankTarget
-_080D95EE:
- ldrb r0, [r4]
- movs r1, 0
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r1, _080D9638 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x2]
- ldrh r2, [r5, 0x20]
- adds r0, r2
- movs r2, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r1, 0x4]
- ldrh r3, [r5, 0x22]
- adds r0, r3
- strh r0, [r5, 0x22]
- strh r2, [r5, 0x2E]
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r5, 0x32]
- strh r2, [r5, 0x34]
- ldr r0, _080D963C @ =sub_80D9640
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9634: .4byte gAnimBankTarget
-_080D9638: .4byte gBattleAnimArgs
-_080D963C: .4byte sub_80D9640
- thumb_func_end sub_80D95D0
-
- thumb_func_start sub_80D9640
-sub_80D9640: @ 80D9640
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2E
- ldrsh r2, [r1, r0]
- cmp r2, 0
- beq _080D9652
- cmp r2, 0x1
- beq _080D9676
- b _080D96B0
-_080D9652:
- ldrh r0, [r1, 0x30]
- subs r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- cmp r0, 0
- bne _080D96B0
- movs r2, 0x32
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080D966E
- adds r0, r1, 0
- bl DestroyAnimSprite
- b _080D96B0
-_080D966E:
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- b _080D96B0
-_080D9676:
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080D969E
- movs r0, 0
- strh r0, [r1, 0x30]
- ldrh r0, [r1, 0x34]
- adds r0, 0x1
- strh r0, [r1, 0x34]
- ands r0, r2
- lsls r0, 16
- cmp r0, 0
- beq _080D969A
- movs r0, 0x2
- b _080D969C
-_080D969A:
- ldr r0, _080D96B4 @ =0x0000fffe
-_080D969C:
- strh r0, [r1, 0x24]
-_080D969E:
- ldrh r0, [r1, 0x32]
- subs r0, 0x1
- strh r0, [r1, 0x32]
- lsls r0, 16
- cmp r0, 0
- bne _080D96B0
- adds r0, r1, 0
- bl DestroyAnimSprite
-_080D96B0:
- pop {r0}
- bx r0
- .align 2, 0
-_080D96B4: .4byte 0x0000fffe
- thumb_func_end sub_80D9640
-
- thumb_func_start sub_80D96B8
-sub_80D96B8: @ 80D96B8
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080D96DC @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080D96E4
- ldr r4, _080D96E0 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r2, [r6, 0x4]
- adds r0, r2
- b _080D96F6
- .align 2, 0
-_080D96DC: .4byte gBattleAnimArgs
-_080D96E0: .4byte gAnimBankAttacker
-_080D96E4:
- ldr r4, _080D9740 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r6, 0x4]
- adds r0, r1
-_080D96F6:
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r6, [r6, 0x6]
- adds r0, r6
- strh r0, [r5, 0x22]
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- ldr r3, _080D9744 @ =gBattleAnimArgs
- movs r4, 0x2
- ldrsh r0, [r3, r4]
- lsls r0, 4
- adds r1, r0
- ldr r4, _080D9748 @ =0x000003ff
- adds r0, r4, 0
- ands r1, r0
- ldr r0, _080D974C @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- movs r1, 0
- movs r0, 0
- strh r0, [r5, 0x2E]
- movs r2, 0x2
- ldrsh r0, [r3, r2]
- cmp r0, 0x1
- beq _080D9764
- cmp r0, 0x1
- bgt _080D9750
- cmp r0, 0
- beq _080D975A
- b _080D978A
- .align 2, 0
-_080D9740: .4byte gAnimBankTarget
-_080D9744: .4byte gBattleAnimArgs
-_080D9748: .4byte 0x000003ff
-_080D974C: .4byte 0xfffffc00
-_080D9750:
- cmp r0, 0x2
- beq _080D9774
- cmp r0, 0x3
- beq _080D9784
- b _080D978A
-_080D975A:
- ldr r0, _080D9760 @ =0x0000fffd
- b _080D9784
- .align 2, 0
-_080D9760: .4byte 0x0000fffd
-_080D9764:
- movs r0, 0x3
- strh r0, [r5, 0x3A]
- ldr r0, _080D9770 @ =0x0000fffd
- strh r0, [r5, 0x3C]
- b _080D9792
- .align 2, 0
-_080D9770: .4byte 0x0000fffd
-_080D9774:
- ldr r0, _080D9780 @ =0x0000fffd
- strh r0, [r5, 0x3A]
- movs r0, 0x3
- strh r0, [r5, 0x3C]
- b _080D9792
- .align 2, 0
-_080D9780: .4byte 0x0000fffd
-_080D9784:
- strh r0, [r5, 0x3A]
- strh r0, [r5, 0x3C]
- b _080D9792
-_080D978A:
- adds r0, r5, 0
- bl DestroyAnimSprite
- b _080D9796
-_080D9792:
- ldr r0, _080D979C @ =sub_80D97A0
- str r0, [r5, 0x1C]
-_080D9796:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D979C: .4byte sub_80D97A0
- thumb_func_end sub_80D96B8
-
- thumb_func_start sub_80D97A0
-sub_80D97A0: @ 80D97A0
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x3A]
- ldrh r2, [r1, 0x20]
- adds r0, r2
- strh r0, [r1, 0x20]
- ldrh r0, [r1, 0x3C]
- ldrh r2, [r1, 0x22]
- adds r0, r2
- strh r0, [r1, 0x22]
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x28
- ble _080D97C8
- adds r0, r1, 0
- bl DestroyAnimSprite
-_080D97C8:
- pop {r0}
- bx r0
- thumb_func_end sub_80D97A0
-
- thumb_func_start sub_80D97CC
-sub_80D97CC: @ 80D97CC
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080D9818 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080D9828
- ldr r4, _080D981C @ =gBankAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r0, _080D9820 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl sub_8079ED4
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r5, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- ldr r0, _080D9824 @ =gAnimBankTarget
- b _080D9844
- .align 2, 0
-_080D9818: .4byte gBattleAnimArgs
-_080D981C: .4byte gBankAttacker
-_080D9820: .4byte gAnimBankAttacker
-_080D9824: .4byte gAnimBankTarget
-_080D9828:
- ldr r0, _080D9860 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl sub_8079ED4
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r5, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- ldr r0, _080D9864 @ =gAnimBankAttacker
-_080D9844:
- ldrb r0, [r0]
- strh r0, [r5, 0x3C]
- movs r0, 0
- strh r0, [r5, 0x2E]
- movs r0, 0xC
- strh r0, [r5, 0x30]
- movs r0, 0x8
- strh r0, [r5, 0x32]
- ldr r0, _080D9868 @ =sub_80D986C
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9860: .4byte gAnimBankTarget
-_080D9864: .4byte gAnimBankAttacker
-_080D9868: .4byte sub_80D986C
- thumb_func_end sub_80D97CC
-
- thumb_func_start sub_80D986C
-sub_80D986C: @ 80D986C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB4
- bne _080D98C6
- ldr r1, _080D98CC @ =REG_BLDCNT
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x22]
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x3C]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r1, _080D98D0 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080D98D4 @ =sub_8078BB8
- str r0, [r4, 0x1C]
-_080D98C6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D98CC: .4byte REG_BLDCNT
-_080D98D0: .4byte move_anim_8074EE0
-_080D98D4: .4byte sub_8078BB8
- thumb_func_end sub_80D986C
-
- thumb_func_start sub_80D98D8
-sub_80D98D8: @ 80D98D8
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080D9924 @ =gBattleAnimArgs
- ldrh r0, [r4]
- strh r0, [r5, 0x20]
- movs r2, 0x78
- strh r2, [r5, 0x22]
- ldrh r0, [r4, 0x6]
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- adds r0, 0x36
- adds r1, r5, 0
- adds r1, 0x38
- lsls r2, 8
- bl sub_8079BF4
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0x3A]
- ldrh r2, [r5, 0x4]
- lsls r1, r2, 22
- lsrs r1, 22
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- lsls r0, 2
- adds r1, r0
- ldr r3, _080D9928 @ =0x000003ff
- adds r0, r3, 0
- ands r1, r0
- ldr r0, _080D992C @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r5, 0x4]
- ldr r0, _080D9930 @ =sub_80D9934
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9924: .4byte gBattleAnimArgs
-_080D9928: .4byte 0x000003ff
-_080D992C: .4byte 0xfffffc00
-_080D9930: .4byte sub_80D9934
- thumb_func_end sub_80D98D8
-
- thumb_func_start sub_80D9934
-sub_80D9934: @ 80D9934
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r7, r1]
- cmp r0, 0
- beq _080D9986
- movs r2, 0x36
- ldrsh r0, [r7, r2]
- movs r2, 0x38
- ldrsh r1, [r7, r2]
- bl sub_8079BFC
- adds r4, r0, 0
- movs r1, 0x3A
- ldrsh r0, [r7, r1]
- subs r4, r0
- adds r0, r7, 0
- adds r0, 0x36
- adds r1, r7, 0
- adds r1, 0x38
- adds r2, r4, 0
- bl sub_8079BF4
- asrs r4, 8
- strh r4, [r7, 0x22]
- lsls r4, 16
- asrs r4, 16
- movs r0, 0x8
- negs r0, r0
- cmp r4, r0
- bge _080D997E
- adds r0, r7, 0
- bl DestroyAnimSprite
- b _080D99DC
-_080D997E:
- ldrh r0, [r7, 0x2E]
- subs r0, 0x1
- strh r0, [r7, 0x2E]
- b _080D99DC
-_080D9986:
- ldr r4, _080D99E8 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r2, _080D99EC @ =gAnimBankTarget
- mov r8, r2
- ldrb r0, [r2]
- movs r1, 0x2
- bl GetBankPosition
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- subs r4, r6
- strh r4, [r7, 0x2E]
- lsrs r0, 24
- subs r0, r5
- strh r0, [r7, 0x30]
- ldrh r0, [r7, 0x20]
- lsls r0, 4
- strh r0, [r7, 0x32]
- ldrh r0, [r7, 0x22]
- lsls r0, 4
- strh r0, [r7, 0x34]
- ldr r0, _080D99F0 @ =sub_80D99F4
- str r0, [r7, 0x1C]
-_080D99DC:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D99E8: .4byte gAnimBankAttacker
-_080D99EC: .4byte gAnimBankTarget
-_080D99F0: .4byte sub_80D99F4
- thumb_func_end sub_80D9934
-
- thumb_func_start sub_80D99F4
-sub_80D99F4: @ 80D99F4
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- ldrh r1, [r2, 0x30]
- ldrh r3, [r2, 0x34]
- adds r1, r3
- strh r1, [r2, 0x34]
- lsls r0, 16
- asrs r0, 20
- strh r0, [r2, 0x20]
- lsls r1, 16
- asrs r3, r1, 20
- strh r3, [r2, 0x22]
- adds r0, 0x8
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 17
- cmp r0, r1
- bhi _080D9A2E
- adds r1, r3, 0
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- blt _080D9A2E
- cmp r1, 0x78
- ble _080D9A34
-_080D9A2E:
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080D9A34:
- pop {r0}
- bx r0
- thumb_func_end sub_80D99F4
-
- thumb_func_start sub_80D9A38
-sub_80D9A38: @ 80D9A38
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080D9A6C @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080D9A7C
- ldr r4, _080D9A70 @ =gBankAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r0, _080D9A74 @ =gAnimBankTarget
- ldrb r4, [r0]
- ldr r0, _080D9A78 @ =gAnimBankAttacker
- b _080D9A82
- .align 2, 0
-_080D9A6C: .4byte gBattleAnimArgs
-_080D9A70: .4byte gBankAttacker
-_080D9A74: .4byte gAnimBankTarget
-_080D9A78: .4byte gAnimBankAttacker
-_080D9A7C:
- ldr r0, _080D9AB4 @ =gAnimBankAttacker
- ldrb r4, [r0]
- ldr r0, _080D9AB8 @ =gAnimBankTarget
-_080D9A82:
- ldrb r0, [r0]
- bl sub_8079ED4
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r5, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080D9ABC
- ldrb r2, [r5, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x8
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x47
- b _080D9AD6
- .align 2, 0
-_080D9AB4: .4byte gAnimBankAttacker
-_080D9AB8: .4byte gAnimBankTarget
-_080D9ABC:
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080D9ADC
- ldrb r2, [r5, 0x3]
- lsls r1, r2, 26
- lsrs r1, 27
- movs r0, 0x18
- orrs r1, r0
- lsls r1, 1
- subs r0, 0x57
-_080D9AD6:
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x3]
-_080D9ADC:
- movs r0, 0x10
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- adds r0, r4, 0
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x22]
- strh r0, [r5, 0x34]
- adds r0, r4, 0
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x36]
- adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
- ldr r1, _080D9B1C @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080D9B20 @ =sub_8078BB8
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9B1C: .4byte DestroyAnimSprite
-_080D9B20: .4byte sub_8078BB8
- thumb_func_end sub_80D9A38
-
- thumb_func_start sub_80D9B24
-sub_80D9B24: @ 80D9B24
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- movs r2, 0x36
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080D9B3A
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D9B3A:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D9B24
-
- thumb_func_start sub_80D9B48
-sub_80D9B48: @ 80D9B48
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, _080D9BC4 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldr r1, _080D9BC8 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x6]
- strh r0, [r5, 0x30]
- ldrh r0, [r1]
- strh r0, [r5, 0x32]
- ldrh r0, [r1, 0x2]
- strh r0, [r5, 0x34]
- ldrh r0, [r1, 0x4]
- strh r0, [r5, 0x36]
- ldr r0, _080D9BCC @ =gAnimMoveTurn
- ldrb r6, [r0]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080D9B92
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_080D9B92:
- movs r0, 0x1
- ands r6, r0
- cmp r6, 0
- beq _080D9BA6
- ldrh r0, [r5, 0x32]
- negs r0, r0
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x30]
- adds r0, 0x1
- strh r0, [r5, 0x30]
-_080D9BA6:
- ldrh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl StartSpriteAnim
- ldrh r0, [r5, 0x32]
- strh r0, [r5, 0x24]
- ldrh r0, [r5, 0x34]
- strh r0, [r5, 0x26]
- ldr r0, _080D9BD0 @ =sub_80D9B24
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9BC4: .4byte gAnimBankTarget
-_080D9BC8: .4byte gBattleAnimArgs
-_080D9BCC: .4byte gAnimMoveTurn
-_080D9BD0: .4byte sub_80D9B24
- thumb_func_end sub_80D9B48
-
- thumb_func_start sub_80D9BD4
-sub_80D9BD4: @ 80D9BD4
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080D9BEC @ =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080D9BF0
- adds r0, r4, 0
- movs r1, 0
- bl sub_80787B0
- b _080D9BF8
- .align 2, 0
-_080D9BEC: .4byte gBattleAnimArgs
-_080D9BF0:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8078764
-_080D9BF8:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080D9C0C
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- b _080D9C22
-_080D9C0C:
- ldr r0, _080D9C34 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080D9C22
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_080D9C22:
- ldr r0, _080D9C38 @ =sub_8078600
- str r0, [r4, 0x1C]
- ldr r1, _080D9C3C @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9C34: .4byte gAnimBankAttacker
-_080D9C38: .4byte sub_8078600
-_080D9C3C: .4byte DestroyAnimSprite
- thumb_func_end sub_80D9BD4
-
- thumb_func_start sub_80D9C40
-sub_80D9C40: @ 80D9C40
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080D9C7A
- ldrh r0, [r4, 0x30]
- adds r0, 0x28
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x2
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x28
- ble _080D9C7A
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080D9C7A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80D9C40
-
- thumb_func_start sub_80D9C80
-sub_80D9C80: @ 80D9C80
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080D9CB0 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080D9CB8
- cmp r0, 0x1
- bgt _080D9CD2
- cmp r0, 0
- bne _080D9CD2
- movs r0, 0
- bl sub_80789D4
- ldr r0, _080D9CB4 @ =gBattleAnimArgs
- ldrh r0, [r0]
- strh r0, [r4, 0x18]
- b _080D9CCA
- .align 2, 0
-_080D9CB0: .4byte gTasks
-_080D9CB4: .4byte gBattleAnimArgs
-_080D9CB8:
- ldrh r0, [r4, 0x18]
- subs r0, 0x1
- strh r0, [r4, 0x18]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080D9CDE
-_080D9CCA:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080D9CDE
-_080D9CD2:
- movs r2, 0xA0
- lsls r2, 3
- adds r0, r2, 0
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- strh r0, [r4, 0x1A]
-_080D9CDE:
- movs r2, 0xB0
- lsls r2, 4
- adds r0, r2, 0
- ldrh r1, [r4, 0x1C]
- adds r0, r1
- strh r0, [r4, 0x1C]
- ldr r0, _080D9D0C @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080D9D14
- ldr r1, _080D9D10 @ =gBattle_BG3_X
- ldrh r0, [r4, 0x1A]
- lsls r0, 16
- asrs r0, 24
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- adds r7, r1, 0
- b _080D9D24
- .align 2, 0
-_080D9D0C: .4byte gAnimBankTarget
-_080D9D10: .4byte gBattle_BG3_X
-_080D9D14:
- ldr r2, _080D9D64 @ =gBattle_BG3_X
- ldrh r1, [r4, 0x1A]
- lsls r1, 16
- asrs r1, 24
- ldrh r0, [r2]
- subs r0, r1
- strh r0, [r2]
- adds r7, r2, 0
-_080D9D24:
- ldr r3, _080D9D68 @ =gBattle_BG3_Y
- ldrh r2, [r4, 0x1C]
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r1, [r3]
- adds r0, r1
- strh r0, [r3]
- movs r0, 0xFF
- ldrb r1, [r4, 0x1A]
- movs r5, 0
- strh r1, [r4, 0x1A]
- ands r0, r2
- strh r0, [r4, 0x1C]
- ldr r0, _080D9D6C @ =gBattleAnimArgs
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- bne _080D9D5C
- strh r5, [r7]
- strh r5, [r3]
- movs r0, 0x1
- bl sub_80789D4
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080D9D5C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080D9D64: .4byte gBattle_BG3_X
-_080D9D68: .4byte gBattle_BG3_Y
-_080D9D6C: .4byte gBattleAnimArgs
- thumb_func_end sub_80D9C80
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/flying.s b/asm/flying.s
index ce3fb050b..1862e3218 100644
--- a/asm/flying.s
+++ b/asm/flying.s
@@ -174,7 +174,7 @@ sub_80DA16C: @ 80DA16C
push {r4-r6,lr}
adds r6, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r0, _080DA1D8 @ =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
@@ -211,7 +211,7 @@ _080DA18C:
adds r0, r4
strh r0, [r6, 0x36]
adds r0, r6, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimSpriteTranslationDeltas
ldr r0, _080DA1E4 @ =sub_80785E4
str r0, [r6, 0x1C]
ldr r1, _080DA1E8 @ =sub_80DA1EC
@@ -232,7 +232,7 @@ _080DA1E8: .4byte sub_80DA1EC
sub_80DA1EC: @ 80DA1EC
push {r4,lr}
adds r4, r0, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
lsls r0, 24
cmp r0, 0
beq _080DA200
@@ -331,7 +331,7 @@ _080DA2B0:
adds r3, r5, 0
adds r3, 0x36
movs r1, 0x1
- bl sub_807A3FC
+ bl SetAverageBattlerPositions
_080DA2C2:
ldr r4, _080DA2F4 @ =gBattleAnimArgs
ldrh r0, [r4, 0x4]
@@ -342,7 +342,7 @@ _080DA2C2:
ldrh r3, [r5, 0x36]
adds r0, r3
strh r0, [r5, 0x36]
- ldr r0, _080DA2F8 @ =sub_8078B34
+ ldr r0, _080DA2F8 @ =StartTranslateAnimSpriteByDeltas
str r0, [r5, 0x1C]
ldr r1, _080DA2FC @ =DestroyAnimSprite
adds r0, r5, 0
@@ -356,7 +356,7 @@ _080DA2C2:
.align 2, 0
_080DA2F0: .4byte gAnimBankTarget
_080DA2F4: .4byte gBattleAnimArgs
-_080DA2F8: .4byte sub_8078B34
+_080DA2F8: .4byte StartTranslateAnimSpriteByDeltas
_080DA2FC: .4byte DestroyAnimSprite
thumb_func_end sub_80DA208
@@ -365,7 +365,7 @@ sub_80DA300: @ 80DA300
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r1, _080DA33C @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x2E]
@@ -483,7 +483,7 @@ _080DA3C2:
lsrs r0, 24
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimSpriteTranslationDeltas
ldr r0, _080DA40C @ =sub_80DA410
str r0, [r5, 0x1C]
pop {r4,r5}
@@ -503,7 +503,7 @@ sub_80DA410: @ 80DA410
movs r0, 0x1
strh r0, [r4, 0x2E]
adds r0, r4, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
ldrh r1, [r4, 0x34]
lsrs r0, r1, 8
cmp r0, 0xC8
@@ -1743,7 +1743,7 @@ sub_80DAD30: @ 80DAD30
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
- ldr r0, _080DAD80 @ =sub_807941C
+ ldr r0, _080DAD80 @ =TranslateAnimSpriteToTargetMonLocation
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
@@ -1751,7 +1751,7 @@ sub_80DAD30: @ 80DAD30
.align 2, 0
_080DAD78: .4byte gAnimBankTarget
_080DAD7C: .4byte gAnimBankAttacker
-_080DAD80: .4byte sub_807941C
+_080DAD80: .4byte TranslateAnimSpriteToTargetMonLocation
thumb_func_end sub_80DAD30
thumb_func_start sub_80DAD84
@@ -2086,7 +2086,7 @@ sub_80DB000: @ 80DB000
bne _080DB01C
adds r0, r5, 0
movs r1, 0
- bl sub_80787B0
+ bl InitAnimSpritePos
b _080DB024
.align 2, 0
_080DB018: .4byte gBattleAnimArgs
@@ -2291,7 +2291,7 @@ sub_80DB194: @ 80DB194
_080DB1A6:
adds r0, r4, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
movs r0, 0
bl GetAnimBankSpriteId
ldr r2, _080DB1D4 @ =gSprites
@@ -2414,7 +2414,7 @@ sub_80DB288: @ 80DB288
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r1, _080DB2C4 @ =gBattleAnimArgs
ldrh r0, [r1, 0x4]
strh r0, [r4, 0x2E]
@@ -2934,7 +2934,7 @@ sub_80DB5E4: @ 80DB5E4
asrs r5, 16
adds r0, r4, 0
adds r1, r5, 0
- bl sub_80790F0
+ bl ArcTan2Neg
lsls r0, 16
movs r1, 0xC0
lsls r1, 24
diff --git a/asm/ghost.s b/asm/ghost.s
index 2934f6dbd..b5620910b 100644
--- a/asm/ghost.s
+++ b/asm/ghost.s
@@ -12,7 +12,7 @@ sub_80DDB6C: @ 80DDB6C
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r0, _080DDBC8 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
@@ -63,7 +63,7 @@ sub_80DDBD8: @ 80DDBD8
adds r4, r0, 0
bl sub_80DDCC8
adds r0, r4, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
lsls r0, 24
cmp r0, 0
beq _080DDBF8
@@ -123,7 +123,7 @@ sub_80DDC4C: @ 80DDC4C
movs r0, 0x1
strh r0, [r4, 0x2E]
adds r0, r4, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
movs r1, 0x38
ldrsh r0, [r4, r1]
movs r1, 0xA
@@ -2539,7 +2539,7 @@ sub_80DEF3C: @ 80DEF3C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r0, _080DEF68 @ =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
@@ -2627,7 +2627,7 @@ _080DEFAA:
bne _080DF00C
movs r0, 0x1E
strh r0, [r3, 0x2E]
- ldr r0, _080DF004 @ =sub_80782D8
+ ldr r0, _080DF004 @ =WaitAnimForDuration
str r0, [r3, 0x1C]
ldr r1, _080DF008 @ =sub_80DF018
adds r0, r3, 0
@@ -2636,7 +2636,7 @@ _080DEFAA:
.align 2, 0
_080DEFFC: .4byte 0x000003ff
_080DF000: .4byte 0xfffffc00
-_080DF004: .4byte sub_80782D8
+_080DF004: .4byte WaitAnimForDuration
_080DF008: .4byte sub_80DF018
_080DF00C:
movs r0, 0x28
@@ -3257,7 +3257,7 @@ sub_80DF49C: @ 80DF49C
movs r2, 0x4
orrs r1, r2
strb r1, [r3]
- ldr r2, _080DF4E0 @ =gObjectBankIDs
+ ldr r2, _080DF4E0 @ =gBankSpriteIds
ldr r1, _080DF4E4 @ =gAnimBankAttacker
ldrb r1, [r1]
adds r1, r2
@@ -3286,7 +3286,7 @@ sub_80DF49C: @ 80DF49C
strh r1, [r0, 0x22]
bx lr
.align 2, 0
-_080DF4E0: .4byte gObjectBankIDs
+_080DF4E0: .4byte gBankSpriteIds
_080DF4E4: .4byte gAnimBankAttacker
_080DF4E8: .4byte gBattleAnimArgs
_080DF4EC: .4byte sub_80DF4F4
diff --git a/asm/ground.s b/asm/ground.s
index 3d4b69a9f..ac3f909b5 100644
--- a/asm/ground.s
+++ b/asm/ground.s
@@ -42,7 +42,7 @@ sub_80E0F1C: @ 80E0F1C
ldr r0, _080E0F7C @ =0x0000ffd8
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl sub_80786EC
+ bl InitAnimSpriteTranslationOverDuration
ldr r0, _080E0F80 @ =sub_80E0F84
str r0, [r4, 0x1C]
pop {r4,r5}
@@ -59,7 +59,7 @@ _080E0F80: .4byte sub_80E0F84
sub_80E0F84: @ 80E0F84
push {r4,r5,lr}
adds r5, r0, 0
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
lsls r0, 24
cmp r0, 0
beq _080E0FD8
@@ -92,7 +92,7 @@ sub_80E0F84: @ 80E0F84
movs r0, 0x28
strh r0, [r5, 0x38]
adds r0, r5, 0
- bl sub_80786EC
+ bl InitAnimSpriteTranslationOverDuration
ldr r0, _080E0FE4 @ =sub_80E0FE8
str r0, [r5, 0x1C]
_080E0FD8:
@@ -108,7 +108,7 @@ _080E0FE4: .4byte sub_80E0FE8
sub_80E0FE8: @ 80E0FE8
push {r4,lr}
adds r4, r0, 0
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
lsls r0, 24
cmp r0, 0
beq _080E0FFC
@@ -157,7 +157,7 @@ _080E1024:
ldrh r4, [r4, 0x6]
adds r0, r4
strh r0, [r6, 0x36]
- ldr r0, _080E1070 @ =sub_8078B34
+ ldr r0, _080E1070 @ =StartTranslateAnimSpriteByDeltas
str r0, [r6, 0x1C]
ldr r1, _080E1074 @ =DestroyAnimSprite
adds r0, r6, 0
@@ -169,7 +169,7 @@ _080E1024:
_080E1064: .4byte gAnimBankAttacker
_080E1068: .4byte gBattleAnimArgs
_080E106C: .4byte gAnimBankTarget
-_080E1070: .4byte sub_8078B34
+_080E1070: .4byte StartTranslateAnimSpriteByDeltas
_080E1074: .4byte DestroyAnimSprite
thumb_func_end sub_80E1004
@@ -180,7 +180,7 @@ sub_80E1078: @ 80E1078
push {r7}
adds r6, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r4, _080E10F8 @ =gAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
@@ -224,7 +224,7 @@ _080E10D0:
strh r0, [r6, 0x32]
adds r0, r7, r4
strh r0, [r6, 0x36]
- ldr r0, _080E1100 @ =sub_8078B34
+ ldr r0, _080E1100 @ =StartTranslateAnimSpriteByDeltas
str r0, [r6, 0x1C]
ldr r1, _080E1104 @ =move_anim_8074EE0
adds r0, r6, 0
@@ -237,7 +237,7 @@ _080E10D0:
.align 2, 0
_080E10F8: .4byte gAnimBankTarget
_080E10FC: .4byte gBattleAnimArgs
-_080E1100: .4byte sub_8078B34
+_080E1100: .4byte StartTranslateAnimSpriteByDeltas
_080E1104: .4byte move_anim_8074EE0
thumb_func_end sub_80E1078
@@ -1105,7 +1105,7 @@ _080E1762:
ldrh r0, [r7, 0x8]
strh r0, [r5, 0x38]
adds r0, r5, 0
- bl sub_80786EC
+ bl InitAnimSpriteTranslationOverDuration
ldr r0, _080E17AC @ =sub_80E17B0
str r0, [r5, 0x1C]
pop {r4-r7}
@@ -1120,7 +1120,7 @@ _080E17AC: .4byte sub_80E17B0
sub_80E17B0: @ 80E17B0
push {r4,lr}
adds r4, r0, 0
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
lsls r0, 24
cmp r0, 0
beq _080E17C4
@@ -1188,7 +1188,7 @@ _080E17EA:
bl StoreSpriteCallbackInData
ldrh r0, [r4, 0x4]
strh r0, [r6, 0x2E]
- ldr r0, _080E1860 @ =sub_80782D8
+ ldr r0, _080E1860 @ =WaitAnimForDuration
str r0, [r6, 0x1C]
pop {r4-r6}
pop {r0}
@@ -1200,7 +1200,7 @@ _080E1850: .4byte gBattleAnimArgs
_080E1854: .4byte 0x000003ff
_080E1858: .4byte 0xfffffc00
_080E185C: .4byte DestroyAnimSprite
-_080E1860: .4byte sub_80782D8
+_080E1860: .4byte WaitAnimForDuration
thumb_func_end sub_80E17CC
thumb_func_start sub_80E1864
@@ -1270,7 +1270,7 @@ _080E18CE:
adds r1, r4, 0
adds r1, 0x8
adds r1, r0
- ldr r0, _080E1904 @ =gObjectBankIDs
+ ldr r0, _080E1904 @ =gBankSpriteIds
adds r0, r5, r0
ldrb r0, [r0]
strh r0, [r1]
@@ -1285,7 +1285,7 @@ _080E18F8:
bls _080E18CE
b _080E1924
.align 2, 0
-_080E1904: .4byte gObjectBankIDs
+_080E1904: .4byte gBankSpriteIds
_080E1908:
ldrb r0, [r6]
bl GetAnimBankSpriteId
diff --git a/asm/ice.s b/asm/ice.s
index 032da59c3..51140d998 100644
--- a/asm/ice.s
+++ b/asm/ice.s
@@ -325,7 +325,7 @@ sub_80D792C: @ 80D792C
push {r4,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r0, _080D7960 @ =gAnimBankTarget
ldrb r0, [r0]
movs r1, 0x2
@@ -371,7 +371,7 @@ _080D7976:
ldr r1, _080D79AC @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData
- ldr r0, _080D79B0 @ =sub_8078B34
+ ldr r0, _080D79B0 @ =StartTranslateAnimSpriteByDeltas
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
@@ -380,7 +380,7 @@ _080D7976:
_080D79A4: .4byte gBattleAnimArgs
_080D79A8: .4byte gAnimBankTarget
_080D79AC: .4byte DestroyAnimSprite
-_080D79B0: .4byte sub_8078B34
+_080D79B0: .4byte StartTranslateAnimSpriteByDeltas
thumb_func_end sub_80D792C
thumb_func_start sub_80D79B4
@@ -406,7 +406,7 @@ _080D79D0:
adds r3, r4, 0
adds r3, 0x22
movs r1, 0x1
- bl sub_807A3FC
+ bl SetAverageBattlerPositions
ldr r0, _080D7A1C @ =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
@@ -480,7 +480,7 @@ sub_80D7A64: @ 80D7A64
sub sp, 0x10
adds r5, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r6, _080D7AAC @ =gBattleAnimArgs
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
@@ -519,7 +519,7 @@ _080D7AB4:
adds r3, r5, 0
adds r3, 0x36
movs r1, 0x1
- bl sub_807A3FC
+ bl SetAverageBattlerPositions
_080D7AC6:
ldr r0, _080D7AE4 @ =gAnimBankAttacker
ldrb r0, [r0]
@@ -795,7 +795,7 @@ sub_80D7CD4: @ 80D7CD4
sub sp, 0x10
adds r5, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r1, _080D7D18 @ =gBattleAnimArgs
ldrh r0, [r1, 0x8]
strh r0, [r5, 0x2E]
@@ -832,7 +832,7 @@ _080D7D20:
adds r3, r5, 0
adds r3, 0x36
movs r1, 0x1
- bl sub_807A3FC
+ bl SetAverageBattlerPositions
_080D7D32:
ldr r0, _080D7D54 @ =gAnimBankAttacker
ldrb r0, [r0]
@@ -1036,7 +1036,7 @@ _080D7EAC:
adds r3, r4, 0
adds r3, 0x22
movs r1, 0
- bl sub_807A3FC
+ bl SetAverageBattlerPositions
ldr r0, _080D7EF0 @ =gAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
@@ -1094,7 +1094,7 @@ sub_80D7F10: @ 80D7F10
bne _080D7F34
adds r0, r5, 0
movs r1, 0
- bl sub_80787B0
+ bl InitAnimSpritePos
b _080D7F72
.align 2, 0
_080D7F30: .4byte gBattleAnimArgs
@@ -1106,7 +1106,7 @@ _080D7F34:
adds r3, r5, 0
adds r3, 0x22
movs r1, 0
- bl sub_807A3FC
+ bl SetAverageBattlerPositions
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -1152,7 +1152,7 @@ _080D7F92:
adds r3, r5, 0
adds r3, 0x22
movs r1, 0
- bl sub_807A3FC
+ bl SetAverageBattlerPositions
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -1221,7 +1221,7 @@ _080D800C:
adds r0, r1
strh r0, [r5, 0x36]
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimSpriteTranslationDeltas
movs r0, 0x40
strh r0, [r5, 0x38]
ldr r1, _080D8044 @ =sub_80D8048
@@ -1241,7 +1241,7 @@ _080D8044: .4byte sub_80D8048
sub_80D8048: @ 80D8048
push {r4,lr}
adds r4, r0, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
lsls r0, 24
cmp r0, 0
bne _080D80D2
@@ -1696,14 +1696,14 @@ sub_80D83E0: @ 80D83E0
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x22]
- ldr r0, _080D8410 @ =sub_807941C
+ ldr r0, _080D8410 @ =TranslateAnimSpriteToTargetMonLocation
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080D840C: .4byte gAnimBankAttacker
-_080D8410: .4byte sub_807941C
+_080D8410: .4byte TranslateAnimSpriteToTargetMonLocation
thumb_func_end sub_80D83E0
thumb_func_start sub_80D8414
@@ -2227,7 +2227,7 @@ _080D8824:
strb r0, [r1]
_080D8858:
adds r0, r5, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimSpriteTranslationDeltas
ldr r0, _080D8870 @ =sub_80D8874
str r0, [r5, 0x1C]
pop {r3}
@@ -2263,7 +2263,7 @@ _080D8894:
b _080D8AD0
_080D8896:
adds r0, r4, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
ldr r1, _080D88C0 @ =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
@@ -2361,13 +2361,13 @@ _080D893A:
ands r0, r1
strh r0, [r4, 0x38]
adds r0, r4, 0
- bl obj_translate_based_on_private_1_2_3_4
+ bl InitAnimSpriteTranslationDeltas
b _080D8AD0
.align 2, 0
_080D8964: .4byte gSineTable
_080D8968:
adds r0, r4, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
ldr r1, _080D89C8 @ =gSineTable
movs r2, 0x38
ldrsh r0, [r4, r2]
@@ -2519,7 +2519,7 @@ _080D8A7A:
_080D8A90: .4byte 0x0000fff0
_080D8A94:
adds r0, r4, 0
- bl sub_8078B5C
+ bl TranslateAnimSpriteByDeltas
lsls r0, 24
cmp r0, 0
beq _080D8AD0
@@ -3026,7 +3026,7 @@ _080D8E6A:
bl StartSpriteAffineAnim
adds r0, r5, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r6, _080D8ED0 @ =gBattleAnimArgs
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
@@ -3060,7 +3060,7 @@ _080D8E92:
ldrh r0, [r6, 0xA]
strh r0, [r5, 0x38]
adds r0, r5, 0
- bl sub_80786EC
+ bl InitAnimSpriteTranslationOverDuration
ldr r0, _080D8EDC @ =sub_80D8EE0
str r0, [r5, 0x1C]
pop {r4-r6}
@@ -3078,7 +3078,7 @@ _080D8EDC: .4byte sub_80D8EE0
sub_80D8EE0: @ 80D8EE0
push {r4,lr}
adds r4, r0, 0
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
lsls r0, 24
cmp r0, 0
beq _080D8F02
diff --git a/asm/nakamura_debug_menu.s b/asm/nakamura_debug_menu.s
new file mode 100644
index 000000000..21092fe4b
--- /dev/null
+++ b/asm/nakamura_debug_menu.s
@@ -0,0 +1,4686 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ .text
+
+ thumb_func_start debug_sub_815F1B8
+debug_sub_815F1B8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0xe
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._1 @ _843E3DC
+ mov r0, #0x10
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0xf
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ add sp, sp, #0x8
+ pop {r0}
+ bx r0
+._2:
+ .align 2, 0
+._1:
+ .word _843E3DC
+
+ thumb_func_end debug_sub_815F1B8
+
+ thumb_func_start InitNakamuraDebugMenu
+InitNakamuraDebugMenu:
+ push {lr}
+ bl debug_sub_815F1B8
+ ldr r1, ._3 @ gMenuCallback
+ ldr r0, ._3 + 4 @ debug_sub_815F214
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._4:
+ .align 2, 0
+._3:
+ .word gMenuCallback
+ .word debug_sub_815F214+1
+
+ thumb_func_end InitNakamuraDebugMenu
+
+ thumb_func_start debug_sub_815F214
+debug_sub_815F214:
+ push {r4, lr}
+ ldr r4, ._9 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._5 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+._5:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._6 @cond_branch
+ mov r0, #0x1
+ bl Menu_MoveCursor
+._6:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._7 @cond_branch
+ ldr r4, ._9 + 4 @ _843E3DC
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x15
+ add r4, r4, #0x4
+ add r0, r0, r4
+ ldr r4, [r0]
+ bl Menu_DestroyCursor
+ bl _call_via_r4
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._12
+._10:
+ .align 2, 0
+._9:
+ .word gMain
+ .word _843E3DC
+._7:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._11 @cond_branch
+ mov r0, #0x0
+ b ._12
+._11:
+ bl CloseMenu
+ mov r0, #0x1
+._12:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815F214
+
+ thumb_func_start debug_sub_815F284
+debug_sub_815F284:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, ._14 @ gPaletteFade
+ ldrb r1, [r0, #0x7]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._13 @cond_branch
+ bl debug_sub_81381B4
+ mov r0, #0x5
+ mov r1, #0x0
+ bl OpenPartyMenu
+ add r0, r4, #0
+ bl DestroyTask
+._13:
+ pop {r4}
+ pop {r0}
+ bx r0
+._15:
+ .align 2, 0
+._14:
+ .word gPaletteFade
+
+ thumb_func_end debug_sub_815F284
+
+ thumb_func_start debug_sub_815F2B4
+debug_sub_815F2B4:
+ push {lr}
+ add sp, sp, #0xfffffffc
+ bl CloseMenu
+ bl Menu_EraseScreen
+ ldr r1, ._16 @ gMain
+ ldr r0, ._16 + 4 @ sub_805469C
+ str r0, [r1, #0x8]
+ ldr r0, ._16 + 8 @ debug_sub_815F284
+ mov r1, #0x0
+ bl CreateTask
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ mov r0, #0x1
+ add sp, sp, #0x4
+ pop {r1}
+ bx r1
+._17:
+ .align 2, 0
+._16:
+ .word gMain
+ .word sub_805469C+1
+ .word debug_sub_815F284+1
+
+ thumb_func_end debug_sub_815F2B4
+
+ thumb_func_start debug_sub_815F2F4
+debug_sub_815F2F4:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xfffffffc
+ bl CloseMenu
+ mov r7, #0x1
+._34:
+ lsl r1, r7, #0x2
+ add r0, r1, r7
+ lsl r2, r0, #0x5
+ ldr r3, ._24 @ gSaveBlock1
+ add r0, r2, r3
+ ldr r5, ._24 + 4 @ 0x1a08
+ add r0, r0, r5
+ ldrb r0, [r0]
+ mov r9, r1
+ add r1, r7, #1
+ str r1, [sp]
+ cmp r0, #0
+ beq ._18 @cond_branch
+ b ._19
+._18:
+ mov r5, #0x0
+ ldr r6, ._24 + 8 @ gSaveBlock2
+ add r4, r7, #0
+ sub r4, r4, #0x46
+ ldr r3, ._24 + 12 @ gSaveBlock1
+._21:
+ add r1, r5, r2
+ add r1, r1, r3
+ add r0, r5, r6
+ ldrb r0, [r0]
+ strb r0, [r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0xff
+ beq ._20 @cond_branch
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x6
+ bls ._21 @cond_branch
+._20:
+ cmp r5, #0x7
+ bne ._22 @cond_branch
+ add r0, r2, #6
+ b ._23
+._25:
+ .align 2, 0
+._24:
+ .word gSaveBlock1
+ .word 0x1a08
+ .word gSaveBlock2
+ .word gSaveBlock1+0x1a0a
+._22:
+ add r0, r5, r2
+._23:
+ add r0, r0, r3
+ strb r4, [r0]
+ ldr r1, ._35 @ gSaveBlock1
+ ldr r2, ._35 + 4 @ 0x1a08
+ add r2, r2, r1
+ mov sl, r2
+ mov r3, r9
+ add r0, r3, r7
+ lsl r6, r0, #0x5
+ add r1, r6, r1
+ ldr r5, ._35 + 4 @ 0x1a08
+ add r5, r5, r1
+ mov r8, r5
+._30:
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x4b
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0xe
+ ldr r1, ._35 + 8 @ _843E424
+ add r0, r0, r1
+ ldrb r0, [r0]
+ mov r2, r8
+ strb r0, [r2]
+ mov r5, #0x0
+ cmp r5, r7
+ bcs ._28 @cond_branch
+ mov r3, sl
+ ldrb r3, [r3]
+ cmp r0, r3
+ beq ._28 @cond_branch
+ ldr r4, ._35 @ gSaveBlock1
+ add r0, r6, r4
+ ldr r2, ._35 + 4 @ 0x1a08
+ add r3, r0, r2
+._29:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r7
+ bcs ._28 @cond_branch
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x5
+ add r0, r0, r4
+ add r0, r0, r2
+ ldrb r1, [r3]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bne ._29 @cond_branch
+._28:
+ cmp r5, r7
+ bne ._30 @cond_branch
+ bl Random
+ mov r5, r9
+ add r4, r5, r7
+ lsl r4, r4, #0x5
+ ldr r1, ._35 @ gSaveBlock1
+ add r3, r4, r1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x1
+ ldr r2, ._35 + 12 @ 0x1a09
+ add r3, r3, r2
+ and r0, r0, r1
+ lsl r0, r0, #0x4
+ ldrb r1, [r3]
+ mov r5, #0x11
+ neg r5, r5
+ add r2, r5, #0
+ and r1, r1, r2
+ orr r1, r1, r0
+ strb r1, [r3]
+ mov r5, #0x0
+ ldr r6, ._35 + 16 @ gSaveBlock1
+._31:
+ bl Random
+ add r1, r5, r4
+ add r1, r1, r6
+ strb r0, [r1]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x3
+ bls ._31 @cond_branch
+ mov r5, #0x0
+ mov r1, r9
+ add r0, r1, r7
+ lsl r4, r0, #0x5
+ ldr r3, ._35 + 20 @ gSaveBlock1
+ mov r2, #0x0
+ add r6, r3, #0
+ add r6, r6, #0x10
+._32:
+ add r1, r5, r4
+ add r0, r1, r3
+ strb r2, [r0]
+ add r1, r1, r6
+ strb r2, [r1]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0xf
+ bls ._32 @cond_branch
+ add r0, r7, #0
+ bl unref_sub_80BCD7C
+._19:
+ ldr r2, [sp]
+ lsl r0, r2, #0x18
+ lsr r7, r0, #0x18
+ cmp r7, #0x13
+ bhi ._33 @cond_branch
+ b ._34
+._33:
+ mov r0, #0x1
+ add sp, sp, #0x4
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._36:
+ .align 2, 0
+._35:
+ .word gSaveBlock1
+ .word 0x1a08
+ .word _843E424
+ .word 0x1a09
+ .word gSaveBlock1+0x1a11
+ .word gSaveBlock1+0x1a1a
+
+ thumb_func_end debug_sub_815F2F4
+
+ thumb_func_start debug_sub_815F470
+debug_sub_815F470:
+ push {r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ add r7, r1, #0
+ mov ip, r2
+ ldr r2, ._39 @ gSaveBlock1
+ ldr r0, ._39 + 4 @ _nakamuraData0
+ ldrb r1, [r0]
+ lsl r0, r1, #0x2
+ add r0, r0, r1
+ lsl r0, r0, #0x5
+ add r0, r0, r2
+ ldr r1, ._39 + 8 @ 0x1a08
+ add r0, r0, r1
+ ldrb r4, [r0]
+ mov r2, #0x0
+ ldr r3, ._39 + 12 @ _843E424
+ add r5, r3, #0
+._41:
+ lsl r1, r2, #0x2
+ add r0, r1, r5
+ ldrb r0, [r0]
+ cmp r0, r4
+ bne ._37 @cond_branch
+ add r0, r1, #1
+ add r0, r0, r3
+ ldrb r0, [r0]
+ strb r0, [r6]
+ add r0, r1, #2
+ add r0, r0, r3
+ ldrb r0, [r0]
+ strb r0, [r7]
+ add r0, r1, #3
+ add r0, r0, r3
+ ldrb r0, [r0]
+ mov r1, ip
+ strb r0, [r1]
+ b ._38
+._40:
+ .align 2, 0
+._39:
+ .word gSaveBlock1
+ .word _nakamuraData0
+ .word 0x1a08
+ .word _843E424
+._37:
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x4a
+ bls ._41 @cond_branch
+._38:
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_815F470
+
+ thumb_func_start debug_sub_815F4D8
+debug_sub_815F4D8:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0xa
+ bl Menu_BlankWindowRect
+ ldr r6, ._43 @ gStringVar1
+ ldr r7, ._43 + 4 @ _nakamuraData0
+ ldrb r1, [r7]
+ add r0, r6, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r2, ._43 + 8 @ gSaveBlock1
+ ldrb r1, [r7]
+ lsl r0, r1, #0x2
+ add r0, r0, r1
+ lsl r0, r0, #0x5
+ add r0, r0, r2
+ ldr r1, ._43 + 12 @ 0x1a08
+ add r0, r0, r1
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._42 @cond_branch
+ mov r4, sp
+ add r4, r4, #0x1
+ mov r5, sp
+ add r5, r5, #0x2
+ mov r0, sp
+ add r1, r4, #0
+ add r2, r5, #0
+ bl debug_sub_815F470
+ ldrb r1, [r7]
+ add r0, r6, #0
+ bl sub_80BC190
+ add r0, r6, #0
+ mov r1, #0x1
+ mov r2, #0x3
+ bl Menu_PrintText
+ ldr r0, ._43 + 16 @ Str_843E550
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, sp
+ ldrb r1, [r0]
+ add r0, r6, #0
+ mov r2, #0x0
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x2
+ mov r2, #0x5
+ bl Menu_PrintText
+ ldr r0, ._43 + 20 @ Str_843E552
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldrb r1, [r4]
+ add r0, r6, #0
+ mov r2, #0x0
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x3
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r0, ._43 + 24 @ Str_843E554
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintText
+ ldrb r1, [r5]
+ add r0, r6, #0
+ mov r2, #0x0
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x3
+ mov r2, #0x9
+ bl Menu_PrintText
+._42:
+ add sp, sp, #0x4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._44:
+ .align 2, 0
+._43:
+ .word gStringVar1
+ .word _nakamuraData0
+ .word gSaveBlock1
+ .word 0x1a08
+ .word Str_843E550
+ .word Str_843E552
+ .word Str_843E554
+
+ thumb_func_end debug_sub_815F4D8
+
+ thumb_func_start debug_sub_815F5C4
+debug_sub_815F5C4:
+ push {lr}
+ ldr r0, ._48 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ cmp r2, #0
+ beq ._45 @cond_branch
+ ldr r1, ._48 + 4 @ _nakamuraData0
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._46 @cond_branch
+ mov r0, #0x13
+ b ._50
+._49:
+ .align 2, 0
+._48:
+ .word gMain
+ .word _nakamuraData0
+._46:
+ sub r0, r0, #0x1
+ b ._50
+._45:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._51 @cond_branch
+ ldr r1, ._54 @ _nakamuraData0
+ ldrb r0, [r1]
+ cmp r0, #0x13
+ bne ._52 @cond_branch
+ strb r2, [r1]
+ b ._53
+._55:
+ .align 2, 0
+._54:
+ .word _nakamuraData0
+._52:
+ add r0, r0, #0x1
+._50:
+ strb r0, [r1]
+._53:
+ bl debug_sub_815F4D8
+ mov r0, #0x0
+ b ._58
+._51:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._57 @cond_branch
+ mov r0, #0x0
+ b ._58
+._57:
+ bl CloseMenu
+ mov r0, #0x1
+._58:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815F5C4
+
+ thumb_func_start debug_sub_815F62C
+debug_sub_815F62C:
+ push {lr}
+ ldr r1, ._59 @ _nakamuraData0
+ mov r0, #0x0
+ strb r0, [r1]
+ ldr r1, ._59 + 4 @ gMenuCallback
+ ldr r0, ._59 + 8 @ debug_sub_815F5C4
+ str r0, [r1]
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xb
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ bl debug_sub_815F4D8
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._60:
+ .align 2, 0
+._59:
+ .word _nakamuraData0
+ .word gMenuCallback
+ .word debug_sub_815F5C4+1
+
+ thumb_func_end debug_sub_815F62C
+
+ thumb_func_start debug_sub_815F668
+debug_sub_815F668:
+ push {r4, r5, r6, lr}
+ ldr r0, ._61 @ _nakamuraData0
+ ldrb r0, [r0]
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x5
+ ldr r0, ._61 + 4 @ gSaveBlock1
+ add r1, r1, r0
+ ldrb r4, [r1, #0x3]
+ lsl r4, r4, #0x18
+ ldrb r0, [r1, #0x2]
+ lsl r0, r0, #0x10
+ orr r4, r4, r0
+ ldrb r0, [r1, #0x1]
+ lsl r0, r0, #0x8
+ orr r4, r4, r0
+ ldrb r0, [r1]
+ orr r4, r4, r0
+ ldr r5, ._61 + 8 @ gStringVar1
+ ldr r6, ._61 + 12 @ 0x186a0
+ add r0, r4, #0
+ add r1, r6, #0
+ bl __udivsi3
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #0x2
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r5, #0
+ mov r1, #0x2
+ mov r2, #0x7
+ bl Menu_PrintText
+ add r0, r4, #0
+ add r1, r6, #0
+ bl __umodsi3
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #0x2
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r5, #0
+ mov r1, #0x7
+ mov r2, #0x7
+ bl Menu_PrintText
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._62:
+ .align 2, 0
+._61:
+ .word _nakamuraData0
+ .word gSaveBlock1+0x1a11
+ .word gStringVar1
+ .word 0x186a0
+
+ thumb_func_end debug_sub_815F668
+
+ thumb_func_start debug_sub_815F6E4
+debug_sub_815F6E4:
+ push {r4, lr}
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0xb
+ mov r3, #0x4
+ bl Menu_BlankWindowRect
+ ldr r4, ._63 @ gStringVar1
+ ldr r0, ._63 + 4 @ _nakamuraData0
+ ldrb r0, [r0]
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x5
+ ldr r0, ._63 + 8 @ gSaveBlock1
+ add r1, r1, r0
+ add r0, r4, #0
+ mov r2, #0x7
+ bl StringCopyN
+ mov r1, #0xff
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ pop {r4}
+ pop {r0}
+ bx r0
+._64:
+ .align 2, 0
+._63:
+ .word gStringVar1
+ .word _nakamuraData0
+ .word gSaveBlock1+0x1a0a
+
+ thumb_func_end debug_sub_815F6E4
+
+ thumb_func_start debug_sub_815F72C
+debug_sub_815F72C:
+ push {r4, r5, lr}
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0xb
+ mov r3, #0xa
+ bl Menu_BlankWindowRect
+ ldr r4, ._66 @ gStringVar1
+ ldr r5, ._66 + 4 @ _nakamuraData0
+ ldrb r1, [r5]
+ add r0, r4, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r2, ._66 + 8 @ gSaveBlock1
+ ldrb r1, [r5]
+ lsl r0, r1, #0x2
+ add r0, r0, r1
+ lsl r0, r0, #0x5
+ add r0, r0, r2
+ ldr r1, ._66 + 12 @ 0x1a08
+ add r0, r0, r1
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._65 @cond_branch
+ bl debug_sub_815F6E4
+ bl debug_sub_815F668
+._65:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._67:
+ .align 2, 0
+._66:
+ .word gStringVar1
+ .word _nakamuraData0
+ .word gSaveBlock1
+ .word 0x1a08
+
+ thumb_func_end debug_sub_815F72C
+
+ thumb_func_start debug_sub_815F788
+debug_sub_815F788:
+ push {lr}
+ mov r0, #0x2
+ mov r1, #0x5
+ mov r2, #0xb
+ mov r3, #0x6
+ bl Menu_BlankWindowRect
+ ldr r0, ._68 @ Str_843E574
+ ldr r1, ._68 + 4 @ _nakamuraData2
+ ldrb r1, [r1]
+ add r1, r1, #0x2
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #0x5
+ bl Menu_PrintText
+ pop {r0}
+ bx r0
+._69:
+ .align 2, 0
+._68:
+ .word Str_843E574
+ .word _nakamuraData2
+
+ thumb_func_end debug_sub_815F788
+
+ thumb_func_start debug_sub_815F7B4
+debug_sub_815F7B4:
+ push {lr}
+ ldr r0, ._72 @ _nakamuraData1
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._70 @cond_branch
+ mov r0, #0xb
+ mov r1, #0x1
+ mov r2, #0xb
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ b ._71
+._73:
+ .align 2, 0
+._72:
+ .word _nakamuraData1
+._70:
+ ldr r0, ._74 @ _nakamuraData3
+ ldrb r0, [r0]
+ lsl r0, r0, #0x1
+ ldr r1, ._74 + 4 @ Str_843E576
+ add r0, r0, r1
+ mov r1, #0xb
+ mov r2, #0x1
+ bl Menu_PrintText
+._71:
+ pop {r0}
+ bx r0
+._75:
+ .align 2, 0
+._74:
+ .word _nakamuraData3
+ .word Str_843E576
+
+ thumb_func_end debug_sub_815F7B4
+
+ thumb_func_start debug_sub_815F7F0
+debug_sub_815F7F0:
+ push {r4, r5, lr}
+ ldr r1, ._78 @ _nakamuraData0
+ ldrb r2, [r1]
+ lsl r1, r2, #0x2
+ add r1, r1, r2
+ lsl r1, r1, #0x5
+ ldr r2, ._78 + 4 @ gSaveBlock1
+ add r3, r1, r2
+ ldrb r1, [r3, #0x3]
+ lsl r2, r1, #0x18
+ ldrb r1, [r3, #0x2]
+ lsl r1, r1, #0x10
+ orr r2, r2, r1
+ ldrb r1, [r3, #0x1]
+ lsl r1, r1, #0x8
+ orr r2, r2, r1
+ ldrb r1, [r3]
+ orr r2, r2, r1
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r4, #0x9
+ ldr r0, ._78 + 8 @ _nakamuraData2
+ ldrb r0, [r0]
+ cmp r4, r0
+ ble ._76 @cond_branch
+ add r5, r0, #0
+._77:
+ lsl r0, r1, #0x2
+ add r0, r0, r1
+ lsl r1, r0, #0x1
+ lsl r0, r4, #0x18
+ mov r4, #0xff
+ lsl r4, r4, #0x18
+ add r0, r0, r4
+ lsr r4, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, r5
+ bgt ._77 @cond_branch
+._76:
+ add r2, r2, r1
+ lsr r0, r2, #0x18
+ strb r0, [r3, #0x3]
+ mov r0, #0xff
+ lsl r0, r0, #0x10
+ and r0, r0, r2
+ lsr r0, r0, #0x10
+ strb r0, [r3, #0x2]
+ mov r0, #0xff
+ lsl r0, r0, #0x8
+ and r0, r0, r2
+ lsr r0, r0, #0x8
+ strb r0, [r3, #0x1]
+ strb r2, [r3]
+ bl debug_sub_815F668
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._79:
+ .align 2, 0
+._78:
+ .word _nakamuraData0
+ .word gSaveBlock1+0x1a11
+ .word _nakamuraData2
+
+ thumb_func_end debug_sub_815F7F0
+
+ thumb_func_start debug_sub_815F86C
+debug_sub_815F86C:
+ push {r4, r5, r6, lr}
+ lsl r0, r0, #0x18
+ ldr r1, ._84 @ _nakamuraData0
+ ldrb r2, [r1]
+ lsl r1, r2, #0x2
+ add r1, r1, r2
+ lsl r1, r1, #0x5
+ ldr r2, ._84 + 4 @ gSaveBlock1
+ add r5, r1, r2
+ mov r2, #0x0
+ mov r3, #0x0
+ lsr r6, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0x64
+ bne ._80 @cond_branch
+ ldr r0, ._84 + 8 @ _nakamuraData2
+ ldrb r1, [r0]
+ cmp r1, #0x6
+ bhi ._100 @cond_branch
+ mov r2, #0xff
+._82:
+ add r0, r5, r1
+ strb r2, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x6
+ bls ._82 @cond_branch
+ b ._100
+._85:
+ .align 2, 0
+._84:
+ .word _nakamuraData0
+ .word gSaveBlock1+0x1a0a
+ .word _nakamuraData2
+._80:
+ ldr r0, ._87 @ _nakamuraData3
+ ldrb r0, [r0]
+ cmp r0, #0x4
+ bhi ._98 @cond_branch
+ lsl r0, r0, #0x2
+ ldr r1, ._87 + 4 @
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+._88:
+ .align 2, 0
+._87:
+ .word _nakamuraData3
+ .word ._89
+._89:
+ .word ._90
+ .word ._91
+ .word ._92
+ .word ._93
+ .word ._94
+._90:
+ mov r3, #0x1
+ mov r2, #0x50
+ b ._98
+._91:
+ mov r3, #0x51
+ mov r2, #0xa0
+ b ._98
+._92:
+ mov r3, #0xbb
+ mov r2, #0xd4
+ b ._98
+._93:
+ mov r3, #0xd5
+ mov r2, #0xee
+ b ._98
+._94:
+ mov r3, #0xa1
+ mov r2, #0xaa
+._98:
+ ldr r4, ._101 @ _nakamuraData2
+ ldrb r1, [r4]
+ add r1, r5, r1
+ ldrb r0, [r1]
+ add r0, r0, r6
+ strb r0, [r1]
+ ldrb r0, [r4]
+ add r1, r5, r0
+ ldrb r0, [r1]
+ cmp r0, r3
+ bcs ._99 @cond_branch
+ strb r2, [r1]
+._99:
+ ldrb r0, [r4]
+ add r1, r5, r0
+ ldrb r0, [r1]
+ cmp r0, r2
+ bls ._100 @cond_branch
+ strb r3, [r1]
+._100:
+ bl debug_sub_815F6E4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._102:
+ .align 2, 0
+._101:
+ .word _nakamuraData2
+
+ thumb_func_end debug_sub_815F86C
+
+ thumb_func_start debug_sub_815F930
+debug_sub_815F930:
+ push {r4, r5, lr}
+ ldr r0, ._107 @ _nakamuraData1
+ ldrb r2, [r0]
+ mov r4, #0xa
+ cmp r2, #0
+ bne ._103 @cond_branch
+ mov r4, #0x7
+._103:
+ ldr r5, ._107 + 4 @ gMain
+ ldrh r1, [r5, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._104 @cond_branch
+ cmp r2, #0
+ beq ._105 @cond_branch
+ mov r0, #0x1
+ bl debug_sub_815F7F0
+ b ._136
+._108:
+ .align 2, 0
+._107:
+ .word _nakamuraData1
+ .word gMain
+._105:
+ mov r0, #0x1
+ b ._113
+._104:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._110 @cond_branch
+ cmp r2, #0
+ beq ._111 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ bl debug_sub_815F7F0
+ b ._136
+._111:
+ mov r0, #0x1
+ neg r0, r0
+ b ._113
+._110:
+ mov r0, #0x20
+ and r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #0
+ beq ._114 @cond_branch
+ ldr r1, ._117 @ _nakamuraData2
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._115 @cond_branch
+ sub r0, r4, #1
+ b ._116
+._118:
+ .align 2, 0
+._117:
+ .word _nakamuraData2
+._115:
+ sub r0, r0, #0x1
+._116:
+ strb r0, [r1]
+._125:
+ bl debug_sub_815F788
+ b ._136
+._114:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._120 @cond_branch
+ ldr r2, ._123 @ _nakamuraData2
+ ldrb r1, [r2]
+ sub r0, r4, #1
+ cmp r1, r0
+ bne ._121 @cond_branch
+ strb r3, [r2]
+ b ._125
+._124:
+ .align 2, 0
+._123:
+ .word _nakamuraData2
+._121:
+ add r0, r1, #1
+ strb r0, [r2]
+ b ._125
+._120:
+ ldrh r1, [r5, #0x2e]
+ mov r0, #0x4
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._126 @cond_branch
+ cmp r2, #0
+ bne ._127 @cond_branch
+ ldr r4, ._129 @ _nakamuraData3
+ ldrb r0, [r4]
+ add r0, r0, #0x1
+ mov r1, #0x5
+ bl __modsi3
+ strb r0, [r4]
+._127:
+ bl debug_sub_815F7B4
+ b ._136
+._130:
+ .align 2, 0
+._129:
+ .word _nakamuraData3
+._126:
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._131 @cond_branch
+ mov r0, #0x2
+ mov r1, #0x5
+ mov r2, #0xb
+ mov r3, #0x6
+ bl Menu_BlankWindowRect
+ mov r0, #0xb
+ mov r1, #0x1
+ mov r2, #0xb
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r1, ._133 @ gMenuCallback
+ ldr r0, ._133 + 4 @ debug_sub_815FA38
+ str r0, [r1]
+ b ._136
+._134:
+ .align 2, 0
+._133:
+ .word gMenuCallback
+ .word debug_sub_815FA38+1
+._131:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._136 @cond_branch
+ cmp r2, #0
+ bne ._136 @cond_branch
+ mov r0, #0x64
+._113:
+ bl debug_sub_815F86C
+._136:
+ mov r0, #0x0
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815F930
+
+ thumb_func_start debug_sub_815FA38
+debug_sub_815FA38:
+ push {r4, lr}
+ ldr r0, ._139 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._137 @cond_branch
+ mov r0, #0x2
+ neg r0, r0
+ b ._138
+._140:
+ .align 2, 0
+._139:
+ .word gMain
+._137:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._141 @cond_branch
+ mov r0, #0x2
+._138:
+ bl Menu_MoveCursor
+._161:
+ mov r0, #0x0
+ b ._142
+._141:
+ mov r0, #0x20
+ and r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ cmp r2, #0
+ beq ._143 @cond_branch
+ ldr r1, ._146 @ _nakamuraData0
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._144 @cond_branch
+ mov r0, #0x13
+ b ._148
+._147:
+ .align 2, 0
+._146:
+ .word _nakamuraData0
+._144:
+ sub r0, r0, #0x1
+ b ._148
+._143:
+ mov r0, #0x10
+ and r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0
+ beq ._149 @cond_branch
+ ldr r1, ._152 @ _nakamuraData0
+ ldrb r0, [r1]
+ cmp r0, #0x13
+ bne ._150 @cond_branch
+ strb r2, [r1]
+ b ._151
+._153:
+ .align 2, 0
+._152:
+ .word _nakamuraData0
+._150:
+ add r0, r0, #0x1
+._148:
+ strb r0, [r1]
+._151:
+ bl debug_sub_815F72C
+ b ._161
+._149:
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._155 @cond_branch
+ ldr r1, ._159 @ _nakamuraData0
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._161 @cond_branch
+ ldr r2, ._159 + 4 @ gSaveBlock1
+ add r1, r0, #0
+ lsl r0, r1, #0x2
+ add r0, r0, r1
+ lsl r0, r0, #0x5
+ add r0, r0, r2
+ ldr r1, ._159 + 8 @ 0x1a08
+ add r0, r0, r1
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._161 @cond_branch
+ bl Menu_GetCursorPos
+ ldr r1, ._159 + 12 @ _nakamuraData1
+ strb r0, [r1]
+ ldr r0, ._159 + 16 @ _nakamuraData2
+ strb r4, [r0]
+ bl debug_sub_815F788
+ bl debug_sub_815F7B4
+ ldr r1, ._159 + 20 @ gMenuCallback
+ ldr r0, ._159 + 24 @ debug_sub_815F930
+ str r0, [r1]
+ b ._161
+._160:
+ .align 2, 0
+._159:
+ .word _nakamuraData0
+ .word gSaveBlock1
+ .word 0x1a08
+ .word _nakamuraData1
+ .word _nakamuraData2
+ .word gMenuCallback
+ .word debug_sub_815F930+1
+._155:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._161 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+._142:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815FA38
+
+ thumb_func_start debug_sub_815FB1C
+debug_sub_815FB1C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ ldr r0, ._162 @ _nakamuraData0
+ mov r1, #0x0
+ strb r1, [r0]
+ ldr r0, ._162 + 4 @ _nakamuraData3
+ strb r1, [r0]
+ ldr r1, ._162 + 8 @ gMenuCallback
+ ldr r0, ._162 + 12 @ debug_sub_815FA38
+ str r0, [r1]
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xc
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ bl debug_sub_815F72C
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x3
+ bl InitMenu
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._163:
+ .align 2, 0
+._162:
+ .word _nakamuraData0
+ .word _nakamuraData3
+ .word gMenuCallback
+ .word debug_sub_815FA38+1
+
+ thumb_func_end debug_sub_815FB1C
+
+ thumb_func_start debug_sub_815FB78
+debug_sub_815FB78:
+ push {lr}
+ ldr r0, ._166 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._164 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ b ._165
+._167:
+ .align 2, 0
+._166:
+ .word gMain
+._164:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._168 @cond_branch
+ mov r0, #0x1
+._165:
+ bl Menu_MoveCursor
+ mov r0, #0x0
+ b ._177
+._168:
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._170 @cond_branch
+ bl CloseMenu
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0
+ beq ._171 @cond_branch
+ cmp r0, #0x1
+ beq ._172 @cond_branch
+ b ._175
+._171:
+ bl debug_sub_814A714
+ b ._175
+._172:
+ bl ClearRoamerData
+ bl ClearRoamerLocationData
+ b ._175
+._170:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._176 @cond_branch
+ mov r0, #0x0
+ b ._177
+._176:
+ bl CloseMenu
+._175:
+ mov r0, #0x1
+._177:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815FB78
+
+ thumb_func_start debug_sub_815FBE8
+debug_sub_815FBE8:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ ldr r1, ._178 @ gMenuCallback
+ ldr r0, ._178 + 4 @ debug_sub_815FB78
+ str r0, [r1]
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ ldr r4, ._178 + 8 @ gStringVar1
+ add r0, r4, #0
+ bl debug_sub_814A73C
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xb
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ add r0, r4, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._178 + 12 @ Str_843E580
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x3
+ bl InitMenu
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._179:
+ .align 2, 0
+._178:
+ .word gMenuCallback
+ .word debug_sub_815FB78+1
+ .word gStringVar1
+ .word Str_843E580
+
+ thumb_func_end debug_sub_815FBE8
+
+ thumb_func_start debug_sub_815FC54
+debug_sub_815FC54:
+ push {r4, r5, r6, r7, lr}
+ mov r3, #0x0
+ ldr r7, ._181 @ gSaveBlock1
+ mov r6, #0xe8
+ lsl r6, r6, #0x3
+ ldr r5, ._181 + 4 @ 0x3e7
+ ldr r4, ._181 + 8 @ 0x742
+._180:
+ lsl r1, r3, #0x2
+ add r1, r1, r7
+ add r2, r3, #0
+ add r2, r2, #0x85
+ add r0, r1, r6
+ strh r2, [r0]
+ add r1, r1, r4
+ strh r5, [r1]
+ add r0, r3, #1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #0x2a
+ bls ._180 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._182:
+ .align 2, 0
+._181:
+ .word gSaveBlock1
+ .word 0x3e7
+ .word 0x742
+
+ thumb_func_end debug_sub_815FC54
+
+ thumb_func_start debug_sub_815FC94
+debug_sub_815FC94:
+ push {lr}
+ bl ClearDecorationInventories
+ bl debug_sub_814A3A8
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815FC94
+
+ thumb_func_start debug_sub_815FCB4
+debug_sub_815FCB4:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ mov r7, #0x0
+ ldr r5, ._188 @ gMapHeader
+ ldr r0, [r5]
+ ldr r0, [r0, #0x4]
+ mov r1, #0x3
+ bl __divsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r0, #0
+ mul r1, r1, r4
+ lsl r1, r1, #0x10
+ lsr r6, r1, #0x10
+ add r0, r6, r0
+ mov r9, r5
+ cmp r6, r0
+ bge ._183 @cond_branch
+ mov r8, r0
+._187:
+ mov r4, #0x0
+ mov r1, r9
+ ldr r0, [r1]
+ ldr r0, [r0]
+ add r5, r6, #1
+ cmp r4, r0
+ bge ._184 @cond_branch
+ ldr r0, ._188 @ gMapHeader
+ mov r9, r0
+._186:
+ add r0, r4, #7
+ add r1, r6, #7
+ bl MapGridGetMetatileBehaviorAt
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl sub_805759C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bne ._185 @cond_branch
+ add r0, r7, #1
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+._185:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, ._188 @ gMapHeader
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r4, r0
+ blt ._186 @cond_branch
+._184:
+ lsl r0, r5, #0x10
+ lsr r6, r0, #0x10
+ cmp r6, r8
+ blt ._187 @cond_branch
+._183:
+ add r0, r7, #0
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._189:
+ .align 2, 0
+._188:
+ .word gMapHeader
+
+ thumb_func_end debug_sub_815FCB4
+
+ thumb_func_start debug_sub_815FD40
+debug_sub_815FD40:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffffc
+ mov r6, #0x0
+ mov r4, sp
+ add r4, r4, #0x2
+ mov r0, sp
+ add r1, r4, #0
+ bl GetXYCoordsOneStepInFrontOfPlayer
+ mov r1, sp
+ mov r0, sp
+ ldrh r0, [r0]
+ sub r0, r0, #0x7
+ strh r0, [r1]
+ ldrh r0, [r4]
+ sub r0, r0, #0x7
+ strh r0, [r4]
+ mov r5, #0x0
+ ldr r1, ._192 @ gMapHeader
+ ldr r0, [r1]
+ ldr r0, [r0, #0x4]
+ add r7, r4, #0
+ cmp r6, r0
+ bge ._190 @cond_branch
+._199:
+ mov r4, #0x0
+ ldr r0, [r1]
+ b ._191
+._193:
+ .align 2, 0
+._192:
+ .word gMapHeader
+._198:
+ add r0, r4, #7
+ add r1, r5, #7
+ bl MapGridGetMetatileBehaviorAt
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl sub_805759C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bne ._196 @cond_branch
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r6, r0, #0x10
+ mov r0, sp
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, r4
+ bne ._196 @cond_branch
+ mov r1, #0x0
+ ldsh r0, [r7, r1]
+ cmp r0, r5
+ bne ._196 @cond_branch
+ add r0, r6, #0
+ b ._197
+._196:
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ ldr r0, ._200 @ gMapHeader
+ ldr r0, [r0]
+._191:
+ ldr r0, [r0]
+ cmp r4, r0
+ blt ._198 @cond_branch
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r1, ._200 @ gMapHeader
+ ldr r0, [r1]
+ ldr r0, [r0, #0x4]
+ cmp r5, r0
+ blt ._199 @cond_branch
+._190:
+ add r0, r6, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+._197:
+ add sp, sp, #0x4
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._201:
+ .align 2, 0
+._200:
+ .word gMapHeader
+
+ thumb_func_end debug_sub_815FD40
+
+ thumb_func_start debug_sub_815FDE4
+debug_sub_815FDE4:
+ push {lr}
+ ldr r0, ._205 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._202 @cond_branch
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._203 @cond_branch
+._202:
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl CloseMenu
+ mov r0, #0x1
+ b ._204
+._206:
+ .align 2, 0
+._205:
+ .word gMain
+._203:
+ mov r0, #0x0
+._204:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_815FDE4
+
+ thumb_func_start debug_sub_815FE1C
+debug_sub_815FE1C:
+ push {r4, r5, r6, r7, lr}
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x10
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._210 @ Str_843E58D
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r6, ._210 + 4 @ gStringVar1
+ mov r0, #0x0
+ bl debug_sub_815FCB4
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x5
+ mov r2, #0x3
+ bl Menu_PrintText
+ mov r0, #0x1
+ bl debug_sub_815FCB4
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x5
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0x2
+ bl debug_sub_815FCB4
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0x5
+ mov r2, #0x7
+ bl Menu_PrintText
+ mov r0, #0x0
+ bl debug_sub_8092344
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0xb
+ mov r2, #0x3
+ bl Menu_PrintText
+ mov r0, #0x1
+ bl debug_sub_8092344
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0xb
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0x2
+ bl debug_sub_8092344
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r6, #0
+ mov r1, #0xb
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r0, ._210 + 8 @ gSaveBlock1
+ ldr r1, ._210 + 12 @ 0x2dd6
+ add r0, r0, r1
+ ldrh r0, [r0]
+ bl FeebasSeedRng
+ mov r0, #0x0
+ bl debug_sub_815FCB4
+ add r4, r0, #0
+ mov r0, #0x1
+ bl debug_sub_815FCB4
+ add r5, r0, #0
+ mov r0, #0x2
+ bl debug_sub_815FCB4
+ add r4, r4, r5
+ add r0, r0, r4
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ mov r5, #0x0
+._209:
+ bl FeebasRandom
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r1, r7, #0
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0
+ bne ._207 @cond_branch
+ add r1, r7, #0
+._207:
+ sub r0, r1, #1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x2
+ bls ._208 @cond_branch
+ add r0, r6, #0
+ mov r2, #0x1
+ mov r3, #0x4
+ bl ConvertIntToDecimalStringN
+ add r0, r5, #0
+ mov r1, #0x3
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r4, r0, #0x2
+ add r4, r4, r0
+ add r4, r4, #0x2
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r5, #0
+ mov r1, #0x3
+ bl __udivsi3
+ add r2, r0, #0
+ lsl r2, r2, #0x19
+ mov r0, #0xb0
+ lsl r0, r0, #0x14
+ add r2, r2, r0
+ lsr r2, r2, #0x18
+ add r0, r6, #0
+ add r1, r4, #0
+ bl Menu_PrintText
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+._208:
+ cmp r5, #0x6
+ bne ._209 @cond_branch
+ ldr r4, ._210 + 4 @ gStringVar1
+ bl debug_sub_815FD40
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ mov r2, #0x1
+ mov r3, #0x4
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x2
+ mov r2, #0x11
+ bl Menu_PrintText
+ ldr r1, ._210 + 16 @ gMenuCallback
+ ldr r0, ._210 + 20 @ debug_sub_815FDE4
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._211:
+ .align 2, 0
+._210:
+ .word Str_843E58D
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x2dd6
+ .word gMenuCallback
+ .word debug_sub_815FDE4+1
+
+ thumb_func_end debug_sub_815FE1C
+
+ thumb_func_start debug_sub_815FFDC
+debug_sub_815FFDC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ mov r0, #0xe
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0xe
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._214 @ Str_843E5D4
+ mov r1, #0x1
+ mov r2, #0xf
+ bl Menu_PrintText
+ mov r5, #0x0
+ ldr r0, ._214 + 4 @ _nakamuraStatic0
+ mov r8, r0
+._216:
+ mov r0, #0x64
+ add r1, r5, #0
+ mul r1, r1, r0
+ ldr r0, ._214 + 8 @ gPlayerParty
+ add r6, r1, r0
+ add r0, r6, #0
+ mov r1, #0xb
+ bl GetMonData
+ lsl r1, r5, #0x2
+ mov r2, r8
+ add r4, r1, r2
+ strh r0, [r4]
+ lsl r0, r0, #0x10
+ add r7, r1, #0
+ cmp r0, #0
+ beq ._212 @cond_branch
+ add r0, r6, #0
+ mov r1, #0x38
+ bl GetMonData
+ strb r0, [r4, #0x2]
+ add r0, r5, #0
+ bl debug_sub_816009C
+ add r0, r5, #0
+ bl debug_sub_81600D0
+ add r0, r5, #0
+ bl debug_sub_816013C
+ b ._213
+._215:
+ .align 2, 0
+._214:
+ .word Str_843E5D4
+ .word _nakamuraStatic0
+ .word gPlayerParty
+._212:
+ mov r0, #0x1
+ strb r0, [r4, #0x2]
+._213:
+ mov r0, r8
+ add r1, r7, r0
+ mov r0, #0x0
+ strb r0, [r1, #0x3]
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x5
+ bls ._216 @cond_branch
+ ldr r1, ._217 @ _nakamuraData4
+ mov r0, #0x0
+ strb r0, [r1]
+ mov r0, #0xf
+ mov r1, #0x1
+ mov r2, #0xff
+ bl PrintTriangleCursorWithPalette
+ ldr r1, ._217 + 4 @ gMenuCallback
+ ldr r0, ._217 + 8 @ debug_sub_8160498
+ str r0, [r1]
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._218:
+ .align 2, 0
+._217:
+ .word _nakamuraData4
+ .word gMenuCallback
+ .word debug_sub_8160498+1
+
+ thumb_func_end debug_sub_815FFDC
+
+ thumb_func_start debug_sub_816009C
+debug_sub_816009C:
+ push {lr}
+ add r2, r0, #0
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ ldr r1, ._219 @ _nakamuraStatic0
+ lsl r0, r2, #0x2
+ add r0, r0, r1
+ mov r3, #0x0
+ ldsh r1, [r0, r3]
+ mov r0, #0xb
+ mul r0, r0, r1
+ ldr r1, ._219 + 4 @ gSpeciesNames
+ add r0, r0, r1
+ lsl r2, r2, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r1, #0x10
+ bl Menu_PrintText
+ pop {r0}
+ bx r0
+._220:
+ .align 2, 0
+._219:
+ .word _nakamuraStatic0
+ .word gSpeciesNames
+
+ thumb_func_end debug_sub_816009C
+
+ thumb_func_start debug_sub_81600D0
+debug_sub_81600D0:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r5, r4, #0
+ ldr r1, ._223 @ Str_843E5F0
+ mov r0, sp
+ mov r2, #0x2
+ bl memcpy
+ mov r0, #0x64
+ mul r0, r0, r4
+ ldr r1, ._223 + 4 @ gPlayerParty
+ add r0, r0, r1
+ bl GetMonGender
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0
+ bne ._221 @cond_branch
+ ldr r0, ._223 + 8 @ gOtherText_MaleSymbol2
+ b ._222
+._224:
+ .align 2, 0
+._223:
+ .word Str_843E5F0
+ .word gPlayerParty
+ .word gOtherText_MaleSymbol2
+._221:
+ cmp r0, #0xfe
+ bne ._225 @cond_branch
+ ldr r0, ._227 @ gOtherText_FemaleSymbolAndLv
+._222:
+ lsl r2, r4, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r1, #0x17
+ bl Menu_PrintText
+ b ._226
+._228:
+ .align 2, 0
+._227:
+ .word gOtherText_FemaleSymbolAndLv
+._225:
+ lsl r2, r5, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r0, sp
+ mov r1, #0x17
+ bl Menu_PrintText
+._226:
+ add sp, sp, #0x4
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_81600D0
+
+ thumb_func_start debug_sub_816013C
+debug_sub_816013C:
+ push {r4, r5, lr}
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r5, ._229 @ gStringVar1
+ ldr r1, ._229 + 4 @ _nakamuraStatic0
+ lsl r0, r4, #0x2
+ add r0, r0, r1
+ mov r1, #0x2
+ ldrsb r1, [r0, r1]
+ add r0, r5, #0
+ mov r2, #0x1
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ lsl r4, r4, #0x1
+ add r4, r4, #0x1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r5, #0
+ mov r1, #0x1a
+ add r2, r4, #0
+ bl Menu_PrintText
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._230:
+ .align 2, 0
+._229:
+ .word gStringVar1
+ .word _nakamuraStatic0
+
+ thumb_func_end debug_sub_816013C
+
+ thumb_func_start debug_sub_816017C
+debug_sub_816017C:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ lsl r3, r4, #0x1
+ add r1, r3, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r3, r3, #0x2
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ mov r0, #0x10
+ mov r2, #0x1c
+ bl Menu_BlankWindowRect
+ ldr r1, ._232 @ _nakamuraStatic0
+ lsl r0, r4, #0x2
+ add r0, r0, r1
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0
+ beq ._231 @cond_branch
+ add r0, r4, #0
+ bl debug_sub_816009C
+ add r0, r4, #0
+ bl debug_sub_81600D0
+ add r0, r4, #0
+ bl debug_sub_816013C
+._231:
+ mov r0, #0x5
+ bl debug_sub_81603B8
+ pop {r4}
+ pop {r0}
+ bx r0
+._233:
+ .align 2, 0
+._232:
+ .word _nakamuraStatic0
+
+ thumb_func_end debug_sub_816017C
+
+ thumb_func_start debug_sub_81601C8
+debug_sub_81601C8:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffff0
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r1, ._239 @ _nakamuraStatic0
+ lsl r0, r5, #0x2
+ add r2, r0, r1
+ mov r4, #0x0
+ ldsh r0, [r2, r4]
+ cmp r0, #0
+ bne ._236 @cond_branch
+ ldrb r0, [r2, #0x3]
+ cmp r0, #0
+ bne ._236 @cond_branch
+ cmp r3, #0x1
+ bne ._236 @cond_branch
+ mov r0, #0x8a
+ lsl r0, r0, #0x1
+ strh r0, [r2]
+._236:
+ lsl r0, r5, #0x2
+ add r4, r0, r1
+ lsl r0, r3, #0x18
+ asr r0, r0, #0x18
+ ldrh r1, [r4]
+ add r2, r0, r1
+ mov r3, #0x0
+ strh r2, [r4]
+ lsl r1, r2, #0x10
+ mov r0, #0xcd
+ lsl r0, r0, #0x11
+ cmp r1, r0
+ ble ._237 @cond_branch
+ ldr r1, ._239 + 4 @ 0xfffffe65
+ add r0, r2, r1
+ strh r0, [r4]
+._237:
+ ldrh r1, [r4]
+ mov r2, #0x0
+ ldsh r0, [r4, r2]
+ cmp r0, #0
+ bge ._238 @cond_branch
+ ldr r2, ._239 + 8 @ 0x19b
+ add r0, r1, r2
+ strh r0, [r4]
+._238:
+ mov r0, #0x64
+ mul r0, r0, r5
+ ldr r1, ._239 + 12 @ gPlayerParty
+ add r0, r0, r1
+ ldrh r1, [r4]
+ ldrb r2, [r4, #0x2]
+ str r3, [sp]
+ str r3, [sp, #0x4]
+ str r3, [sp, #0x8]
+ str r3, [sp, #0xc]
+ mov r3, #0x20
+ bl CreateMon
+ mov r0, #0x1
+ strb r0, [r4, #0x3]
+ add sp, sp, #0x10
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._240:
+ .align 2, 0
+._239:
+ .word _nakamuraStatic0
+ .word 0xfffffe65
+ .word 0x19b
+ .word gPlayerParty
+
+ thumb_func_end debug_sub_81601C8
+
+ thumb_func_start debug_sub_8160258
+debug_sub_8160258:
+ push {lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ ldr r1, ._242 @ _nakamuraStatic0
+ lsl r0, r2, #0x2
+ add r0, r0, r1
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0
+ beq ._241 @cond_branch
+ add r0, r2, #0
+ bl debug_sub_816062C
+._241:
+ pop {r0}
+ bx r0
+._243:
+ .align 2, 0
+._242:
+ .word _nakamuraStatic0
+
+ thumb_func_end debug_sub_8160258
+
+ thumb_func_start debug_sub_816027C
+debug_sub_816027C:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r4, r0, #0
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ ldr r1, ._247 @ _nakamuraStatic0
+ lsl r0, r4, #0x2
+ add r3, r0, r1
+ mov r1, #0x0
+ ldsh r0, [r3, r1]
+ cmp r0, #0
+ beq ._244 @cond_branch
+ lsl r0, r2, #0x18
+ asr r0, r0, #0x18
+ ldrb r1, [r3, #0x2]
+ add r0, r0, r1
+ strb r0, [r3, #0x2]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0x64
+ ble ._245 @cond_branch
+ mov r0, #0x1
+ strb r0, [r3, #0x2]
+._245:
+ mov r0, #0x2
+ ldrsb r0, [r3, r0]
+ cmp r0, #0
+ bgt ._246 @cond_branch
+ mov r0, #0x64
+ strb r0, [r3, #0x2]
+._246:
+ mov r0, #0x64
+ mul r4, r4, r0
+ ldr r0, ._247 + 4 @ gPlayerParty
+ add r4, r4, r0
+ ldr r2, ._247 + 8 @ gBaseStats
+ mov r0, #0x0
+ ldsh r1, [r3, r0]
+ lsl r0, r1, #0x3
+ sub r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r2
+ ldrb r1, [r0, #0x13]
+ mov r0, #0xca
+ lsl r0, r0, #0x1
+ add r2, r1, #0
+ mul r2, r2, r0
+ mov r0, #0x2
+ ldrsb r0, [r3, r0]
+ lsl r0, r0, #0x2
+ ldr r1, ._247 + 12 @ gExperienceTables
+ add r0, r0, r1
+ add r2, r2, r0
+ add r0, r4, #0
+ mov r1, #0x19
+ bl SetMonData
+ add r0, r4, #0
+ bl debug_sub_803F55C
+._244:
+ pop {r4}
+ pop {r0}
+ bx r0
+._248:
+ .align 2, 0
+._247:
+ .word _nakamuraStatic0
+ .word gPlayerParty
+ .word gBaseStats
+ .word gExperienceTables
+
+ thumb_func_end debug_sub_816027C
+
+ thumb_func_start debug_sub_8160308
+debug_sub_8160308:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add sp, sp, #0xffffff8c
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ mov r2, #0x0
+._252:
+ add r1, r2, #1
+ lsl r0, r1, #0x18
+ lsr r5, r0, #0x18
+ mov r8, r1
+ cmp r5, #0x5
+ bhi ._249 @cond_branch
+ mov r0, #0x64
+ mov r9, r0
+ mov r0, r9
+ mul r0, r0, r2
+ ldr r7, ._254 @ gPlayerParty
+ add r6, r0, r7
+._251:
+ add r0, r6, #0
+ mov r1, #0xb
+ mov r2, #0x0
+ bl GetMonData
+ cmp r0, #0
+ bne ._250 @cond_branch
+ add r0, sp, #0x10
+ add r1, r6, #0
+ mov r2, #0x64
+ bl memcpy
+ mov r4, r9
+ mul r4, r4, r5
+ add r4, r4, r7
+ add r0, r6, #0
+ add r1, r4, #0
+ mov r2, #0x64
+ bl memcpy
+ add r0, r4, #0
+ add r1, sp, #0x10
+ mov r2, #0x64
+ bl memcpy
+._250:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x5
+ bls ._251 @cond_branch
+._249:
+ mov r1, r8
+ lsl r0, r1, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x4
+ bls ._252 @cond_branch
+ bl CalculatePlayerPartyCount
+ ldr r4, ._254 + 4 @ gPlayerPartyCount
+ ldrb r1, [r4]
+ cmp r1, #0
+ bne ._253 @cond_branch
+ ldr r0, ._254 @ gPlayerParty
+ str r1, [sp]
+ str r1, [sp, #0x4]
+ str r1, [sp, #0x8]
+ str r1, [sp, #0xc]
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0x20
+ bl CreateMon
+ mov r0, #0x1
+ strb r0, [r4]
+._253:
+ add sp, sp, #0x74
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._255:
+ .align 2, 0
+._254:
+ .word gPlayerParty
+ .word gPlayerPartyCount
+
+ thumb_func_end debug_sub_8160308
+
+ thumb_func_start debug_sub_81603B8
+debug_sub_81603B8:
+ push {r4, r5, r6, r7, lr}
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ mov r0, #0x5
+ bl PlaySE
+ ldr r7, ._259 @ _nakamuraData4
+ ldrb r4, [r7]
+ add r0, r4, #0
+ mov r1, #0x6
+ bl __udivsi3
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r4, #0
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r0, ._259 + 4 @ _843E5D1
+ add r0, r5, r0
+ ldrb r2, [r0]
+ lsl r3, r4, #0x1
+ add r1, r3, #1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r3, r3, #0x2
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ add r0, r2, #0
+ bl Menu_BlankWindowRect
+ cmp r6, #0
+ bne ._256 @cond_branch
+ cmp r4, #0
+ beq ._257 @cond_branch
+ ldrb r0, [r7]
+ sub r0, r0, #0x1
+ b ._258
+._260:
+ .align 2, 0
+._259:
+ .word _nakamuraData4
+ .word _843E5D1
+._257:
+ lsl r0, r5, #0x1
+ add r0, r0, r5
+ lsl r0, r0, #0x1
+ add r0, r0, #0x5
+._258:
+ strb r0, [r7]
+._256:
+ ldr r1, ._264 @ _nakamuraData4
+ cmp r6, #0x1
+ bne ._261 @cond_branch
+ cmp r4, #0x5
+ beq ._262 @cond_branch
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ b ._263
+._265:
+ .align 2, 0
+._264:
+ .word _nakamuraData4
+._262:
+ lsl r0, r5, #0x1
+ add r0, r0, r5
+ lsl r0, r0, #0x1
+._263:
+ strb r0, [r1]
+._261:
+ cmp r6, #0x2
+ bne ._266 @cond_branch
+ cmp r5, #0
+ beq ._267 @cond_branch
+ ldrb r0, [r1]
+ sub r0, r0, #0x6
+ b ._268
+._267:
+ add r0, r4, #0
+ add r0, r0, #0xc
+._268:
+ strb r0, [r1]
+._266:
+ cmp r6, #0x3
+ bne ._271 @cond_branch
+ cmp r5, #0x2
+ beq ._270 @cond_branch
+ ldrb r0, [r1]
+ add r0, r0, #0x6
+ strb r0, [r1]
+ b ._271
+._270:
+ strb r4, [r1]
+._271:
+ ldrb r4, [r1]
+ add r0, r4, #0
+ mov r1, #0x6
+ bl __udivsi3
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ add r0, r4, #0
+ mov r1, #0x6
+ bl __umodsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ ldr r0, ._272 @ _843E5D1
+ add r0, r5, r0
+ ldrb r0, [r0]
+ lsr r1, r1, #0x17
+ add r1, r1, #0x1
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ mov r2, #0xff
+ bl PrintTriangleCursorWithPalette
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._273:
+ .align 2, 0
+._272:
+ .word _843E5D1
+
+ thumb_func_end debug_sub_81603B8
+
+ thumb_func_start debug_sub_8160498
+debug_sub_8160498:
+ push {r4, lr}
+ ldr r1, ._276 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._274 @cond_branch
+ mov r0, #0x0
+ b ._281
+._277:
+ .align 2, 0
+._276:
+ .word gMain
+._274:
+ mov r0, #0x80
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._278 @cond_branch
+ mov r0, #0x1
+ b ._281
+._278:
+ mov r0, #0x20
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._280 @cond_branch
+ mov r0, #0x2
+ b ._281
+._280:
+ mov r0, #0x10
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._282 @cond_branch
+ mov r0, #0x3
+._281:
+ bl debug_sub_81603B8
+ mov r0, #0x0
+ b ._311
+._282:
+ ldrh r1, [r1, #0x30]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._284 @cond_branch
+ ldr r4, ._289 @ _nakamuraData4
+ ldrb r0, [r4]
+ cmp r0, #0x5
+ bhi ._285 @cond_branch
+ mov r1, #0x1
+ bl debug_sub_81601C8
+._285:
+ ldrb r0, [r4]
+ sub r0, r0, #0x6
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._286 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl debug_sub_8160258
+._286:
+ ldrb r0, [r4]
+ sub r0, r0, #0xc
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._306 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ b ._300
+._290:
+ .align 2, 0
+._289:
+ .word _nakamuraData4
+._284:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._291 @cond_branch
+ ldr r4, ._294 @ _nakamuraData4
+ ldrb r0, [r4]
+ cmp r0, #0x5
+ bhi ._304 @cond_branch
+ mov r1, #0x1
+ neg r1, r1
+ b ._293
+._295:
+ .align 2, 0
+._294:
+ .word _nakamuraData4
+._291:
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._296 @cond_branch
+ ldr r4, ._301 @ _nakamuraData4
+ ldrb r0, [r4]
+ cmp r0, #0x5
+ bhi ._297 @cond_branch
+ mov r1, #0xa
+ bl debug_sub_81601C8
+._297:
+ ldrb r0, [r4]
+ sub r0, r0, #0x6
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._298 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl debug_sub_8160258
+._298:
+ ldrb r0, [r4]
+ sub r0, r0, #0xc
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._306 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ b ._300
+._302:
+ .align 2, 0
+._301:
+ .word _nakamuraData4
+._296:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._303 @cond_branch
+ ldr r4, ._308 @ _nakamuraData4
+ ldrb r0, [r4]
+ cmp r0, #0x5
+ bhi ._304 @cond_branch
+ mov r1, #0xa
+ neg r1, r1
+._293:
+ bl debug_sub_81601C8
+._304:
+ ldrb r0, [r4]
+ sub r0, r0, #0x6
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._305 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl debug_sub_8160258
+._305:
+ ldrb r0, [r4]
+ sub r0, r0, #0xc
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x5
+ bhi ._306 @cond_branch
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ neg r1, r1
+._300:
+ bl debug_sub_816027C
+._306:
+ ldrb r0, [r4]
+ mov r1, #0x6
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl debug_sub_816017C
+ mov r0, #0x0
+ b ._311
+._309:
+ .align 2, 0
+._308:
+ .word _nakamuraData4
+._303:
+ mov r0, #0x8
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._310 @cond_branch
+ mov r0, #0x0
+ b ._311
+._310:
+ bl debug_sub_8160308
+ bl CloseMenu
+ mov r0, #0x1
+._311:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8160498
+
+ thumb_func_start debug_sub_816062C
+debug_sub_816062C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add sp, sp, #0xfffffff0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r8, r0
+ mov r0, #0x64
+ mov r4, r8
+ mul r4, r4, r0
+ ldr r0, ._316 @ gPlayerParty
+ add r4, r4, r0
+ add r0, r4, #0
+ mov r1, #0xb
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ add r0, r4, #0
+ bl GetMonGender
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ ldr r1, ._316 + 4 @ gBaseStats
+ lsl r0, r7, #0x3
+ sub r0, r0, r7
+ lsl r0, r0, #0x2
+ add r0, r0, r1
+ ldrb r6, [r0, #0x10]
+ cmp r6, #0
+ beq ._313 @cond_branch
+ cmp r6, #0xfe
+ beq ._313 @cond_branch
+ cmp r6, #0xff
+ bne ._314 @cond_branch
+._313:
+ mov r0, #0x64
+ mov r1, r8
+ mul r1, r1, r0
+ add r0, r1, #0
+ ldr r1, ._316 @ gPlayerParty
+ add r0, r0, r1
+ bl GetMonGender
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._320
+._317:
+ .align 2, 0
+._316:
+ .word gPlayerParty
+ .word gBaseStats
+._314:
+ cmp r2, #0
+ beq ._318 @cond_branch
+ cmp r2, #0xfe
+ beq ._319 @cond_branch
+ mov r0, #0x0
+ b ._320
+._318:
+ mov r6, #0xfe
+ b ._321
+._319:
+ mov r6, #0x0
+._321:
+ mov r0, r8
+ lsl r0, r0, #0x2
+ mov r9, r0
+._322:
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ bl Random
+ lsl r0, r0, #0x10
+ orr r5, r5, r0
+ add r0, r7, #0
+ add r1, r5, #0
+ bl GetGenderFromSpeciesAndPersonality
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, r6
+ bne ._322 @cond_branch
+ mov r0, #0x64
+ mov r4, r8
+ mul r4, r4, r0
+ ldr r0, ._323 @ gPlayerParty
+ add r4, r4, r0
+ add r0, r4, #0
+ mov r1, #0x42
+ bl GetMonData
+ ldr r0, ._323 + 4 @ _nakamuraStatic0
+ add r0, r0, r9
+ ldrh r1, [r0]
+ ldrb r2, [r0, #0x2]
+ mov r0, #0x1
+ str r0, [sp]
+ str r5, [sp, #0x4]
+ mov r0, #0x0
+ str r0, [sp, #0x8]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ mov r3, #0x20
+ bl CreateMon
+ add r0, r6, #0
+._320:
+ add sp, sp, #0x10
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._324:
+ .align 2, 0
+._323:
+ .word gPlayerParty
+ .word _nakamuraStatic0
+
+ thumb_func_end debug_sub_816062C
+
+ thumb_func_start debug_sub_8160714
+debug_sub_8160714:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add sp, sp, #0xfffffff0
+ add r6, r0, #0
+ mov r9, r1
+ mov r7, #0x0
+ mov r0, #0x0
+ mov r8, r0
+ mov r2, #0x0
+ mov r5, #0x0
+._329:
+ add r4, r5, #1
+ lsl r1, r4, #0x18
+ lsr r1, r1, #0x18
+ mov r0, r9
+ str r2, [sp, #0xc]
+ bl GetPokeblockData
+ add r1, r0, #0
+ lsl r0, r5, #0x1
+ add r0, r0, sp
+ strh r1, [r0]
+ ldr r2, [sp, #0xc]
+ cmp r5, #0x5
+ beq ._328 @cond_branch
+ lsl r0, r1, #0x10
+ asr r1, r0, #0x10
+ cmp r1, #0
+ ble ._326 @cond_branch
+ add r0, r7, #1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._326:
+ cmp r1, #0
+ bge ._327 @cond_branch
+ mov r0, r8
+ add r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r8, r0
+._327:
+ cmp r1, #0
+ bne ._328 @cond_branch
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+._328:
+ lsl r0, r4, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x5
+ bls ._329 @cond_branch
+ mov r0, sp
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0x31
+ bgt ._333 @cond_branch
+ mov r0, sp
+ ldrh r0, [r0, #0x2]
+ lsl r0, r0, #0x10
+ asr r0, r0, #0x10
+ cmp r0, #0x31
+ bgt ._333 @cond_branch
+ mov r0, sp
+ mov r4, #0x4
+ ldsh r0, [r0, r4]
+ cmp r0, #0x31
+ bgt ._333 @cond_branch
+ mov r0, sp
+ mov r1, #0x6
+ ldsh r0, [r0, r1]
+ cmp r0, #0x31
+ bgt ._333 @cond_branch
+ mov r0, sp
+ mov r4, #0x8
+ ldsh r0, [r0, r4]
+ cmp r0, #0x31
+ ble ._334 @cond_branch
+._333:
+ ldr r1, ._336 @ ContestStatsText_GoldPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0xe
+ b ._400
+._337:
+ .align 2, 0
+._336:
+ .word ContestStatsText_GoldPokeBlock
+._334:
+ cmp r7, #0x4
+ bne ._338 @cond_branch
+ ldr r1, ._340 @ ContestStatsText_WhitePokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0xd
+ b ._400
+._341:
+ .align 2, 0
+._340:
+ .word ContestStatsText_WhitePokeBlock
+._338:
+ mov r3, #0x0
+ mov r5, #0x0
+._343:
+ lsl r0, r5, #0x1
+ add r0, r0, sp
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0x2
+ bne ._342 @cond_branch
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+._342:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x4
+ bls ._343 @cond_branch
+ cmp r3, #0x3
+ beq ._345 @cond_branch
+ cmp r2, #0x5
+ beq ._345 @cond_branch
+ mov r4, r8
+ cmp r4, #0x4
+ bne ._346 @cond_branch
+._345:
+ ldr r1, ._348 @ ContestStatsText_BlackPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0xc
+ b ._400
+._349:
+ .align 2, 0
+._348:
+ .word ContestStatsText_BlackPokeBlock
+._346:
+ cmp r7, #0x3
+ bne ._350 @cond_branch
+ ldr r1, ._352 @ ContestStatsText_GrayPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0xb
+ b ._400
+._353:
+ .align 2, 0
+._352:
+ .word ContestStatsText_GrayPokeBlock
+._350:
+ cmp r7, #0x2
+ beq ._354 @cond_branch
+ mov r0, r8
+ cmp r0, #0x2
+ bne ._377 @cond_branch
+._354:
+ mov r3, #0x6
+ mov r2, #0x0
+ mov r5, #0x0
+._359:
+ lsl r0, r5, #0x1
+ add r0, r0, sp
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0
+ beq ._358 @cond_branch
+ cmp r3, #0x6
+ bne ._357 @cond_branch
+ add r3, r5, #0
+ b ._358
+._357:
+ add r2, r5, #0
+._358:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x4
+ bls ._359 @cond_branch
+ lsl r0, r3, #0x1
+ mov r4, sp
+ add r1, r4, r0
+ lsl r0, r2, #0x1
+ add r0, r0, sp
+ mov r4, #0x0
+ ldsh r1, [r1, r4]
+ mov r4, #0x0
+ ldsh r0, [r0, r4]
+ cmp r1, r0
+ blt ._360 @cond_branch
+ add r2, r3, #0
+._360:
+ cmp r2, #0
+ bne ._361 @cond_branch
+ ldr r1, ._363 @ ContestStatsText_PurplePokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x6
+ b ._400
+._364:
+ .align 2, 0
+._363:
+ .word ContestStatsText_PurplePokeBlock
+._361:
+ cmp r2, #0x1
+ bne ._365 @cond_branch
+ ldr r1, ._367 @ ContestStatsText_IndigoPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x7
+ b ._400
+._368:
+ .align 2, 0
+._367:
+ .word ContestStatsText_IndigoPokeBlock
+._365:
+ cmp r2, #0x2
+ bne ._369 @cond_branch
+ ldr r1, ._371 @ ContestStatsText_BrownPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x8
+ b ._400
+._372:
+ .align 2, 0
+._371:
+ .word ContestStatsText_BrownPokeBlock
+._369:
+ cmp r2, #0x3
+ bne ._373 @cond_branch
+ ldr r1, ._375 @ ContestStatsText_LiteBluePokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x9
+ b ._400
+._376:
+ .align 2, 0
+._375:
+ .word ContestStatsText_LiteBluePokeBlock
+._373:
+ cmp r2, #0x4
+ bne ._377 @cond_branch
+ ldr r1, ._379 @ ContestStatsText_OlivePokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0xa
+ b ._400
+._380:
+ .align 2, 0
+._379:
+ .word ContestStatsText_OlivePokeBlock
+._377:
+ cmp r7, #0x1
+ beq ._381 @cond_branch
+ mov r0, r8
+ cmp r0, #0x1
+ bne ._399 @cond_branch
+._381:
+ mov r0, sp
+ mov r1, #0x0
+ ldsh r0, [r0, r1]
+ cmp r0, #0
+ beq ._383 @cond_branch
+ ldr r1, ._385 @ ContestStatsText_RedPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x1
+ b ._400
+._386:
+ .align 2, 0
+._385:
+ .word ContestStatsText_RedPokeBlock
+._383:
+ mov r0, sp
+ ldrh r0, [r0, #0x2]
+ cmp r0, #0
+ beq ._387 @cond_branch
+ ldr r1, ._389 @ ContestStatsText_BluePokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x2
+ b ._400
+._390:
+ .align 2, 0
+._389:
+ .word ContestStatsText_BluePokeBlock
+._387:
+ mov r0, sp
+ mov r4, #0x4
+ ldsh r0, [r0, r4]
+ cmp r0, #0
+ beq ._391 @cond_branch
+ ldr r1, ._393 @ ContestStatsText_PinkPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x3
+ b ._400
+._394:
+ .align 2, 0
+._393:
+ .word ContestStatsText_PinkPokeBlock
+._391:
+ mov r0, sp
+ mov r1, #0x6
+ ldsh r0, [r0, r1]
+ cmp r0, #0
+ beq ._395 @cond_branch
+ ldr r1, ._397 @ ContestStatsText_GreenPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x4
+ b ._400
+._398:
+ .align 2, 0
+._397:
+ .word ContestStatsText_GreenPokeBlock
+._395:
+ mov r0, sp
+ mov r4, #0x8
+ ldsh r0, [r0, r4]
+ cmp r0, #0
+ beq ._399 @cond_branch
+ ldr r1, ._401 @ ContestStatsText_YellowPokeBlock
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x5
+ b ._400
+._402:
+ .align 2, 0
+._401:
+ .word ContestStatsText_YellowPokeBlock
+._399:
+ ldr r1, ._403 @ gOtherText_FiveQuestions
+ add r0, r6, #0
+ bl StringCopy
+ mov r0, #0x0
+._400:
+ add sp, sp, #0x10
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._404:
+ .align 2, 0
+._403:
+ .word gOtherText_FiveQuestions
+
+ thumb_func_end debug_sub_8160714
+
+ thumb_func_start debug_sub_816097C
+debug_sub_816097C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add r7, r0, #0
+ lsl r1, r1, #0x10
+ lsr r5, r1, #0x10
+ mov r6, #0x0
+ mov r1, #0x0
+._405:
+ add r0, r7, r6
+ strb r1, [r0]
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x3
+ bls ._405 @cond_branch
+ mov r0, #0xff
+ strb r0, [r7, #0x4]
+ lsl r0, r5, #0x10
+ asr r0, r0, #0x10
+ cmp r0, #0
+ bne ._406 @cond_branch
+ mov r0, #0xa1
+ strb r0, [r7, #0x3]
+ b ._414
+._406:
+ cmp r0, #0
+ ble ._408 @cond_branch
+ mov r4, #0x64
+ mov r0, #0x0
+ mov r8, r0
+ mov r6, #0x0
+._412:
+ lsl r5, r5, #0x10
+ asr r0, r5, #0x10
+ lsl r4, r4, #0x10
+ asr r1, r4, #0x10
+ bl __divsi3
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r1, r8
+ cmp r1, #0
+ bne ._410 @cond_branch
+ cmp r6, #0x2
+ beq ._410 @cond_branch
+ cmp r2, #0
+ beq ._411 @cond_branch
+._410:
+ add r1, r6, r7
+ add r0, r2, #0
+ sub r0, r0, #0x5f
+ strb r0, [r1, #0x1]
+ mov r0, #0x1
+ mov r8, r0
+._411:
+ asr r0, r5, #0x10
+ asr r4, r4, #0x10
+ add r1, r4, #0
+ bl __modsi3
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, #0
+ mov r1, #0xa
+ bl __divsi3
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x2
+ bls ._412 @cond_branch
+ b ._414
+._408:
+ cmp r0, #0
+ bge ._414 @cond_branch
+ neg r0, r0
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ mov r4, #0x64
+ mov r1, #0x0
+ mov r8, r1
+ mov r6, #0x0
+._419:
+ lsl r5, r5, #0x10
+ asr r0, r5, #0x10
+ lsl r4, r4, #0x10
+ asr r1, r4, #0x10
+ bl __divsi3
+ lsl r0, r0, #0x10
+ lsr r2, r0, #0x10
+ mov r1, r8
+ lsl r0, r1, #0x10
+ add r3, r0, #0
+ cmp r3, #0
+ bne ._416 @cond_branch
+ cmp r6, #0x2
+ beq ._416 @cond_branch
+ cmp r2, #0
+ beq ._417 @cond_branch
+._416:
+ add r1, r6, r7
+ add r0, r2, #0
+ sub r0, r0, #0x5f
+ strb r0, [r1, #0x1]
+ cmp r3, #0
+ bne ._418 @cond_branch
+ mov r0, #0xae
+ strb r0, [r1]
+._418:
+ mov r0, #0x1
+ mov r8, r0
+._417:
+ asr r0, r5, #0x10
+ asr r4, r4, #0x10
+ add r1, r4, #0
+ bl __modsi3
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ add r0, r4, #0
+ mov r1, #0xa
+ bl __divsi3
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r0, r6, #1
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x2
+ bls ._419 @cond_branch
+._414:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_816097C
+
+ thumb_func_start debug_sub_8160A80
+debug_sub_8160A80:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r2, r0, #0
+ ldr r1, ._422 @ _nakamuraStatic18
+ cmp r0, #0
+ bne ._420 @cond_branch
+ ldr r4, ._422 + 4 @ gStringVar1
+ ldrb r1, [r1, #0x1]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0x3
+ bl Menu_PrintText
+ b ._440
+._423:
+ .align 2, 0
+._422:
+ .word _nakamuraStatic18
+ .word gStringVar1
+._420:
+ cmp r0, #0x1
+ bne ._424 @cond_branch
+ ldr r4, ._426 @ gStringVar1
+ ldrb r1, [r1, #0x2]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0x5
+ bl Menu_PrintText
+ b ._440
+._427:
+ .align 2, 0
+._426:
+ .word gStringVar1
+._424:
+ cmp r0, #0x2
+ bne ._428 @cond_branch
+ ldr r4, ._430 @ gStringVar1
+ ldrb r1, [r1, #0x3]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0x7
+ bl Menu_PrintText
+ b ._440
+._431:
+ .align 2, 0
+._430:
+ .word gStringVar1
+._428:
+ cmp r0, #0x3
+ bne ._432 @cond_branch
+ ldr r4, ._434 @ gStringVar1
+ ldrb r1, [r1, #0x4]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0x9
+ bl Menu_PrintText
+ b ._440
+._435:
+ .align 2, 0
+._434:
+ .word gStringVar1
+._432:
+ cmp r0, #0x4
+ bne ._436 @cond_branch
+ ldr r4, ._438 @ gStringVar1
+ ldrb r1, [r1, #0x5]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0xb
+ bl Menu_PrintText
+ b ._440
+._439:
+ .align 2, 0
+._438:
+ .word gStringVar1
+._436:
+ cmp r2, #0x5
+ bne ._440 @cond_branch
+ ldr r4, ._441 @ gStringVar1
+ ldrb r1, [r1, #0x6]
+ add r0, r4, #0
+ bl debug_sub_816097C
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0xd
+ bl Menu_PrintText
+._440:
+ pop {r4}
+ pop {r0}
+ bx r0
+._442:
+ .align 2, 0
+._441:
+ .word gStringVar1
+
+ thumb_func_end debug_sub_8160A80
+
+ thumb_func_start debug_sub_8160B50
+debug_sub_8160B50:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r3, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r4, r1, #0
+ ldr r2, ._445 @ _nakamuraStatic18
+ cmp r0, #0
+ bne ._443 @cond_branch
+ ldrb r0, [r2, #0x1]
+ add r0, r0, r1
+ strb r0, [r2, #0x1]
+ b ._455
+._446:
+ .align 2, 0
+._445:
+ .word _nakamuraStatic18
+._443:
+ cmp r0, #0x1
+ bne ._447 @cond_branch
+ ldrb r0, [r2, #0x2]
+ add r0, r0, r1
+ strb r0, [r2, #0x2]
+ b ._455
+._447:
+ cmp r0, #0x2
+ bne ._449 @cond_branch
+ ldrb r0, [r2, #0x3]
+ add r0, r0, r1
+ strb r0, [r2, #0x3]
+ b ._455
+._449:
+ cmp r0, #0x3
+ bne ._451 @cond_branch
+ ldrb r0, [r2, #0x4]
+ add r0, r0, r1
+ strb r0, [r2, #0x4]
+ b ._455
+._451:
+ cmp r0, #0x4
+ bne ._453 @cond_branch
+ ldrb r0, [r2, #0x5]
+ add r0, r0, r1
+ strb r0, [r2, #0x5]
+ b ._455
+._453:
+ cmp r3, #0x5
+ bne ._455 @cond_branch
+ ldrb r0, [r2, #0x6]
+ add r0, r0, r4
+ strb r0, [r2, #0x6]
+._455:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_8160B50
+
+ thumb_func_start debug_sub_8160BB0
+debug_sub_8160BB0:
+ push {r4, r5, lr}
+ ldr r5, ._456 @ gStringVar1
+ ldr r4, ._456 + 4 @ _nakamuraStatic18
+ add r0, r5, #0
+ add r1, r4, #0
+ bl debug_sub_8160714
+ strb r0, [r4]
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x8
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._457:
+ .align 2, 0
+._456:
+ .word gStringVar1
+ .word _nakamuraStatic18
+
+ thumb_func_end debug_sub_8160BB0
+
+ thumb_func_start debug_sub_8160BE4
+debug_sub_8160BE4:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xc
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ bl debug_sub_8160BB0
+ ldr r0, ._459 @ gContestStatsText_Spicy
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ ldr r0, ._459 + 4 @ gContestStatsText_Dry
+ mov r1, #0x2
+ mov r2, #0x5
+ bl Menu_PrintText
+ ldr r0, ._459 + 8 @ gContestStatsText_Sweet
+ mov r1, #0x2
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r0, ._459 + 12 @ gContestStatsText_Bitter
+ mov r1, #0x2
+ mov r2, #0x9
+ bl Menu_PrintText
+ ldr r0, ._459 + 16 @ gContestStatsText_Sour
+ mov r1, #0x2
+ mov r2, #0xb
+ bl Menu_PrintText
+ ldr r0, ._459 + 20 @ gContestStatsText_Tasty
+ mov r1, #0x2
+ mov r2, #0xd
+ bl Menu_PrintText
+ mov r4, #0x0
+._458:
+ add r0, r4, #0
+ bl debug_sub_8160A80
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ bls ._458 @cond_branch
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x6
+ bl InitMenu
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r0}
+ bx r0
+._460:
+ .align 2, 0
+._459:
+ .word gContestStatsText_Spicy
+ .word gContestStatsText_Dry
+ .word gContestStatsText_Sweet
+ .word gContestStatsText_Bitter
+ .word gContestStatsText_Sour
+ .word gContestStatsText_Tasty
+
+ thumb_func_end debug_sub_8160BE4
+
+ thumb_func_start debug_sub_8160C7C
+debug_sub_8160C7C:
+ push {r4, lr}
+ ldr r2, ._469 @ _nakamuraStatic18
+ mov r1, #0x0
+ ldrb r0, [r2]
+ cmp r0, #0xc
+ bne ._467 @cond_branch
+ ldrb r0, [r2, #0x1]
+ cmp r0, #0x2
+ bne ._462 @cond_branch
+ mov r1, #0x1
+._462:
+ ldrb r0, [r2, #0x3]
+ cmp r0, #0x2
+ bne ._463 @cond_branch
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+._463:
+ ldrb r0, [r2, #0x4]
+ cmp r0, #0x2
+ bne ._464 @cond_branch
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+._464:
+ ldrb r0, [r2, #0x2]
+ cmp r0, #0x2
+ bne ._465 @cond_branch
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+._465:
+ ldrb r0, [r2, #0x5]
+ cmp r0, #0x2
+ bne ._466 @cond_branch
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+._466:
+ cmp r1, #0x3
+ beq ._467 @cond_branch
+ mov r0, #0x2
+ strb r0, [r2, #0x1]
+ strb r0, [r2, #0x3]
+ strb r0, [r2, #0x4]
+._467:
+ add r0, r2, #0
+ bl sub_810CA34
+ bl debug_sub_8160BB0
+ mov r4, #0x0
+._468:
+ add r0, r4, #0
+ bl debug_sub_8160A80
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ bls ._468 @cond_branch
+ pop {r4}
+ pop {r0}
+ bx r0
+._470:
+ .align 2, 0
+._469:
+ .word _nakamuraStatic18
+
+ thumb_func_end debug_sub_8160C7C
+
+ thumb_func_start debug_sub_8160CF4
+debug_sub_8160CF4:
+ push {lr}
+ ldr r2, ._473 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._471 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ b ._472
+._474:
+ .align 2, 0
+._473:
+ .word gMain
+._471:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._475 @cond_branch
+ mov r0, #0x1
+._472:
+ bl Menu_MoveCursor
+ mov r0, #0x0
+ b ._484
+._475:
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._477 @cond_branch
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ neg r1, r1
+ b ._478
+._477:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._479 @cond_branch
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+._478:
+ bl debug_sub_8160B50
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl debug_sub_8160A80
+ bl debug_sub_8160BB0
+ mov r0, #0x0
+ b ._484
+._479:
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._481 @cond_branch
+ bl debug_sub_8160C7C
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x0
+ b ._484
+._481:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._483 @cond_branch
+ mov r0, #0x0
+ b ._484
+._483:
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl CloseMenu
+ mov r0, #0x1
+._484:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8160CF4
+
+ thumb_func_start debug_sub_8160D98
+debug_sub_8160D98:
+ push {lr}
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl debug_sub_8160BE4
+ ldr r1, ._485 @ gMenuCallback
+ ldr r0, ._485 + 4 @ debug_sub_8160CF4
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._486:
+ .align 2, 0
+._485:
+ .word gMenuCallback
+ .word debug_sub_8160CF4+1
+
+ thumb_func_end debug_sub_8160D98
+
+ thumb_func_start debug_sub_8160DC0
+debug_sub_8160DC0:
+ push {lr}
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x16
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._487 @ gOtherText_Slash
+ mov r1, #0xb
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._487 + 4 @ Str_843E5F2
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ ldr r0, ._487 + 8 @ Str_843E5FB
+ mov r1, #0x2
+ mov r2, #0x5
+ bl Menu_PrintText
+ ldr r0, ._487 + 12 @ Str_843E606
+ mov r1, #0x2
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r0, ._487 + 16 @ Str_843E611
+ mov r1, #0x2
+ mov r2, #0x9
+ bl Menu_PrintText
+ ldr r0, ._487 + 20 @ Str_843E61C
+ mov r1, #0x2
+ mov r2, #0xb
+ bl Menu_PrintText
+ ldr r0, ._487 + 24 @ Str_843E627
+ mov r1, #0x2
+ mov r2, #0xd
+ bl Menu_PrintText
+ ldr r0, ._487 + 28 @ Str_843E637
+ mov r1, #0x2
+ mov r2, #0xf
+ bl Menu_PrintText
+ ldr r0, ._487 + 32 @ Str_843E632
+ mov r1, #0x2
+ mov r2, #0x11
+ bl Menu_PrintText
+ pop {r0}
+ bx r0
+._488:
+ .align 2, 0
+._487:
+ .word gOtherText_Slash
+ .word Str_843E5F2
+ .word Str_843E5FB
+ .word Str_843E606
+ .word Str_843E611
+ .word Str_843E61C
+ .word Str_843E627
+ .word Str_843E637
+ .word Str_843E632
+
+ thumb_func_end debug_sub_8160DC0
+
+ thumb_func_start debug_sub_8160E50
+debug_sub_8160E50:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0xa
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r5, ._489 @ gStringVar1
+ add r0, r6, #0
+ mov r1, #0x2
+ add r2, r5, #0
+ bl GetMonData
+ add r0, r5, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r0, #0xc
+ mov r1, #0x1
+ mov r2, #0x15
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ add r0, r6, #0
+ mov r1, #0xb
+ bl GetMonData
+ mov r1, #0xb
+ mul r0, r0, r1
+ ldr r1, ._489 + 4 @ gSpeciesNames
+ add r0, r0, r1
+ mov r1, #0xc
+ mov r2, #0x1
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1a
+ bl GetMonData
+ add r4, r0, #0
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0x3
+ mov r2, #0x11
+ mov r3, #0x4
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0x3
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1b
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r4, r4, r1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0x5
+ mov r2, #0x11
+ mov r3, #0x6
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0x5
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1c
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r4, r4, r1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0x7
+ mov r2, #0x11
+ mov r3, #0x8
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0x7
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1d
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r4, r4, r1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0x9
+ mov r2, #0x11
+ mov r3, #0xa
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0x9
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1e
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r4, r4, r1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0xb
+ mov r2, #0x11
+ mov r3, #0xc
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0xb
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x1f
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r4, r4, r1
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0xd
+ mov r2, #0x11
+ mov r3, #0xe
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0xd
+ bl Menu_PrintText
+ add r0, r5, #0
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0xf
+ mov r2, #0x11
+ mov r3, #0x10
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0xf
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x20
+ bl GetMonData
+ add r1, r0, #0
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ mov r0, #0xd
+ mov r1, #0x11
+ mov r2, #0x11
+ mov r3, #0x12
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0xd
+ mov r2, #0x11
+ bl Menu_PrintText
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._490:
+ .align 2, 0
+._489:
+ .word gStringVar1
+ .word gSpeciesNames
+
+ thumb_func_end debug_sub_8160E50
+
+ thumb_func_start debug_sub_8161028
+debug_sub_8161028:
+ push {r4, r5, r6, lr}
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ bne ._491 @cond_branch
+ ldr r0, ._496 @ _nakamuraData5
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne ._492 @cond_branch
+ mov r5, #0x5
+._494:
+ lsl r0, r5, #0x10
+ asr r4, r0, #0x10
+ mov r0, #0x64
+ mul r0, r0, r4
+ ldr r1, ._496 + 4 @ gPlayerParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ bne ._493 @cond_branch
+ sub r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ cmp r0, #0
+ bge ._494 @cond_branch
+._492:
+ ldr r1, ._496 @ _nakamuraData5
+ ldrb r0, [r1]
+ add r0, r0, r6
+ strb r0, [r1]
+ b ._506
+._497:
+ .align 2, 0
+._496:
+ .word _nakamuraData5
+ .word gPlayerParty
+._491:
+ cmp r1, #0x1
+ bne ._506 @cond_branch
+ ldr r4, ._501 @ _nakamuraData5
+ ldrb r0, [r4]
+ add r0, r0, r6
+ strb r0, [r4]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x6
+ bne ._499 @cond_branch
+ mov r0, #0x0
+ b ._500
+._502:
+ .align 2, 0
+._501:
+ .word _nakamuraData5
+._493:
+ ldr r0, ._504 @ _nakamuraData5
+ strb r5, [r0]
+ b ._506
+._505:
+ .align 2, 0
+._504:
+ .word _nakamuraData5
+._499:
+ ldrb r1, [r4]
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._507 @ gPlayerParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ bne ._506 @cond_branch
+._500:
+ strb r0, [r4]
+._506:
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._508:
+ .align 2, 0
+._507:
+ .word gPlayerParty
+
+ thumb_func_end debug_sub_8161028
+
+ thumb_func_start debug_sub_81610BC
+debug_sub_81610BC:
+ push {lr}
+ ldr r0, ._511 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._509 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ b ._510
+._512:
+ .align 2, 0
+._511:
+ .word gMain
+._509:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._513 @cond_branch
+ mov r0, #0x1
+._510:
+ bl debug_sub_8161028
+ ldr r0, ._515 @ _nakamuraData5
+ ldrb r1, [r0]
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._515 + 4 @ gPlayerParty
+ add r0, r0, r1
+ bl debug_sub_8160E50
+ mov r0, #0x0
+ b ._518
+._516:
+ .align 2, 0
+._515:
+ .word _nakamuraData5
+ .word gPlayerParty
+._513:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._517 @cond_branch
+ mov r0, #0x0
+ b ._518
+._517:
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl CloseMenu
+ mov r0, #0x1
+._518:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_81610BC
+
+ thumb_func_start DebugMenu_EffortValues
+DebugMenu_EffortValues:
+ push {lr}
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ ldr r1, ._519 @ _nakamuraData5
+ mov r0, #0x0
+ strb r0, [r1]
+ bl debug_sub_8160DC0
+ ldr r0, ._519 + 4 @ gPlayerParty
+ bl debug_sub_8160E50
+ ldr r1, ._519 + 8 @ gMenuCallback
+ ldr r0, ._519 + 12 @ debug_sub_81610BC
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._520:
+ .align 2, 0
+._519:
+ .word _nakamuraData5
+ .word gPlayerParty
+ .word gMenuCallback
+ .word debug_sub_81610BC+1
+
+ thumb_func_end DebugMenu_EffortValues
+
+ thumb_func_start debug_sub_8161160
+debug_sub_8161160:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ mov r7, #0x0
+ ldr r2, ._523 @ _nakamuraData6
+ ldr r1, ._523 + 4 @ _nakamuraData8
+ ldrh r0, [r2]
+ ldrh r3, [r1]
+ cmp r0, r3
+ bhi ._521 @cond_branch
+ add r6, r0, #0
+ ldrh r5, [r1]
+ b ._522
+._524:
+ .align 2, 0
+._523:
+ .word _nakamuraData6
+ .word _nakamuraData8
+._521:
+ ldrh r6, [r1]
+ ldrh r5, [r2]
+._522:
+ mov r4, #0x0
+ ldr r0, ._529 @ _nakamuraDataA
+ ldrh r0, [r0]
+ cmp r4, r0
+ bcs ._525 @cond_branch
+ ldr r0, ._529 + 4 @ _nakamuraDataC
+ mov r8, r0
+._528:
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r2, r8
+ ldrh r1, [r2]
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, r6
+ bcc ._527 @cond_branch
+ cmp r0, r5
+ bhi ._527 @cond_branch
+ add r0, r7, #1
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+._527:
+ add r4, r4, #0x1
+ ldr r0, ._529 @ _nakamuraDataA
+ ldrh r0, [r0]
+ cmp r4, r0
+ bcc ._528 @cond_branch
+._525:
+ add r0, r7, #0
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._530:
+ .align 2, 0
+._529:
+ .word _nakamuraDataA
+ .word _nakamuraDataC
+
+ thumb_func_end debug_sub_8161160
+
+ thumb_func_start debug_sub_81611D8
+debug_sub_81611D8:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xf
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._531 @ Str_843E642
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._531 + 4 @ Str_843E647
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ ldr r0, ._531 + 8 @ Str_843E65A
+ mov r1, #0x2
+ mov r2, #0x5
+ bl Menu_PrintText
+ ldr r0, ._531 + 12 @ Str_843E64C
+ mov r1, #0x2
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r0, ._531 + 16 @ Str_843E651
+ mov r1, #0x2
+ mov r2, #0x9
+ bl Menu_PrintText
+ ldr r0, ._531 + 20 @ Str_843E655
+ mov r1, #0xd
+ mov r2, #0x9
+ bl Menu_PrintText
+ ldr r4, ._531 + 24 @ Str_843E658
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0x1
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0x3
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0x5
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0x7
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xc
+ mov r2, #0x9
+ bl Menu_PrintText
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xe
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x4
+ bl InitMenu
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r0}
+ bx r0
+._532:
+ .align 2, 0
+._531:
+ .word Str_843E642
+ .word Str_843E647
+ .word Str_843E65A
+ .word Str_843E64C
+ .word Str_843E651
+ .word Str_843E655
+ .word Str_843E658
+
+ thumb_func_end debug_sub_81611D8
+
+ thumb_func_start debug_sub_8161290
+debug_sub_8161290:
+ push {r4, lr}
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ ldr r4, ._533 @ gStringVar1
+ add r0, r4, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x8
+ mov r2, #0x9
+ bl Menu_PrintText
+ pop {r4}
+ pop {r0}
+ bx r0
+._534:
+ .align 2, 0
+._533:
+ .word gStringVar1
+
+ thumb_func_end debug_sub_8161290
+
+ thumb_func_start debug_sub_81612B8
+debug_sub_81612B8:
+ push {r4, r5, lr}
+ add r4, r2, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x18
+ ldrh r2, [r0]
+ add r1, r1, r2
+ strh r1, [r0]
+ ldr r5, ._535 @ gStringVar1
+ ldrh r1, [r0]
+ add r0, r5, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r5, #0
+ mov r1, #0x8
+ add r2, r4, #0
+ bl Menu_PrintText
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._536:
+ .align 2, 0
+._535:
+ .word gStringVar1
+
+ thumb_func_end debug_sub_81612B8
+
+ thumb_func_start debug_sub_81612EC
+debug_sub_81612EC:
+ push {r4, r5, lr}
+ ldr r2, ._540 @ gMain
+ ldrh r1, [r2, #0x2c]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ mov r5, #0x1
+ cmp r0, #0
+ beq ._537 @cond_branch
+ mov r5, #0x64
+._537:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._538 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ b ._539
+._541:
+ .align 2, 0
+._540:
+ .word gMain
+._538:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._542 @cond_branch
+ mov r0, #0x1
+._539:
+ bl Menu_MoveCursor
+._565:
+ mov r0, #0x0
+ b ._543
+._542:
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._544 @cond_branch
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+ cmp r4, #0
+ bne ._545 @cond_branch
+ ldr r0, ._550 @ _nakamuraData6
+ neg r1, r5
+ mov r2, #0x1
+ bl debug_sub_81612B8
+._545:
+ cmp r4, #0x1
+ bne ._546 @cond_branch
+ ldr r0, ._550 + 4 @ _nakamuraData8
+ neg r1, r5
+ mov r2, #0x3
+ bl debug_sub_81612B8
+._546:
+ cmp r4, #0x2
+ bne ._547 @cond_branch
+ ldr r0, ._550 + 8 @ _nakamuraDataC
+ neg r1, r5
+ mov r2, #0x5
+ bl debug_sub_81612B8
+._547:
+ cmp r4, #0x3
+ bne ._565 @cond_branch
+ ldr r0, ._550 + 12 @ _nakamuraDataA
+ neg r1, r5
+ mov r2, #0x7
+ bl debug_sub_81612B8
+ b ._565
+._551:
+ .align 2, 0
+._550:
+ .word _nakamuraData6
+ .word _nakamuraData8
+ .word _nakamuraDataC
+ .word _nakamuraDataA
+._544:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._552 @cond_branch
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ asr r4, r0, #0x18
+ cmp r4, #0
+ bne ._553 @cond_branch
+ ldr r0, ._558 @ _nakamuraData6
+ add r1, r5, #0
+ mov r2, #0x1
+ bl debug_sub_81612B8
+._553:
+ cmp r4, #0x1
+ bne ._554 @cond_branch
+ ldr r0, ._558 + 4 @ _nakamuraData8
+ add r1, r5, #0
+ mov r2, #0x3
+ bl debug_sub_81612B8
+._554:
+ cmp r4, #0x2
+ bne ._555 @cond_branch
+ ldr r0, ._558 + 8 @ _nakamuraDataC
+ add r1, r5, #0
+ mov r2, #0x5
+ bl debug_sub_81612B8
+._555:
+ cmp r4, #0x3
+ bne ._565 @cond_branch
+ ldr r0, ._558 + 12 @ _nakamuraDataA
+ add r1, r5, #0
+ mov r2, #0x7
+ bl debug_sub_81612B8
+ b ._565
+._559:
+ .align 2, 0
+._558:
+ .word _nakamuraData6
+ .word _nakamuraData8
+ .word _nakamuraDataC
+ .word _nakamuraDataA
+._552:
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._560 @cond_branch
+ ldr r0, ._563 @ _nakamuraDataC
+ ldrh r0, [r0]
+ cmp r0, #0
+ beq ._565 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ bl debug_sub_8161160
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl debug_sub_8161290
+ b ._565
+._564:
+ .align 2, 0
+._563:
+ .word _nakamuraDataC
+._560:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._565 @cond_branch
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl CloseMenu
+ mov r0, #0x1
+._543:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_81612EC
+
+ thumb_func_start DebugMenu_RandomNumberTest
+DebugMenu_RandomNumberTest:
+ push {lr}
+ ldr r0, ._566 @ _nakamuraData6
+ mov r1, #0x0
+ strh r1, [r0]
+ ldr r0, ._566 + 4 @ _nakamuraData8
+ strh r1, [r0]
+ ldr r0, ._566 + 8 @ _nakamuraDataC
+ strh r1, [r0]
+ ldr r0, ._566 + 12 @ _nakamuraDataA
+ strh r1, [r0]
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_EraseWindowRect
+ bl debug_sub_81611D8
+ ldr r1, ._566 + 16 @ gMenuCallback
+ ldr r0, ._566 + 20 @ debug_sub_81612EC
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._567:
+ .align 2, 0
+._566:
+ .word _nakamuraData6
+ .word _nakamuraData8
+ .word _nakamuraDataC
+ .word _nakamuraDataA
+ .word gMenuCallback
+ .word debug_sub_81612EC+1
+
+ thumb_func_end DebugMenu_RandomNumberTest
+
+ .align 2, 0
+
+.endif
diff --git a/asm/nohara_debug_menu.s b/asm/nohara_debug_menu.s
new file mode 100644
index 000000000..1bc077b90
--- /dev/null
+++ b/asm/nohara_debug_menu.s
@@ -0,0 +1,2198 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ .text
+
+ thumb_func_start InitNoharaDebugMenu
+InitNoharaDebugMenu:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x13
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._1 @ gUnknown_Debug_083C4938
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x12
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._1 + 4 @ gMenuCallback
+ ldr r0, ._1 + 8 @ debug_sub_808F414
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._2:
+ .align 2, 0
+._1:
+ .word gUnknown_Debug_083C4938
+ .word gMenuCallback
+ .word debug_sub_808F414+1
+
+ thumb_func_end InitNoharaDebugMenu
+
+ thumb_func_start debug_sub_808F414
+debug_sub_808F414:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._3 @cond_branch
+ add r0, r0, #0x1
+ cmp r1, r0
+ beq ._4 @cond_branch
+ ldr r2, ._6 @ gMenuCallback
+ ldr r0, ._6 + 4 @ gUnknown_Debug_083C4938
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+._3:
+ mov r0, #0x0
+ b ._5
+._7:
+ .align 2, 0
+._6:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C4938
+._4:
+ bl CloseMenu
+ mov r0, #0x1
+._5:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808F414
+
+ thumb_func_start NoharaDebugMenu_TV
+NoharaDebugMenu_TV:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ ldr r1, ._8 @ gDebug_03000726
+ mov r0, #0x0
+ strb r0, [r1]
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xa
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._8 + 4 @ gUnknown_Debug_083C4B8C
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x9
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._8 + 8 @ gMenuCallback
+ ldr r0, ._8 + 12 @ debug_sub_808F4AC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._9:
+ .align 2, 0
+._8:
+ .word gDebug_03000726
+ .word gUnknown_Debug_083C4B8C
+ .word gMenuCallback
+ .word debug_sub_808F4AC+1
+
+ thumb_func_end NoharaDebugMenu_TV
+
+ thumb_func_start debug_sub_808F4AC
+debug_sub_808F4AC:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._10 @cond_branch
+ add r0, r0, #0x1
+ cmp r1, r0
+ beq ._11 @cond_branch
+ ldr r2, ._13 @ gMenuCallback
+ ldr r0, ._13 + 4 @ gUnknown_Debug_083C4B8C
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+._10:
+ mov r0, #0x0
+ b ._12
+._14:
+ .align 2, 0
+._13:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C4B8C
+._11:
+ bl CloseMenu
+ mov r0, #0x1
+._12:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808F4AC
+
+ thumb_func_start debug_sub_808F4EC
+debug_sub_808F4EC:
+ push {lr}
+ bl debug_sub_808F6BC
+ ldr r0, ._15 @ gUnknown_Debug_083C4980
+ bl sub_8071F40
+ mov r0, #0x3
+ mov r1, #0x3
+ mov r2, #0x1
+ bl DisplayYesNoMenu
+ ldr r1, ._15 + 4 @ gMenuCallback
+ ldr r0, ._15 + 8 @ debug_sub_808F648
+ str r0, [r1]
+ pop {r0}
+ bx r0
+._16:
+ .align 2, 0
+._15:
+ .word gUnknown_Debug_083C4980
+ .word gMenuCallback
+ .word debug_sub_808F648+1
+
+ thumb_func_end debug_sub_808F4EC
+
+ thumb_func_start debug_sub_808F518
+debug_sub_808F518:
+ push {r4, lr}
+ mov r2, #0x0
+ ldr r4, ._20 @ gSaveBlock1
+ ldr r3, ._20 + 4 @ 0x2738
+._19:
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ lsl r0, r0, #0x2
+ add r1, r0, r4
+ add r0, r1, r3
+ ldrb r0, [r0]
+ sub r0, r0, #0x15
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x13
+ bhi ._18 @cond_branch
+ ldr r0, ._20 + 8 @ 0x2739
+ add r1, r1, r0
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._18 @cond_branch
+ mov r0, #0x1
+ strb r0, [r1]
+._18:
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x17
+ bls ._19 @cond_branch
+ pop {r4}
+ pop {r0}
+ bx r0
+._21:
+ .align 2, 0
+._20:
+ .word gSaveBlock1
+ .word 0x2738
+ .word 0x2739
+
+ thumb_func_end debug_sub_808F518
+
+ thumb_func_start debug_sub_808F560
+debug_sub_808F560:
+ push {r4, lr}
+ mov r1, #0x0
+ ldr r4, ._23 @ gSaveBlock1
+ ldr r3, ._23 + 4 @ 0x2739
+ mov r2, #0x0
+._22:
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r4
+ add r0, r0, r3
+ strb r2, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x17
+ bls ._22 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r4}
+ pop {r1}
+ bx r1
+._24:
+ .align 2, 0
+._23:
+ .word gSaveBlock1
+ .word 0x2739
+
+ thumb_func_end debug_sub_808F560
+
+ thumb_func_start debug_sub_808F594
+debug_sub_808F594:
+ push {r4, r5, r6, lr}
+ mov r2, #0x0
+ ldr r6, ._27 @ gSaveBlock1
+ ldr r5, ._27 + 4 @ 0x2738
+ ldr r4, ._27 + 8 @ 0x2739
+ mov r3, #0x1
+._26:
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ lsl r0, r0, #0x2
+ add r1, r0, r6
+ add r0, r1, r5
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._25 @cond_branch
+ add r0, r1, r4
+ strb r3, [r0]
+._25:
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x17
+ bls ._26 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._28:
+ .align 2, 0
+._27:
+ .word gSaveBlock1
+ .word 0x2738
+ .word 0x2739
+
+ thumb_func_end debug_sub_808F594
+
+ thumb_func_start debug_sub_808F5D8
+debug_sub_808F5D8:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ mov r4, #0x0
+ ldr r6, ._30 @ gStringVar1
+ ldr r7, ._30 + 4 @ gUnknown_Debug_083C4BD4
+ add r0, r7, #1
+ mov r8, r0
+._29:
+ ldr r5, ._30 + 8 @ gSpecialVar_0x8004
+ strh r4, [r5]
+ bl GetSlotMachineId
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r6, #0
+ mov r2, #0x0
+ mov r3, #0x1
+ bl ConvertIntToDecimalStringN
+ lsl r0, r4, #0x1
+ add r0, r0, r4
+ lsl r0, r0, #0x2
+ add r1, r0, r7
+ ldrb r1, [r1]
+ add r0, r0, r8
+ ldrb r2, [r0]
+ add r0, r6, #0
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xb
+ bls ._29 @cond_branch
+ mov r0, #0x0
+ strh r0, [r5]
+ ldr r1, ._30 + 12 @ gMenuCallback
+ ldr r0, ._30 + 16 @ debug_sub_8090278
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._31:
+ .align 2, 0
+._30:
+ .word gStringVar1
+ .word gUnknown_Debug_083C4BD4
+ .word gSpecialVar_0x8004
+ .word gMenuCallback
+ .word debug_sub_8090278+1
+
+ thumb_func_end debug_sub_808F5D8
+
+ thumb_func_start debug_sub_808F648
+debug_sub_808F648:
+ push {lr}
+ ldr r0, ._35 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._32 @cond_branch
+ mov r0, #0xa
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_EraseWindowRect
+ ldr r0, ._35 + 4 @ gDebug_03000726
+ ldrb r1, [r0]
+ mov r2, #0x1
+ eor r1, r1, r2
+ strb r1, [r0]
+ cmp r1, #0
+ beq ._33 @cond_branch
+ bl debug_sub_808F7B4
+ b ._40
+._36:
+ .align 2, 0
+._35:
+ .word gMain
+ .word gDebug_03000726
+._33:
+ bl debug_sub_808F6BC
+ b ._40
+._32:
+ bl Menu_ProcessInputNoWrap_
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._43 @cond_branch
+ cmp r1, r0
+ bgt ._39 @cond_branch
+ sub r0, r0, #0x1
+ cmp r1, r0
+ beq ._40 @cond_branch
+ b ._43
+._39:
+ cmp r1, #0
+ beq ._42 @cond_branch
+ b ._43
+._40:
+ mov r0, #0x0
+ b ._44
+._42:
+ bl debug_sub_808F518
+._43:
+ bl CloseMenu
+ mov r0, #0x1
+._44:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808F648
+
+ thumb_func_start debug_sub_808F6BC
+debug_sub_808F6BC:
+ push {r4, r5, r6, lr}
+ mov r4, #0x0
+ ldr r5, ._48 @ gStringVar1
+ ldr r6, ._48 + 4 @ gSaveBlock1
+._45:
+ lsl r0, r4, #0x3
+ add r0, r0, r4
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldr r1, ._48 + 8 @ 0x2738
+ add r0, r0, r1
+ ldrb r1, [r0]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ lsl r1, r4, #0x19
+ mov r0, #0xa0
+ lsl r0, r0, #0x14
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x0
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ bls ._45 @cond_branch
+ mov r4, #0x5
+ ldr r5, ._48 @ gStringVar1
+ ldr r6, ._48 + 4 @ gSaveBlock1
+._50:
+ lsl r0, r4, #0x3
+ add r0, r0, r4
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldr r1, ._48 + 8 @ 0x2738
+ add r0, r0, r1
+ ldrb r1, [r0]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ cmp r4, #0xe
+ bhi ._46 @cond_branch
+ lsl r1, r4, #0x19
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x3
+ bl Menu_PrintText
+ b ._47
+._49:
+ .align 2, 0
+._48:
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x2738
+._46:
+ lsl r1, r4, #0x19
+ mov r0, #0xec
+ lsl r0, r0, #0x18
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x6
+ bl Menu_PrintText
+._47:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x17
+ bls ._50 @cond_branch
+ mov r4, #0x0
+ ldr r5, ._53 @ gStringVar1
+._55:
+ ldr r0, ._53 + 4 @ gSaveBlock1
+ lsl r1, r4, #0x2
+ add r1, r1, r0
+ ldr r0, ._53 + 8 @ 0x2abc
+ add r1, r1, r0
+ ldrb r1, [r1]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ cmp r4, #0x7
+ bhi ._51 @cond_branch
+ lsl r1, r4, #0x19
+ mov r0, #0xa0
+ lsl r0, r0, #0x14
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x9
+ bl Menu_PrintText
+ b ._52
+._54:
+ .align 2, 0
+._53:
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x2abc
+._51:
+ lsl r1, r4, #0x19
+ mov r0, #0xfa
+ lsl r0, r0, #0x18
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0xc
+ bl Menu_PrintText
+._52:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xf
+ bls ._55 @cond_branch
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808F6BC
+
+ thumb_func_start debug_sub_808F7B4
+debug_sub_808F7B4:
+ push {r4, r5, r6, lr}
+ mov r4, #0x0
+ ldr r5, ._59 @ gStringVar1
+ ldr r6, ._59 + 4 @ gSaveBlock1
+._56:
+ lsl r0, r4, #0x3
+ add r0, r0, r4
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldr r1, ._59 + 8 @ 0x2739
+ add r0, r0, r1
+ ldrb r1, [r0]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ lsl r1, r4, #0x19
+ mov r0, #0xa0
+ lsl r0, r0, #0x14
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x0
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ bls ._56 @cond_branch
+ mov r4, #0x5
+ ldr r5, ._59 @ gStringVar1
+ ldr r6, ._59 + 4 @ gSaveBlock1
+._61:
+ lsl r0, r4, #0x3
+ add r0, r0, r4
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldr r1, ._59 + 8 @ 0x2739
+ add r0, r0, r1
+ ldrb r1, [r0]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ cmp r4, #0xe
+ bhi ._57 @cond_branch
+ lsl r1, r4, #0x19
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x3
+ bl Menu_PrintText
+ b ._58
+._60:
+ .align 2, 0
+._59:
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x2739
+._57:
+ lsl r1, r4, #0x19
+ mov r0, #0xec
+ lsl r0, r0, #0x18
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x6
+ bl Menu_PrintText
+._58:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x17
+ bls ._61 @cond_branch
+ mov r4, #0x0
+ ldr r5, ._64 @ gStringVar1
+._66:
+ ldr r0, ._64 + 4 @ gSaveBlock1
+ lsl r1, r4, #0x2
+ add r1, r1, r0
+ ldr r0, ._64 + 8 @ 0x2abd
+ add r1, r1, r0
+ ldrb r1, [r1]
+ add r0, r5, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ cmp r4, #0x7
+ bhi ._62 @cond_branch
+ lsl r1, r4, #0x19
+ mov r0, #0xa0
+ lsl r0, r0, #0x14
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0x9
+ bl Menu_PrintText
+ b ._63
+._65:
+ .align 2, 0
+._64:
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x2abd
+._62:
+ lsl r1, r4, #0x19
+ mov r0, #0xfa
+ lsl r0, r0, #0x18
+ add r1, r1, r0
+ lsr r1, r1, #0x18
+ add r0, r5, #0
+ mov r2, #0xc
+ bl Menu_PrintText
+._63:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0xf
+ bls ._66 @cond_branch
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808F7B4
+
+ thumb_func_start debug_sub_808F8AC
+debug_sub_808F8AC:
+ push {lr}
+ ldr r0, ._67 @ 0x832
+ bl FlagSet
+ ldr r0, ._67 + 4 @ 0x818
+ bl FlagSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._68:
+ .align 2, 0
+._67:
+ .word 0x832
+ .word 0x818
+
+ thumb_func_end debug_sub_808F8AC
+
+ thumb_func_start debug_sub_808F8CC
+debug_sub_808F8CC:
+ push {r4, lr}
+ ldr r1, ._69 @ gDebug_03000724
+ mov r0, #0x0
+ strb r0, [r1]
+ ldr r0, ._69 + 4 @ gUnknown_Debug_083C49CA
+ bl sub_8071F40
+ mov r0, #0xd
+ mov r1, #0x6
+ mov r2, #0x1a
+ mov r3, #0x8
+ bl Menu_BlankWindowRect
+ ldr r0, ._69 + 8 @ gUnknown_Debug_083C4ACC
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ mov r0, #0x16
+ mov r1, #0x1
+ mov r2, #0x18
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r4, ._69 + 12 @ gStringVar1
+ add r0, r4, #0
+ mov r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x17
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r1, ._69 + 16 @ gMenuCallback
+ ldr r0, ._69 + 20 @ debug_sub_808F93C
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+._70:
+ .align 2, 0
+._69:
+ .word gDebug_03000724
+ .word gUnknown_Debug_083C49CA
+ .word gUnknown_Debug_083C4ACC
+ .word gStringVar1
+ .word gMenuCallback
+ .word debug_sub_808F93C+1
+
+ thumb_func_end debug_sub_808F8CC
+
+ thumb_func_start debug_sub_808F93C
+debug_sub_808F93C:
+ push {r4, lr}
+ mov r2, #0x0
+ ldr r0, ._83 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._71 @cond_branch
+ ldr r1, ._83 + 4 @ gDebug_03000725
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ strb r0, [r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x18
+ bne ._72 @cond_branch
+ strb r2, [r1]
+._72:
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._71:
+ ldr r0, ._83 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._73 @cond_branch
+ ldr r1, ._83 + 4 @ gDebug_03000725
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._74 @cond_branch
+ mov r0, #0x18
+ strb r0, [r1]
+._74:
+ ldrb r0, [r1]
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._73:
+ ldr r0, ._83 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._75 @cond_branch
+ ldr r1, ._83 + 8 @ gDebug_03000724
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ strb r0, [r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0xc
+ bne ._76 @cond_branch
+ mov r0, #0x0
+ strb r0, [r1]
+._76:
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._75:
+ ldr r0, ._83 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._77 @cond_branch
+ ldr r1, ._83 + 8 @ gDebug_03000724
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._78 @cond_branch
+ mov r0, #0xc
+ strb r0, [r1]
+._78:
+ ldrb r0, [r1]
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._77:
+ cmp r2, #0
+ beq ._79 @cond_branch
+ mov r0, #0xd
+ mov r1, #0x6
+ mov r2, #0x1a
+ mov r3, #0x8
+ bl Menu_BlankWindowRect
+ ldr r1, ._83 + 12 @ gUnknown_Debug_083C4ACC
+ ldr r0, ._83 + 8 @ gDebug_03000724
+ ldrb r0, [r0]
+ lsl r0, r0, #0x2
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ mov r0, #0x16
+ mov r1, #0x1
+ mov r2, #0x18
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r4, ._83 + 16 @ gStringVar1
+ ldr r0, ._83 + 4 @ gDebug_03000725
+ ldrb r1, [r0]
+ add r0, r4, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x17
+ mov r2, #0x1
+ bl Menu_PrintText
+._79:
+ ldr r4, ._83 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._80 @cond_branch
+ mov r0, #0x15
+ bl PlaySE
+ ldr r0, ._83 + 4 @ gDebug_03000725
+ ldrb r0, [r0]
+ ldr r2, ._83 + 20 @ gUnknown_Debug_083C4ABD
+ ldr r1, ._83 + 8 @ gDebug_03000724
+ ldrb r1, [r1]
+ add r1, r1, r2
+ ldrb r1, [r1]
+ bl debug_sub_808FA88
+._80:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._81 @cond_branch
+ mov r0, #0x0
+ b ._82
+._84:
+ .align 2, 0
+._83:
+ .word gMain
+ .word gDebug_03000725
+ .word gDebug_03000724
+ .word gUnknown_Debug_083C4ACC
+ .word gStringVar1
+ .word gUnknown_Debug_083C4ABD
+._81:
+ ldr r0, ._85 @ gSaveBlock1
+ bl sub_80BF588
+ bl CloseMenu
+ mov r0, #0x1
+._82:
+ pop {r4}
+ pop {r1}
+ bx r1
+._86:
+ .align 2, 0
+._85:
+ .word gSaveBlock1+0x2738
+
+ thumb_func_end debug_sub_808F93C
+
+ thumb_func_start debug_sub_808FA88
+debug_sub_808FA88:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add sp, sp, #0xffffffcc
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r7, r1, #0x18
+ bl GetLeadMonIndex
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r9, r0
+ ldr r3, ._92 @ gSaveBlock1
+ lsl r4, r6, #0x3
+ add r2, r4, r6
+ lsl r2, r2, #0x2
+ add r0, r2, r3
+ ldr r5, ._92 + 4 @ 0x2738
+ add r1, r0, r5
+ strb r7, [r1]
+ ldr r1, ._92 + 8 @ 0x2739
+ add r0, r0, r1
+ mov r1, #0x1
+ strb r1, [r0]
+ mov r1, #0x0
+ ldr r0, ._92 + 12 @ 0x273a
+ add r5, r3, r0
+ mov r3, #0x1
+._87:
+ add r0, r1, r2
+ add r0, r0, r5
+ strb r3, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x21
+ bls ._87 @cond_branch
+ add r0, r7, #0
+ bl GetTVChannelByShowType
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r1, r0, #0
+ cmp r0, #0x3
+ beq ._88 @cond_branch
+ cmp r0, #0x3
+ bgt ._89 @cond_branch
+ cmp r0, #0x2
+ beq ._90 @cond_branch
+ b ._95
+._93:
+ .align 2, 0
+._92:
+ .word gSaveBlock1
+ .word 0x2738
+ .word 0x2739
+ .word 0x273a
+._89:
+ cmp r1, #0x4
+ bne ._95 @cond_branch
+._90:
+ add r0, r4, r6
+ lsl r0, r0, #0x2
+ ldr r1, ._96 @ gSaveBlock1
+ add r0, r0, r1
+ bl sub_80BE160
+ b ._95
+._97:
+ .align 2, 0
+._96:
+ .word gSaveBlock1+0x2738
+._88:
+ add r0, r4, r6
+ lsl r0, r0, #0x2
+ ldr r1, ._100 @ gSaveBlock1
+ add r0, r0, r1
+ bl sub_80BE138
+._95:
+ sub r0, r7, #1
+ cmp r0, #0x28
+ bls ._98 @cond_branch
+ b ._173
+._98:
+ lsl r0, r0, #0x2
+ ldr r1, ._100 + 4 @
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+._101:
+ .align 2, 0
+._100:
+ .word gSaveBlock1+0x2738
+ .word ._102
+._102:
+ .word ._104
+ .word ._104
+ .word ._105
+ .word ._173
+ .word ._107
+ .word ._108
+ .word ._109
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._123
+ .word ._124
+ .word ._125
+ .word ._126
+ .word ._127
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._173
+ .word ._143
+._104:
+ add r0, r4, r6
+ lsl r0, r0, #0x2
+ ldr r1, ._145 @ gSaveBlock1
+ add r4, r0, r1
+ mov r2, #0x1
+ strh r2, [r4, #0x2]
+ add r1, r1, #0x10
+ add r0, r0, r1
+ ldr r1, ._145 + 4 @ gSaveBlock2
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r4, #0x18]
+ b ._173
+._146:
+ .align 2, 0
+._145:
+ .word gSaveBlock1+0x2738
+ .word gSaveBlock2
+._105:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r6, ._148 @ gSaveBlock1
+ add r1, r4, r6
+ mov r8, r1
+ mov r0, #0x1
+ strh r0, [r1, #0x2]
+ add r0, r6, #5
+ add r0, r4, r0
+ ldr r1, ._148 + 4 @ gSaveBlock2
+ bl StringCopy
+ mov r0, #0x64
+ mov r5, r9
+ mul r5, r5, r0
+ ldr r0, ._148 + 8 @ gPlayerParty
+ add r5, r5, r0
+ add r6, r6, #0x10
+ add r4, r4, r6
+ add r0, r5, #0
+ mov r1, #0x2
+ add r2, r4, #0
+ bl GetMonData
+ mov r0, #0x5
+ mov r1, r8
+ strb r0, [r1, #0xd]
+ add r0, r5, #0
+ mov r1, #0x3
+ bl GetMonData
+ mov r5, r8
+ strb r0, [r5, #0xe]
+ b ._173
+._149:
+ .align 2, 0
+._148:
+ .word gSaveBlock1+0x2738
+ .word gSaveBlock2
+ .word gPlayerParty
+._107:
+ mov r0, #0x64
+ mov r1, r9
+ mul r1, r1, r0
+ mov r8, r1
+ ldr r0, ._151 @ gPlayerParty
+ add r8, r8, r0
+ mov r0, r8
+ mov r1, #0xb
+ bl GetMonData
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r5, ._151 + 4 @ gSaveBlock1
+ add r6, r4, r5
+ strh r0, [r6, #0x2]
+ mov r0, #0x1
+ strh r0, [r6, #0x1c]
+ add r0, r5, #0
+ add r0, r0, #0xf
+ add r0, r4, r0
+ ldr r1, ._151 + 8 @ gSaveBlock2
+ bl StringCopy
+ add r5, r5, #0x4
+ add r4, r4, r5
+ mov r0, r8
+ mov r1, #0x2
+ add r2, r4, #0
+ bl GetMonData
+ mov r0, #0x5
+ strb r0, [r6, #0x1e]
+ mov r0, r8
+ mov r1, #0x3
+ bl GetMonData
+ strb r0, [r6, #0x1f]
+ b ._173
+._152:
+ .align 2, 0
+._151:
+ .word gPlayerParty
+ .word gSaveBlock1+0x2738
+ .word gSaveBlock2
+._108:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r6, ._154 @ gSaveBlock1
+ add r5, r4, r6
+ mov r8, r5
+ mov r0, #0x1
+ strh r0, [r5, #0x2]
+ add r0, r6, #0
+ add r0, r0, #0x16
+ add r0, r4, r0
+ ldr r1, ._154 + 4 @ gSaveBlock2
+ bl StringCopy
+ mov r0, #0x64
+ mov r5, r9
+ mul r5, r5, r0
+ ldr r0, ._154 + 8 @ gPlayerParty
+ add r5, r5, r0
+ add r6, r6, #0x8
+ add r4, r4, r6
+ add r0, r5, #0
+ mov r1, #0x2
+ add r2, r4, #0
+ bl GetMonData
+ mov r0, #0x5
+ mov r1, r8
+ strb r0, [r1, #0x1e]
+ add r0, r5, #0
+ mov r1, #0x3
+ bl GetMonData
+ mov r5, r8
+ strb r0, [r5, #0x1f]
+ b ._173
+._155:
+ .align 2, 0
+._154:
+ .word gSaveBlock1+0x2738
+ .word gSaveBlock2
+ .word gPlayerParty
+._109:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r5, ._157 @ gSaveBlock1
+ add r6, r4, r5
+ mov r0, #0x1
+ strh r0, [r6, #0xa]
+ strh r0, [r6, #0x14]
+ add r0, r5, #2
+ add r0, r4, r0
+ ldr r1, ._157 + 4 @ gSaveBlock2
+ mov r8, r1
+ bl StringCopy
+ add r5, r5, #0xc
+ add r4, r4, r5
+ add r0, r4, #0
+ mov r1, r8
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r6, #0x1d]
+ b ._173
+._158:
+ .align 2, 0
+._157:
+ .word gSaveBlock1+0x2738
+ .word gSaveBlock2
+._143:
+ add r0, r4, r6
+ lsl r0, r0, #0x2
+ ldr r1, ._160 @ gSaveBlock1
+ add r0, r0, r1
+ mov r1, #0x1
+ strh r1, [r0, #0xc]
+ strh r1, [r0, #0x16]
+ b ._173
+._161:
+ .align 2, 0
+._160:
+ .word gSaveBlock1+0x2738
+._123:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r0, ._163 @ gSaveBlock1
+ add r4, r4, r0
+ ldr r1, ._163 + 4 @ gUnknown_Debug_083C4C64
+ mov r0, sp
+ mov r2, #0x8
+ bl memcpy
+ add r5, sp, #0x8
+ ldr r1, ._163 + 8 @ gUnknown_Debug_083C4C6C
+ add r0, r5, #0
+ mov r2, #0xb
+ bl memcpy
+ mov r0, #0xff
+ strb r0, [r4, #0x12]
+ add r0, r4, #0
+ add r0, r0, #0x13
+ mov r1, sp
+ bl StringCopy
+ add r0, r4, #4
+ add r1, r5, #0
+ bl StringCopy
+ mov r0, #0xc
+ strb r0, [r4, #0xf]
+ mov r0, #0x28
+ strh r0, [r4, #0x10]
+ mov r0, #0x5
+ strb r0, [r4, #0x2]
+ strb r0, [r4, #0x3]
+ b ._173
+._164:
+ .align 2, 0
+._163:
+ .word gSaveBlock1+0x2738
+ .word gUnknown_Debug_083C4C64
+ .word gUnknown_Debug_083C4C6C
+._124:
+ add r0, r4, r6
+ lsl r0, r0, #0x2
+ ldr r1, ._168 @ gSaveBlock1
+ add r5, r0, r1
+ add r4, sp, #0x14
+ ldr r1, ._168 + 4 @ gUnknown_Debug_083C4C64
+ add r0, r4, #0
+ mov r2, #0x8
+ bl memcpy
+ add r1, r4, #0
+ mov r3, #0xfe
+ mov r2, #0x2
+ add r0, r5, #0
+ add r0, r0, #0x10
+._165:
+ strh r3, [r0]
+ sub r0, r0, #0x2
+ sub r2, r2, #0x1
+ cmp r2, #0
+ bge ._165 @cond_branch
+ mov r0, #0x1
+ strb r0, [r5, #0x2]
+ mov r0, #0x28
+ strb r0, [r5, #0x12]
+ add r0, r5, #0
+ add r0, r0, #0x13
+ add r3, r5, #6
+ mov r6, #0x1e
+ add r2, r5, #0
+ add r2, r2, #0xa
+._166:
+ strh r6, [r2]
+ sub r2, r2, #0x2
+ cmp r2, r3
+ bge ._166 @cond_branch
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r5, #0x3]
+ b ._173
+._169:
+ .align 2, 0
+._168:
+ .word gSaveBlock1+0x2738
+ .word gUnknown_Debug_083C4C64
+._125:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r0, ._171 @ gSaveBlock1
+ add r4, r4, r0
+ add r5, sp, #0x1c
+ ldr r1, ._171 + 4 @ gUnknown_Debug_083C4C64
+ add r0, r5, #0
+ mov r2, #0x8
+ bl memcpy
+ mov r0, #0x28
+ strh r0, [r4, #0xc]
+ strh r0, [r4, #0xe]
+ mov r0, #0x3
+ strb r0, [r4, #0x12]
+ mov r0, #0xff
+ strb r0, [r4, #0x10]
+ mov r0, #0x1
+ strb r0, [r4, #0x11]
+ add r0, r4, #0
+ add r0, r0, #0x13
+ add r1, r5, #0
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r4, #0x2]
+ b ._173
+._172:
+ .align 2, 0
+._171:
+ .word gSaveBlock1+0x2738
+ .word gUnknown_Debug_083C4C64
+._126:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r0, ._174 @ gSaveBlock1
+ add r4, r4, r0
+ add r5, sp, #0x24
+ ldr r1, ._174 + 4 @ gUnknown_Debug_083C4C64
+ add r0, r5, #0
+ mov r2, #0x8
+ bl memcpy
+ mov r0, #0xff
+ strb r0, [r4, #0x2]
+ mov r0, #0x0
+ strb r0, [r4, #0x3]
+ mov r0, #0x28
+ strh r0, [r4, #0x4]
+ add r0, r4, #0
+ add r0, r0, #0x13
+ add r1, r5, #0
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r4, #0x6]
+ b ._173
+._175:
+ .align 2, 0
+._174:
+ .word gSaveBlock1+0x2738
+ .word gUnknown_Debug_083C4C64
+._127:
+ add r4, r4, r6
+ lsl r4, r4, #0x2
+ ldr r0, ._176 @ gSaveBlock1
+ add r4, r4, r0
+ add r5, sp, #0x2c
+ ldr r1, ._176 + 4 @ gUnknown_Debug_083C4C64
+ add r0, r5, #0
+ mov r2, #0x8
+ bl memcpy
+ ldr r0, ._176 + 8 @ 0xffff
+ strh r0, [r4, #0x2]
+ mov r0, #0x1
+ neg r0, r0
+ strh r0, [r4, #0x6]
+ mov r0, #0x28
+ strh r0, [r4, #0x4]
+ strh r0, [r4, #0x8]
+ mov r0, #0x3
+ strb r0, [r4, #0xa]
+ add r0, r4, #0
+ add r0, r0, #0x13
+ add r1, r5, #0
+ bl StringCopy
+ mov r0, #0x5
+ strb r0, [r4, #0xb]
+._173:
+ add sp, sp, #0x34
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._177:
+ .align 2, 0
+._176:
+ .word gSaveBlock1+0x2738
+ .word gUnknown_Debug_083C4C64
+ .word 0xffff
+
+ thumb_func_end debug_sub_808FA88
+
+ thumb_func_start debug_sub_808FEBC
+debug_sub_808FEBC:
+ push {lr}
+ bl ClearTVShowData
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808FEBC
+
+ thumb_func_start debug_sub_808FECC
+debug_sub_808FECC:
+ push {r4, lr}
+ ldr r1, ._178 @ gDebug_03000724
+ mov r0, #0x0
+ strb r0, [r1]
+ ldr r0, ._178 + 4 @ gUnknown_Debug_083C49CA
+ bl sub_8071F40
+ mov r0, #0xd
+ mov r1, #0x6
+ mov r2, #0x17
+ mov r3, #0x8
+ bl Menu_BlankWindowRect
+ ldr r0, ._178 + 8 @ gUnknown_Debug_083C4B24
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ mov r0, #0x16
+ mov r1, #0x1
+ mov r2, #0x18
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r4, ._178 + 12 @ gStringVar1
+ add r0, r4, #0
+ mov r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x17
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r1, ._178 + 16 @ gMenuCallback
+ ldr r0, ._178 + 20 @ debug_sub_808FF3C
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+._179:
+ .align 2, 0
+._178:
+ .word gDebug_03000724
+ .word gUnknown_Debug_083C49CA
+ .word gUnknown_Debug_083C4B24
+ .word gStringVar1
+ .word gMenuCallback
+ .word debug_sub_808FF3C+1
+
+ thumb_func_end debug_sub_808FECC
+
+ thumb_func_start debug_sub_808FF3C
+debug_sub_808FF3C:
+ push {r4, lr}
+ mov r2, #0x0
+ ldr r0, ._192 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._180 @cond_branch
+ ldr r1, ._192 + 4 @ gDebug_03000725
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ strb r0, [r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x10
+ bne ._181 @cond_branch
+ strb r2, [r1]
+._181:
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._180:
+ ldr r0, ._192 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._182 @cond_branch
+ ldr r1, ._192 + 4 @ gDebug_03000725
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._183 @cond_branch
+ mov r0, #0x10
+ strb r0, [r1]
+._183:
+ ldrb r0, [r1]
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._182:
+ ldr r0, ._192 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._184 @cond_branch
+ ldr r1, ._192 + 8 @ gDebug_03000724
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ strb r0, [r1]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x3
+ bne ._185 @cond_branch
+ mov r0, #0x0
+ strb r0, [r1]
+._185:
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._184:
+ ldr r0, ._192 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._186 @cond_branch
+ ldr r1, ._192 + 8 @ gDebug_03000724
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._187 @cond_branch
+ mov r0, #0x3
+ strb r0, [r1]
+._187:
+ ldrb r0, [r1]
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ mov r0, #0x5
+ bl PlaySE
+ mov r2, #0x1
+._186:
+ cmp r2, #0
+ beq ._188 @cond_branch
+ mov r0, #0xd
+ mov r1, #0x6
+ mov r2, #0x17
+ mov r3, #0x8
+ bl Menu_BlankWindowRect
+ ldr r1, ._192 + 12 @ gUnknown_Debug_083C4B24
+ ldr r0, ._192 + 8 @ gDebug_03000724
+ ldrb r0, [r0]
+ lsl r0, r0, #0x2
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ mov r0, #0x16
+ mov r1, #0x1
+ mov r2, #0x18
+ mov r3, #0x2
+ bl Menu_BlankWindowRect
+ ldr r4, ._192 + 16 @ gStringVar1
+ ldr r0, ._192 + 4 @ gDebug_03000725
+ ldrb r1, [r0]
+ add r0, r4, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x17
+ mov r2, #0x1
+ bl Menu_PrintText
+._188:
+ ldr r4, ._192 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._189 @cond_branch
+ mov r0, #0x15
+ bl PlaySE
+ ldr r0, ._192 + 4 @ gDebug_03000725
+ ldrb r0, [r0]
+ ldr r2, ._192 + 20 @ gUnknown_Debug_083C4B20
+ ldr r1, ._192 + 8 @ gDebug_03000724
+ ldrb r1, [r1]
+ add r1, r1, r2
+ ldrb r1, [r1]
+ bl debug_sub_8090080
+._189:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._190 @cond_branch
+ mov r0, #0x0
+ b ._191
+._193:
+ .align 2, 0
+._192:
+ .word gMain
+ .word gDebug_03000725
+ .word gDebug_03000724
+ .word gUnknown_Debug_083C4B24
+ .word gStringVar1
+ .word gUnknown_Debug_083C4B20
+._190:
+ bl sub_80BEC40
+ bl CloseMenu
+ mov r0, #0x1
+._191:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808FF3C
+
+ thumb_func_start debug_sub_8090080
+debug_sub_8090080:
+ lsl r0, r0, #0x18
+ ldr r2, ._194 @ gSaveBlock1
+ lsr r0, r0, #0x16
+ add r0, r0, r2
+ ldr r3, ._194 + 4 @ 0x2abc
+ add r2, r0, r3
+ strb r1, [r2]
+ ldr r1, ._194 + 8 @ 0x2abd
+ add r2, r0, r1
+ mov r1, #0x1
+ strb r1, [r2]
+ add r3, r3, #0x2
+ add r0, r0, r3
+ mov r1, #0x4
+ strh r1, [r0]
+ bx lr
+._195:
+ .align 2, 0
+._194:
+ .word gSaveBlock1
+ .word 0x2abc
+ .word 0x2abd
+
+ thumb_func_end debug_sub_8090080
+
+ thumb_func_start debug_sub_80900AC
+debug_sub_80900AC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ mov r7, #0x0
+ mov r5, #0x0
+ ldr r0, ._202 @ gSaveBlock1
+ mov r8, r0
+._198:
+ lsl r0, r5, #0x3
+ add r0, r0, r5
+ lsl r0, r0, #0x2
+ mov r1, r8
+ add r6, r0, r1
+ ldr r1, ._202 + 4 @ 0x2738
+ add r0, r6, r1
+ ldrb r4, [r0]
+ cmp r4, #0
+ bne ._196 @cond_branch
+ cmp r7, #0xc
+ bne ._197 @cond_branch
+ mov r7, #0x0
+._197:
+ ldr r0, ._202 + 8 @ gUnknown_Debug_083C4ABD
+ add r0, r7, r0
+ ldrb r1, [r0]
+ add r0, r5, #0
+ bl debug_sub_808FA88
+ ldr r1, ._202 + 12 @ 0x2739
+ add r0, r6, r1
+ strb r4, [r0]
+ add r0, r7, #1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._196:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x17
+ bls ._198 @cond_branch
+ mov r7, #0x0
+ mov r5, #0x0
+._201:
+ ldr r0, ._202 @ gSaveBlock1
+ lsl r1, r5, #0x2
+ add r1, r1, r0
+ ldr r0, ._202 + 16 @ 0x2abc
+ add r1, r1, r0
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._199 @cond_branch
+ cmp r7, #0x3
+ bne ._200 @cond_branch
+ mov r7, #0x0
+._200:
+ ldr r0, ._202 + 20 @ gUnknown_Debug_083C4B20
+ add r0, r7, r0
+ ldrb r1, [r0]
+ add r0, r5, #0
+ bl debug_sub_8090080
+ add r0, r7, #1
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._199:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0xf
+ bls ._201 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._203:
+ .align 2, 0
+._202:
+ .word gSaveBlock1
+ .word 0x2738
+ .word gUnknown_Debug_083C4ABD
+ .word 0x2739
+ .word 0x2abc
+ .word gUnknown_Debug_083C4B20
+
+ thumb_func_end debug_sub_80900AC
+
+ thumb_func_start NoharaDebugMenu_Fan
+NoharaDebugMenu_Fan:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xb
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._204 @ gUnknown_Debug_083C4D28
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._204 + 4 @ gMenuCallback
+ ldr r0, ._204 + 8 @ debug_sub_80901A4
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._205:
+ .align 2, 0
+._204:
+ .word gUnknown_Debug_083C4D28
+ .word gMenuCallback
+ .word debug_sub_80901A4+1
+
+ thumb_func_end NoharaDebugMenu_Fan
+
+ thumb_func_start debug_sub_80901A4
+debug_sub_80901A4:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._206 @cond_branch
+ add r0, r0, #0x1
+ cmp r1, r0
+ beq ._207 @cond_branch
+ ldr r2, ._209 @ gMenuCallback
+ ldr r0, ._209 + 4 @ gUnknown_Debug_083C4D28
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+._206:
+ mov r0, #0x0
+ b ._208
+._210:
+ .align 2, 0
+._209:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C4D28
+._207:
+ bl CloseMenu
+ mov r0, #0x1
+._208:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_80901A4
+
+ thumb_func_start debug_sub_80901E4
+debug_sub_80901E4:
+ push {lr}
+ bl ResetFanClub
+ bl sub_810FAA0
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_80901E4
+
+ thumb_func_start debug_sub_80901F8
+debug_sub_80901F8:
+ push {lr}
+ bl sub_810FB9C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._211 @ gUnknown_Debug_083C4CA8
+ ldr r1, ._211 + 4 @ gUnknown_083F8408
+ add r0, r0, r1
+ ldrb r0, [r0]
+ sub r0, r0, #0x8
+ lsl r0, r0, #0x2
+ add r0, r0, r2
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r1, ._211 + 8 @ gMenuCallback
+ ldr r0, ._211 + 12 @ debug_sub_8090278
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._212:
+ .align 2, 0
+._211:
+ .word gUnknown_Debug_083C4CA8
+ .word gUnknown_083F8408
+ .word gMenuCallback
+ .word debug_sub_8090278+1
+
+ thumb_func_end debug_sub_80901F8
+
+ thumb_func_start debug_sub_8090238
+debug_sub_8090238:
+ push {lr}
+ bl sub_810FC18
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._213 @ gUnknown_Debug_083C4CA8
+ ldr r1, ._213 + 4 @ gUnknown_083F8410
+ add r0, r0, r1
+ ldrb r0, [r0]
+ sub r0, r0, #0x8
+ lsl r0, r0, #0x2
+ add r0, r0, r2
+ ldr r0, [r0]
+ mov r1, #0xe
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r1, ._213 + 8 @ gMenuCallback
+ ldr r0, ._213 + 12 @ debug_sub_8090278
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._214:
+ .align 2, 0
+._213:
+ .word gUnknown_Debug_083C4CA8
+ .word gUnknown_083F8410
+ .word gMenuCallback
+ .word debug_sub_8090278+1
+
+ thumb_func_end debug_sub_8090238
+
+ thumb_func_start debug_sub_8090278
+debug_sub_8090278:
+ push {lr}
+ ldr r0, ._217 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._215 @cond_branch
+ mov r0, #0x0
+ b ._216
+._218:
+ .align 2, 0
+._217:
+ .word gMain
+._215:
+ bl CloseMenu
+ mov r0, #0x1
+._216:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090278
+
+ thumb_func_start debug_sub_809029C
+debug_sub_809029C:
+ push {r4, lr}
+ ldr r4, ._219 @ gStringVar1
+ ldr r0, ._219 + 4 @ gSaveBlock1
+ ldr r1, ._219 + 8 @ 0x13c2
+ add r0, r0, r1
+ ldrh r0, [r0]
+ mov r1, #0x7f
+ and r1, r1, r0
+ add r0, r4, #0
+ mov r2, #0x0
+ mov r3, #0x2
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x10
+ mov r2, #0x7
+ bl Menu_PrintText
+ ldr r1, ._219 + 12 @ gMenuCallback
+ ldr r0, ._219 + 16 @ debug_sub_8090278
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r4}
+ pop {r1}
+ bx r1
+._220:
+ .align 2, 0
+._219:
+ .word gStringVar1
+ .word gSaveBlock1
+ .word 0x13c2
+ .word gMenuCallback
+ .word debug_sub_8090278+1
+
+ thumb_func_end debug_sub_809029C
+
+ thumb_func_start debug_sub_80902E4
+debug_sub_80902E4:
+ push {lr}
+ ldr r1, ._221 @ gSaveBlock2
+ ldrh r0, [r1, #0xe]
+ add r0, r0, #0x6
+ strh r0, [r1, #0xe]
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._222:
+ .align 2, 0
+._221:
+ .word gSaveBlock2
+
+ thumb_func_end debug_sub_80902E4
+
+ thumb_func_start debug_sub_80902FC
+debug_sub_80902FC:
+ push {lr}
+ mov r0, #0x0
+ bl sub_810FB10
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_80902FC
+
+ thumb_func_start debug_sub_8090310
+debug_sub_8090310:
+ push {lr}
+ mov r0, #0x1
+ bl sub_810FB10
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090310
+
+ thumb_func_start debug_sub_8090324
+debug_sub_8090324:
+ push {lr}
+ mov r0, #0x2
+ bl sub_810FB10
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090324
+
+ thumb_func_start debug_sub_8090338
+debug_sub_8090338:
+ push {lr}
+ mov r0, #0x3
+ bl sub_810FB10
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090338
+
+ thumb_func_start NoharaDebugMenu_BattleVSDad
+NoharaDebugMenu_BattleVSDad:
+ push {lr}
+ ldr r0, ._223 @ 0x4085
+ mov r1, #0x6
+ bl VarSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._224:
+ .align 2, 0
+._223:
+ .word 0x4085
+
+ thumb_func_end NoharaDebugMenu_BattleVSDad
+
+ thumb_func_start NoharaDebugMenu_DadAfterBattle
+NoharaDebugMenu_DadAfterBattle:
+ push {lr}
+ ldr r0, ._225 @ 0x4085
+ mov r1, #0x7
+ bl VarSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._226:
+ .align 2, 0
+._225:
+ .word 0x4085
+
+ thumb_func_end NoharaDebugMenu_DadAfterBattle
+
+ thumb_func_start NoharaDebugMenu_SootopolisCity
+NoharaDebugMenu_SootopolisCity:
+ push {lr}
+ mov r0, #0x81
+ bl FlagSet
+ mov r0, #0x71
+ bl FlagSet
+ ldr r0, ._227 @ 0x32f
+ bl FlagClear
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._228:
+ .align 2, 0
+._227:
+ .word 0x32f
+
+ thumb_func_end NoharaDebugMenu_SootopolisCity
+
+ thumb_func_start NoharaDebugMenu_Embark
+NoharaDebugMenu_Embark:
+ push {lr}
+ ldr r0, ._229 @ 0x2e3
+ bl FlagClear
+ ldr r0, ._229 + 4 @ 0x4090
+ mov r1, #0x1
+ bl VarSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._230:
+ .align 2, 0
+._229:
+ .word 0x2e3
+ .word 0x4090
+
+ thumb_func_end NoharaDebugMenu_Embark
+
+ thumb_func_start NoharaDebugMenu_Yes9999
+NoharaDebugMenu_Yes9999:
+ push {lr}
+ ldr r0, ._231 @ 0x4048
+ ldr r1, ._231 + 4 @ 0x270f
+ bl VarSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._232:
+ .align 2, 0
+._231:
+ .word 0x4048
+ .word 0x270f
+
+ thumb_func_end NoharaDebugMenu_Yes9999
+
+ thumb_func_start NoharaDebugMenu_LegendsFlagOn
+NoharaDebugMenu_LegendsFlagOn:
+ push {lr}
+ mov r0, #0xe4
+ bl FlagSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end NoharaDebugMenu_LegendsFlagOn
+
+ thumb_func_start NoharaDebugMenu_AddNumWinningStreaks
+NoharaDebugMenu_AddNumWinningStreaks:
+ push {lr}
+ ldr r0, ._235 @ gSaveBlock2
+ ldr r1, ._235 + 4 @ 0x572
+ add r2, r0, r1
+ ldrh r1, [r2]
+ cmp r1, #0x31
+ bhi ._233 @cond_branch
+ mov r0, #0x32
+ b ._244
+._236:
+ .align 2, 0
+._235:
+ .word gSaveBlock2
+ .word 0x572
+._233:
+ cmp r1, #0x63
+ bhi ._237 @cond_branch
+ mov r0, #0x64
+ b ._244
+._237:
+ ldr r0, ._241 @ 0x3e7
+ cmp r1, r0
+ bhi ._239 @cond_branch
+ add r0, r0, #0x1
+ b ._244
+._242:
+ .align 2, 0
+._241:
+ .word 0x3e7
+._239:
+ ldr r0, ._245 @ 0x1387
+ cmp r1, r0
+ bhi ._243 @cond_branch
+ ldr r0, ._245 + 4 @ 0x2706
+ b ._244
+._246:
+ .align 2, 0
+._245:
+ .word 0x1387
+ .word 0x2706
+._243:
+ ldr r0, ._248 @ 0x2705
+ cmp r1, r0
+ bhi ._247 @cond_branch
+ add r0, r0, #0xa
+._244:
+ strh r0, [r2]
+._247:
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._249:
+ .align 2, 0
+._248:
+ .word 0x2705
+
+ thumb_func_end NoharaDebugMenu_AddNumWinningStreaks
+
+ .align 2, 0
+
+.endif
diff --git a/asm/normal.s b/asm/normal.s
index fffbc3870..732c049ab 100644
--- a/asm/normal.s
+++ b/asm/normal.s
@@ -1214,7 +1214,7 @@ _080E25A0:
bcs _080E25F4
ldr r2, _080E2604 @ =gSprites
mov r12, r2
- ldr r6, _080E2608 @ =gObjectBankIDs
+ ldr r6, _080E2608 @ =gBankSpriteIds
movs r7, 0x3
negs r7, r7
_080E25D2:
@@ -1245,14 +1245,14 @@ _080E25FA:
.align 2, 0
_080E2600: .4byte gNoOfAllBanks
_080E2604: .4byte gSprites
-_080E2608: .4byte gObjectBankIDs
+_080E2608: .4byte gBankSpriteIds
thumb_func_end sub_80E255C
thumb_func_start sub_80E260C
sub_80E260C: @ 80E260C
push {r4-r6,lr}
ldr r6, _080E2680 @ =gSprites
- ldr r4, _080E2684 @ =gObjectBankIDs
+ ldr r4, _080E2684 @ =gBankSpriteIds
ldr r5, _080E2688 @ =gAnimBankAttacker
ldrb r0, [r5]
adds r0, r4
@@ -1309,7 +1309,7 @@ sub_80E260C: @ 80E260C
b _080E26B0
.align 2, 0
_080E2680: .4byte gSprites
-_080E2684: .4byte gObjectBankIDs
+_080E2684: .4byte gBankSpriteIds
_080E2688: .4byte gAnimBankAttacker
_080E268C: .4byte gAnimBankTarget
_080E2690: .4byte gBattleAnimArgs
@@ -1471,7 +1471,7 @@ sub_80E27A0: @ 80E27A0
bne _080E27C4
adds r0, r5, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
b _080E27CC
.align 2, 0
_080E27C0: .4byte gBattleAnimArgs
@@ -1506,7 +1506,7 @@ sub_80E27E8: @ 80E27E8
bne _080E280C
adds r0, r5, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
b _080E2814
.align 2, 0
_080E2808: .4byte gBattleAnimArgs
@@ -1586,7 +1586,7 @@ _080E288C:
bne _080E28AC
adds r0, r4, 0
movs r1, 0
- bl sub_80787B0
+ bl InitAnimSpritePos
b _080E28B4
.align 2, 0
_080E28A8: .4byte gBattleAnimArgs
@@ -1694,7 +1694,7 @@ sub_80E2978: @ 80E2978
bne _080E2994
adds r0, r4, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
b _080E299C
.align 2, 0
_080E2990: .4byte gBattleAnimArgs
@@ -1709,7 +1709,7 @@ _080E299C:
ldr r1, _080E29B8 @ =DestroyAnimSprite
adds r0, r4, 0
bl StoreSpriteCallbackInData
- ldr r0, _080E29BC @ =sub_80782D8
+ ldr r0, _080E29BC @ =WaitAnimForDuration
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
@@ -1717,7 +1717,7 @@ _080E299C:
.align 2, 0
_080E29B4: .4byte gBattleAnimArgs
_080E29B8: .4byte DestroyAnimSprite
-_080E29BC: .4byte sub_80782D8
+_080E29BC: .4byte WaitAnimForDuration
thumb_func_end sub_80E2978
thumb_func_start sub_80E29C0
@@ -1733,7 +1733,7 @@ sub_80E29C0: @ 80E29C0
bne _080E29E4
adds r0, r5, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
b _080E29EC
.align 2, 0
_080E29E0: .4byte gBattleAnimArgs
@@ -2532,7 +2532,7 @@ _080E2FDC:
cmp r0, 0x1
bne _080E3028
ldr r3, _080E3060 @ =gSprites
- ldr r1, _080E3064 @ =gObjectBankIDs
+ ldr r1, _080E3064 @ =gBankSpriteIds
ldrb r0, [r5]
eors r0, r6
adds r0, r1
@@ -2580,7 +2580,7 @@ _080E3054: .4byte 0x00000c08
_080E3058: .4byte REG_BG1CNT
_080E305C: .4byte gAnimBankAttacker
_080E3060: .4byte gSprites
-_080E3064: .4byte gObjectBankIDs
+_080E3064: .4byte gBankSpriteIds
_080E3068: .4byte gSharedMem + 0x19348
_080E306C:
ldr r4, _080E308C @ =gAnimBankAttacker
@@ -2809,7 +2809,7 @@ _080E3208:
ldrsh r0, [r4, r3]
cmp r0, 0x1
bne _080E3288
- ldr r2, _080E32D8 @ =gObjectBankIDs
+ ldr r2, _080E32D8 @ =gBankSpriteIds
ldr r0, _080E32DC @ =gAnimBankAttacker
ldrb r1, [r0]
movs r0, 0x2
@@ -2862,7 +2862,7 @@ _080E32C8: .4byte REG_BLDCNT
_080E32CC: .4byte gSprites
_080E32D0: .4byte 0x040000d4
_080E32D4: .4byte 0x85000200
-_080E32D8: .4byte gObjectBankIDs
+_080E32D8: .4byte gBankSpriteIds
_080E32DC: .4byte gAnimBankAttacker
thumb_func_end sub_80E3194
@@ -3069,7 +3069,7 @@ _080E345E:
cmp r0, 0x1
bne _080E34A4
ldr r1, _080E34D8 @ =gSprites
- ldr r0, _080E34DC @ =gObjectBankIDs
+ ldr r0, _080E34DC @ =gBankSpriteIds
add r0, r8
ldrb r0, [r0]
lsls r2, r0, 4
@@ -3115,7 +3115,7 @@ _080E34CC: .4byte REG_BLDCNT
_080E34D0: .4byte 0x00003f42
_080E34D4: .4byte REG_BG1CNT
_080E34D8: .4byte gSprites
-_080E34DC: .4byte gObjectBankIDs
+_080E34DC: .4byte gBankSpriteIds
_080E34E0: .4byte gSharedMem + 0x19348
_080E34E4:
adds r0, r5, 0
@@ -3149,7 +3149,7 @@ _080E3516:
lsls r0, 16
lsrs r4, r0, 16
_080E3522:
- ldr r6, _080E3570 @ =gObjectBankIDs
+ ldr r6, _080E3570 @ =gBankSpriteIds
adds r0, r5, r6
ldrb r1, [r0]
adds r0, r5, 0
@@ -3184,7 +3184,7 @@ _080E3550:
.align 2, 0
_080E3568: .4byte gBattlePartyID
_080E356C: .4byte gPlayerParty
-_080E3570: .4byte gObjectBankIDs
+_080E3570: .4byte gBankSpriteIds
_080E3574: .4byte gBattleStatMask1_Tilemap
_080E3578:
ldr r0, _080E35B0 @ =gBattleStatMask2_Tilemap
@@ -3344,7 +3344,7 @@ _080E3692:
mov r3, sp
ldrh r3, [r3, 0x20]
strh r3, [r1, 0x14]
- ldr r0, _080E36D8 @ =gObjectBankIDs
+ ldr r0, _080E36D8 @ =gBankSpriteIds
add r0, r8
ldrb r0, [r0]
strh r0, [r1, 0x16]
@@ -3364,7 +3364,7 @@ _080E3692:
bl PlaySE12WithPanning
b _080E36F4
.align 2, 0
-_080E36D8: .4byte gObjectBankIDs
+_080E36D8: .4byte gBankSpriteIds
_080E36DC: .4byte sub_80E3704
_080E36E0:
movs r0, 0x40
@@ -4040,7 +4040,7 @@ _080E3BE6:
lsls r0, 24
cmp r0, 0
beq _080E3C24
- ldr r0, _080E3C44 @ =gObjectBankIDs
+ ldr r0, _080E3C44 @ =gBankSpriteIds
adds r0, r4, r0
ldrb r0, [r0]
lsls r2, r0, 4
@@ -4074,7 +4074,7 @@ _080E3C24:
.align 2, 0
_080E3C3C: .4byte gSprites
_080E3C40: .4byte gAnimBankAttacker
-_080E3C44: .4byte gObjectBankIDs
+_080E3C44: .4byte gBankSpriteIds
_080E3C48: .4byte gBattleAnimArgs
thumb_func_end sub_80E3BDC
@@ -4236,7 +4236,7 @@ _080E3D8A:
lsls r0, 16
lsrs r4, r0, 16
_080E3D96:
- ldr r5, _080E3E50 @ =gObjectBankIDs
+ ldr r5, _080E3E50 @ =gBankSpriteIds
adds r0, r7, r5
ldrb r1, [r0]
adds r0, r7, 0
@@ -4322,7 +4322,7 @@ _080E3DE6:
.align 2, 0
_080E3E48: .4byte gBattlePartyID
_080E3E4C: .4byte gPlayerParty
-_080E3E50: .4byte gObjectBankIDs
+_080E3E50: .4byte gBankSpriteIds
_080E3E54: .4byte gBattle_BG1_X
_080E3E58: .4byte gBattle_BG1_Y
_080E3E5C: .4byte gTasks
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index 5b5dfbdd5..cee93a9e4 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -5,13652 +5,11 @@
.text
- thumb_func_start sub_8095ADC
-sub_8095ADC: @ 8095ADC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0
- movs r5, 0
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r6, r0, 5
-_08095AF0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- ldr r1, _08095B20 @ =gPokemonStorage + 0x4
- adds r0, r1
- adds r0, r6, r0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _08095B0C
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_08095B0C:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bls _08095AF0
- lsls r0, r5, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08095B20: .4byte gPokemonStorage + 0x4
- thumb_func_end sub_8095ADC
-
- thumb_func_start sub_8095B24
-sub_8095B24: @ 8095B24
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r5, r0, 5
-_08095B36:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- ldr r1, _08095B54 @ =gPokemonStorage + 0x4
- adds r0, r1
- adds r0, r5, r0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _08095B58
- lsls r0, r4, 16
- asrs r0, 16
- b _08095B66
- .align 2, 0
-_08095B54: .4byte gPokemonStorage + 0x4
-_08095B58:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bls _08095B36
- movs r0, 0x1
- negs r0, r0
-_08095B66:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8095B24
-
- thumb_func_start GetNumValidDaycarePartyMons
-GetNumValidDaycarePartyMons: @ 8095B6C
- push {r4-r6,lr}
- movs r5, 0
- movs r6, 0
-_08095B72:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08095BB0 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08095B9A
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _08095B9A
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08095B9A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _08095B72
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08095BB0: .4byte gPlayerParty
- thumb_func_end GetNumValidDaycarePartyMons
-
- thumb_func_start CountAlivePartyMonsExceptOne
-CountAlivePartyMonsExceptOne: @ 8095BB4
- push {r4-r7,lr}
- lsls r0, 24
- movs r5, 0
- movs r6, 0
- lsrs r7, r0, 24
-_08095BBE:
- cmp r5, r7
- beq _08095BF6
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08095C0C @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08095BF6
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _08095BF6
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08095BF6
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08095BF6:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _08095BBE
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08095C0C: .4byte gPlayerParty
- thumb_func_end CountAlivePartyMonsExceptOne
-
- thumb_func_start CountAlivePartyMonsExceptSelectedOne
-CountAlivePartyMonsExceptSelectedOne: @ 8095C10
- push {lr}
- ldr r0, _08095C24 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl CountAlivePartyMonsExceptOne
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08095C24: .4byte gSpecialVar_0x8004
- thumb_func_end CountAlivePartyMonsExceptSelectedOne
-
- thumb_func_start StorageSystemGetPartySize
-StorageSystemGetPartySize: @ 8095C28
- push {r4,r5,lr}
- movs r4, 0
- movs r5, 0
-_08095C2E:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _08095C5C @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08095C46
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_08095C46:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x5
- bls _08095C2E
- lsls r0, r5, 24
- lsrs r0, 24
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08095C5C: .4byte gPlayerParty
- thumb_func_end StorageSystemGetPartySize
-
- thumb_func_start unref_sub_8095C60
-unref_sub_8095C60: @ 8095C60
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r4, r2, 16
- lsrs r4, 16
- bl StringCopy
- adds r1, r0, 0
- adds r5, r4
- cmp r1, r5
- bcs _08095C7E
- movs r0, 0
-_08095C76:
- strb r0, [r1]
- adds r1, 0x1
- cmp r1, r5
- bcc _08095C76
-_08095C7E:
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r1, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_8095C60
-
- thumb_func_start sub_8095C8C
-sub_8095C8C: @ 8095C8C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- adds r7, r3, 0
- ldr r5, [sp, 0x1C]
- ldr r4, [sp, 0x20]
- ldr r0, [sp, 0x24]
- mov r9, r0
- ldr r0, [sp, 0x28]
- ldr r3, [sp, 0x2C]
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r3, 16
- lsrs r3, 16
- mov r0, r9
- lsls r0, 17
- mov r9, r0
- lsrs r2, 11
- adds r2, r1
- lsls r2, 1
- adds r6, r2
- adds r0, r4, 0
- muls r0, r3
- adds r0, r5
- lsls r0, 1
- adds r7, r0
- movs r4, 0
- cmp r4, r8
- bcs _08095CFC
- mov r0, r9
- lsrs r0, 1
- mov r9, r0
- lsls r5, r3, 1
-_08095CE2:
- adds r0, r7, 0
- adds r1, r6, 0
- mov r3, r9
- lsrs r2, r3, 16
- bl CpuSet
- adds r6, 0x40
- adds r7, r5
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r8
- bcc _08095CE2
-_08095CFC:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8095C8C
-
- thumb_func_start unref_sub_8095D08
-unref_sub_8095D08: @ 8095D08
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r0, [sp, 0x28]
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsrs r2, 11
- adds r2, r1
- lsls r2, 1
- adds r4, r2
- lsls r3, 17
- lsrs r0, r3, 16
- str r0, [sp, 0x4]
- movs r0, 0
- cmp r0, r10
- bcs _08095DB2
- movs r6, 0x80
- lsls r6, 5
- mov r5, sp
- ldr r7, _08095D74 @ =0x040000d4
- lsrs r3, 17
- mov r9, r3
- mov r1, r9
- movs r2, 0x81
- lsls r2, 24
- orrs r1, r2
- mov r9, r1
-_08095D4E:
- adds r3, r4, 0
- ldr r2, [sp, 0x4]
- movs r1, 0x40
- adds r1, r4
- mov r8, r1
- adds r0, 0x1
- mov r12, r0
- cmp r2, r6
- bhi _08095D78
- movs r0, 0
- strh r0, [r5]
- mov r2, sp
- str r2, [r7]
- str r4, [r7, 0x4]
- mov r0, r9
- str r0, [r7, 0x8]
- ldr r0, [r7, 0x8]
- b _08095DA6
- .align 2, 0
-_08095D74: .4byte 0x040000d4
-_08095D78:
- movs r4, 0
- strh r4, [r5]
- ldr r1, _08095DC4 @ =0x040000d4
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- ldr r0, _08095DC8 @ =0x81000800
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r6
- subs r2, r6
- cmp r2, r6
- bhi _08095D78
- strh r4, [r5]
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r2, 1
- movs r2, 0x81
- lsls r2, 24
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_08095DA6:
- mov r4, r8
- mov r1, r12
- lsls r0, r1, 16
- lsrs r0, 16
- cmp r0, r10
- bcc _08095D4E
-_08095DB2:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08095DC4: .4byte 0x040000d4
-_08095DC8: .4byte 0x81000800
- thumb_func_end unref_sub_8095D08
-
- thumb_func_start StorageSystemGetNextMonIndex
-StorageSystemGetNextMonIndex: @ 8095DCC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r0, r3, 24
- cmp r0, 0
- beq _08095DE8
- cmp r0, 0x2
- bne _08095DEC
-_08095DE8:
- movs r2, 0x1
- b _08095DEE
-_08095DEC:
- ldr r2, _08095E38 @ =0x0000ffff
-_08095DEE:
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08095E44
- lsls r0, r1, 24
- asrs r0, 24
- lsls r2, 16
- asrs r1, r2, 16
- adds r1, r0
- lsls r0, r1, 16
- asrs r1, r0, 16
- adds r6, r2, 0
- cmp r1, 0
- blt _08095E90
- cmp r1, r7
- bgt _08095E90
-_08095E10:
- asrs r4, r0, 16
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- add r0, r8
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _08095E3C
- asrs r0, r6, 16
- adds r0, r4, r0
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- blt _08095E90
- cmp r2, r7
- ble _08095E10
- b _08095E90
- .align 2, 0
-_08095E38: .4byte 0x0000ffff
-_08095E3C:
- adds r0, r4, 0
- b _08095E94
-_08095E40:
- adds r0, r5, 0
- b _08095E94
-_08095E44:
- lsls r0, r1, 24
- asrs r0, 24
- lsls r2, 16
- asrs r1, r2, 16
- adds r1, r0
- lsls r0, r1, 16
- asrs r1, r0, 16
- adds r6, r2, 0
- cmp r1, 0
- blt _08095E90
- cmp r1, r7
- bgt _08095E90
-_08095E5C:
- asrs r5, r0, 16
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 4
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _08095E80
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetBoxMonData
- cmp r0, 0
- beq _08095E40
-_08095E80:
- asrs r0, r6, 16
- adds r0, r5, r0
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- blt _08095E90
- cmp r2, r7
- ble _08095E5C
-_08095E90:
- movs r0, 0x1
- negs r0, r0
-_08095E94:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end StorageSystemGetNextMonIndex
-
- thumb_func_start StorageSystemClearMessageWindow
-StorageSystemClearMessageWindow: @ 8095EA0
- push {lr}
- movs r0, 0x2
- movs r1, 0xF
- movs r2, 0x1B
- movs r3, 0x12
- bl Menu_BlankWindowRect
- pop {r0}
- bx r0
- thumb_func_end StorageSystemClearMessageWindow
-
- thumb_func_start Task_PokemonStorageSystem
-Task_PokemonStorageSystem: @ 8095EB4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08095ED8 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _08095ECE
- b _080960F4
-_08095ECE:
- lsls r0, 2
- ldr r1, _08095EDC @ =_08095EE0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08095ED8: .4byte gTasks
-_08095EDC: .4byte _08095EE0
- .align 2, 0
-_08095EE0:
- .4byte _08095EF4
- .4byte _08095F1C
- .4byte _08095F30
- .4byte _08096042
- .4byte _080960DC
-_08095EF4:
- ldrb r0, [r4, 0xA]
- bl StorageSystemCreatePrimaryMenu
- bl Menu_DisplayDialogueFrame
- ldr r1, _08095F18 @ =gUnknown_083B600C
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x2
- movs r2, 0xF
- bl Menu_PrintText
- b _08095F28
- .align 2, 0
-_08095F18: .4byte gUnknown_083B600C
-_08095F1C:
- bl IsWeatherNotFadingIn
- lsls r0, 24
- cmp r0, 0
- bne _08095F28
- b _080960F4
-_08095F28:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080960F4
-_08095F30:
- bl Menu_ProcessInput
- lsls r0, 24
- asrs r0, 24
- strh r0, [r4, 0xC]
- movs r3, 0xC
- ldrsh r1, [r4, r3]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08095FC8
- cmp r1, r0
- bgt _08095F52
- subs r0, 0x1
- cmp r1, r0
- beq _08095F58
- b _08095FE8
-_08095F52:
- cmp r1, 0x3
- beq _08095FC8
- b _08095FE8
-_08095F58:
- ldrh r3, [r4, 0xA]
- strh r3, [r4, 0xE]
- ldr r2, _08095FC0 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08095F76
- subs r0, r3, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- cmp r0, 0
- bge _08095F76
- movs r0, 0x3
- strh r0, [r4, 0xE]
-_08095F76:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08095F92
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _08095F92
- movs r0, 0
- strh r0, [r4, 0xE]
-_08095F92:
- lsls r0, r3, 16
- asrs r0, 16
- ldrh r2, [r4, 0xE]
- movs r3, 0xE
- ldrsh r1, [r4, r3]
- cmp r0, r1
- bne _08095FA2
- b _080960F4
-_08095FA2:
- strh r2, [r4, 0xA]
- bl StorageSystemClearMessageWindow
- ldr r0, _08095FC4 @ =gUnknown_083B600C
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- lsls r1, 3
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- movs r1, 0x2
- movs r2, 0xF
- bl Menu_PrintText
- b _080960F4
- .align 2, 0
-_08095FC0: .4byte gMain
-_08095FC4: .4byte gUnknown_083B600C
-_08095FC8:
- bl Menu_DestroyCursor
- movs r0, 0
- movs r1, 0
- movs r2, 0xD
- movs r3, 0x9
- bl Menu_EraseWindowRect
- bl ScriptContext2_Disable
- bl EnableBothScriptContexts
- adds r0, r5, 0
- bl DestroyTask
- b _080960F4
-_08095FE8:
- movs r3, 0xC
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _08096008
- bl StorageSystemGetPartySize
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bne _08096008
- bl StorageSystemClearMessageWindow
- ldr r0, _08096004 @ =gPCText_PartyFull2
- b _08096022
- .align 2, 0
-_08096004: .4byte gPCText_PartyFull2
-_08096008:
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _08096034
- bl StorageSystemGetPartySize
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08096034
- bl StorageSystemClearMessageWindow
- ldr r0, _08096030 @ =gPCText_OnlyOne
-_08096022:
- movs r1, 0x2
- movs r2, 0xF
- bl Menu_PrintText
- movs r0, 0x3
- strh r0, [r4, 0x8]
- b _080960F4
- .align 2, 0
-_08096030: .4byte gPCText_OnlyOne
-_08096034:
- movs r0, 0x1
- movs r1, 0
- bl FadeScreen
- movs r0, 0x4
- strh r0, [r4, 0x8]
- b _080960F4
-_08096042:
- ldr r0, _08096088 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r3, 0x3
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _080960B8
- movs r0, 0x40
- ands r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0
- beq _08096090
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _0809606A
- strh r3, [r4, 0xA]
-_0809606A:
- movs r0, 0x1
- negs r0, r0
- bl Menu_MoveCursor
- bl Menu_GetCursorPos
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- bl StorageSystemClearMessageWindow
- ldr r1, _0809608C @ =gUnknown_083B600C
- movs r3, 0xA
- ldrsh r0, [r4, r3]
- b _080960C2
- .align 2, 0
-_08096088: .4byte gMain
-_0809608C: .4byte gUnknown_083B600C
-_08096090:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080960F4
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080960A8
- strh r2, [r4, 0xA]
-_080960A8:
- movs r0, 0x1
- bl Menu_MoveCursor
- bl Menu_GetCursorPos
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
-_080960B8:
- bl StorageSystemClearMessageWindow
- ldr r1, _080960D8 @ =gUnknown_083B600C
- movs r2, 0xA
- ldrsh r0, [r4, r2]
-_080960C2:
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x2
- movs r2, 0xF
- bl Menu_PrintText
- movs r0, 0x2
- strh r0, [r4, 0x8]
- b _080960F4
- .align 2, 0
-_080960D8: .4byte gUnknown_083B600C
-_080960DC:
- ldr r0, _080960FC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080960F4
- ldrb r0, [r4, 0xC]
- bl task_intro_29
- adds r0, r5, 0
- bl DestroyTask
-_080960F4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080960FC: .4byte gPaletteFade
- thumb_func_end Task_PokemonStorageSystem
-
- thumb_func_start ShowPokemonStorageSystem
-ShowPokemonStorageSystem: @ 8096100
- push {lr}
- ldr r0, _08096128 @ =Task_PokemonStorageSystem
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0809612C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- strh r0, [r1, 0xA]
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .align 2, 0
-_08096128: .4byte Task_PokemonStorageSystem
-_0809612C: .4byte gTasks
- thumb_func_end ShowPokemonStorageSystem
-
- thumb_func_start sub_8096130
-sub_8096130: @ 8096130
- push {lr}
- ldr r0, _0809615C @ =Task_PokemonStorageSystem
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08096160 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- ldr r0, _08096164 @ =gUnknown_02038474
- ldrb r0, [r0]
- strh r0, [r1, 0xA]
- bl pal_fill_black
- pop {r0}
- bx r0
- .align 2, 0
-_0809615C: .4byte Task_PokemonStorageSystem
-_08096160: .4byte gTasks
-_08096164: .4byte gUnknown_02038474
- thumb_func_end sub_8096130
-
- thumb_func_start StorageSystemCreatePrimaryMenu
-StorageSystemCreatePrimaryMenu: @ 8096168
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0
- movs r2, 0xD
- movs r3, 0x9
- bl Menu_DrawStdWindowFrame
- ldr r3, _080961A4 @ =gUnknown_083B600C
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0x4
- bl Menu_PrintItems
- str r4, [sp]
- movs r0, 0xC
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x1
- movs r3, 0x4
- bl InitMenu
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080961A4: .4byte gUnknown_083B600C
- thumb_func_end StorageSystemCreatePrimaryMenu
-
- thumb_func_start sub_80961A8
-sub_80961A8: @ 80961A8
- push {lr}
- ldr r1, _080961C4 @ =gUnknown_02038474
- ldr r0, _080961C8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- strb r0, [r1]
- ldr r1, _080961CC @ =gFieldCallback
- ldr r0, _080961D0 @ =sub_8096130
- str r0, [r1]
- ldr r0, _080961D4 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080961C4: .4byte gUnknown_02038474
-_080961C8: .4byte gUnknown_083B6DB4
-_080961CC: .4byte gFieldCallback
-_080961D0: .4byte sub_8096130
-_080961D4: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end sub_80961A8
-
- thumb_func_start ResetPokemonStorageSystem
-ResetPokemonStorageSystem: @ 80961D8
- push {r4-r7,lr}
- ldr r1, _08096258 @ =gPokemonStorage
- movs r0, 0
- strb r0, [r1]
- movs r5, 0
- adds r7, r1, 0x4
-_080961E4:
- movs r4, 0
- lsls r1, r5, 2
- adds r1, r5
- lsls r0, r1, 4
- subs r0, r1
- lsls r6, r0, 5
-_080961F0:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- adds r0, r7
- adds r0, r6, r0
- bl ZeroBoxMonData
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bls _080961F0
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xD
- bls _080961E4
- movs r5, 0
-_08096214:
- lsls r0, r5, 3
- adds r0, r5
- ldr r6, _0809625C @ =gPokemonStorage + 0x8344
- adds r0, r6
- ldr r1, _08096260 @ =gPCText_BOX
- bl StringCopy
- adds r4, r5, 0x1
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- lsls r4, 16
- lsrs r5, r4, 16
- cmp r5, 0xD
- bls _08096214
- movs r5, 0
- adds r3, r6, 0
- adds r3, 0x7E
- movs r2, 0x3
-_0809623E:
- adds r0, r5, r3
- adds r1, r5, 0
- ands r1, r2
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xD
- bls _0809623E
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08096258: .4byte gPokemonStorage
-_0809625C: .4byte gPokemonStorage + 0x8344
-_08096260: .4byte gPCText_BOX
- thumb_func_end ResetPokemonStorageSystem
-
- thumb_func_start sub_8096264
-sub_8096264: @ 8096264
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x20
- mov r8, r0
- adds r4, r1, 0
- adds r6, r2, 0
- mov r9, r3
- lsls r4, 16
- lsrs r4, 16
- lsls r6, 16
- lsrs r6, 16
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r0, _080962F4 @ =gBoxSelectionPopupPalette
- str r0, [sp, 0x18]
- ldr r1, _080962F8 @ =0xffff0000
- add r5, sp, 0x18
- ldr r0, [r5, 0x4]
- ands r0, r1
- orrs r0, r6
- str r0, [r5, 0x4]
- mov r1, sp
- ldr r0, _080962FC @ =gBoxSelectionPopupCenterTiles
- str r0, [sp]
- movs r0, 0x80
- lsls r0, 4
- strh r0, [r1, 0x4]
- strh r4, [r1, 0x6]
- ldr r0, _08096300 @ =gBoxSelectionPopupSidesTiles
- str r0, [sp, 0x8]
- movs r0, 0xC0
- lsls r0, 1
- strh r0, [r1, 0xC]
- adds r0, r4, 0x1
- strh r0, [r1, 0xE]
- add r0, sp, 0x10
- movs r1, 0
- movs r2, 0x8
- bl memset
- adds r0, r5, 0
- bl LoadSpritePalette
- mov r0, sp
- bl LoadSpriteSheets
- ldr r0, _08096304 @ =gUnknown_02038478
- mov r1, r8
- str r1, [r0]
- movs r0, 0x90
- lsls r0, 2
- add r0, r8
- strh r4, [r0]
- ldr r0, _08096308 @ =0x00000242
- add r0, r8
- strh r6, [r0]
- ldr r0, _0809630C @ =0x0000023e
- add r8, r0
- mov r0, r9
- mov r1, r8
- strb r0, [r1]
- add sp, 0x20
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080962F4: .4byte gBoxSelectionPopupPalette
-_080962F8: .4byte 0xffff0000
-_080962FC: .4byte gBoxSelectionPopupCenterTiles
-_08096300: .4byte gBoxSelectionPopupSidesTiles
-_08096304: .4byte gUnknown_02038478
-_08096308: .4byte 0x00000242
-_0809630C: .4byte 0x0000023e
- thumb_func_end sub_8096264
-
- thumb_func_start sub_8096310
-sub_8096310: @ 8096310
- push {r4,r5,lr}
- ldr r4, _08096344 @ =gUnknown_02038478
- ldr r0, [r4]
- ldr r1, _08096348 @ =0x00000242
- adds r0, r1
- ldrh r0, [r0]
- bl FreeSpritePaletteByTag
- ldr r0, [r4]
- movs r5, 0x90
- lsls r5, 2
- adds r0, r5
- ldrh r0, [r0]
- bl FreeSpriteTilesByTag
- ldr r0, [r4]
- adds r0, r5
- ldrh r0, [r0]
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpriteTilesByTag
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08096344: .4byte gUnknown_02038478
-_08096348: .4byte 0x00000242
- thumb_func_end sub_8096310
-
- thumb_func_start sub_809634C
-sub_809634C: @ 809634C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80963D0
- pop {r0}
- bx r0
- thumb_func_end sub_809634C
-
- thumb_func_start sub_809635C
-sub_809635C: @ 809635C
- push {lr}
- bl sub_809658C
- pop {r0}
- bx r0
- thumb_func_end sub_809635C
-
- thumb_func_start sub_8096368
-sub_8096368: @ 8096368
- push {lr}
- ldr r0, _08096380 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08096384
- movs r0, 0x5
- bl PlaySE
- movs r0, 0xC9
- b _080963CC
- .align 2, 0
-_08096380: .4byte gMain
-_08096384:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080963A4
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080963A0 @ =gUnknown_02038478
- ldr r0, [r0]
- movs r1, 0x8F
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- b _080963CC
- .align 2, 0
-_080963A0: .4byte gUnknown_02038478
-_080963A4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080963B8
- movs r0, 0x5
- bl PlaySE
- bl sub_809662C
- b _080963CA
-_080963B8:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080963CA
- movs r0, 0x5
- bl PlaySE
- bl sub_80965F8
-_080963CA:
- movs r0, 0xC8
-_080963CC:
- pop {r1}
- bx r1
- thumb_func_end sub_8096368
-
- thumb_func_start sub_80963D0
-sub_80963D0: @ 80963D0
- push {r4-r6,lr}
- sub sp, 0x3C
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r0, 0
- movs r1, 0
- str r0, [sp, 0x34]
- str r1, [sp, 0x38]
- movs r1, 0xC0
- lsls r1, 24
- ldr r0, [sp, 0x34]
- orrs r0, r1
- str r0, [sp, 0x34]
- ldr r1, _08096564 @ =0xffff0fff
- add r4, sp, 0x34
- ldr r0, [r4, 0x4]
- ands r0, r1
- movs r1, 0x80
- lsls r1, 5
- orrs r0, r1
- str r0, [r4, 0x4]
- add r1, sp, 0x1C
- movs r2, 0
- strh r2, [r1]
- mov r0, sp
- adds r0, 0x1E
- strh r2, [r0]
- str r4, [sp, 0x20]
- ldr r0, _08096568 @ =gDummySpriteAnimTable
- str r0, [sp, 0x24]
- str r2, [sp, 0x28]
- ldr r0, _0809656C @ =gDummySpriteAffineAnimTable
- str r0, [sp, 0x2C]
- ldr r0, _08096570 @ =SpriteCallbackDummy
- str r0, [sp, 0x30]
- add r0, sp, 0x4
- movs r2, 0x18
- bl memcpy
- ldr r6, _08096574 @ =gUnknown_02038478
- ldr r0, [r6]
- movs r1, 0x8F
- lsls r1, 2
- adds r0, r1
- strb r5, [r0]
- add r2, sp, 0x4
- ldr r1, [r6]
- movs r5, 0x90
- lsls r5, 2
- adds r0, r1, r5
- ldrh r0, [r0]
- strh r0, [r2]
- ldr r3, _08096578 @ =0x00000242
- adds r1, r3
- ldrh r0, [r1]
- strh r0, [r2, 0x2]
- adds r0, r2, 0
- movs r1, 0xA0
- movs r2, 0x60
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r3, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809657C @ =gSprites
- adds r0, r1
- str r0, [r3]
- ldrb r2, [r4, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r2
- movs r2, 0x80
- orrs r0, r2
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x3]
- ands r1, r0
- movs r0, 0x40
- orrs r1, r0
- strb r1, [r4, 0x3]
- add r1, sp, 0x4
- adds r3, r5
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r1]
- ldr r0, _08096580 @ =gSpriteAnimTable_83B604C
- str r0, [sp, 0xC]
- movs r4, 0
-_08096488:
- ldr r0, [r6]
- ldr r1, _08096584 @ =0x0000023e
- adds r0, r1
- ldrb r3, [r0]
- add r0, sp, 0x4
- movs r1, 0x7C
- movs r2, 0x50
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r2, [r6]
- lsls r3, r4, 2
- adds r2, 0x4
- adds r2, r3
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809657C @ =gSprites
- adds r1, r0, r1
- str r1, [r2]
- movs r5, 0
- movs r0, 0x2
- ands r0, r4
- cmp r0, 0
- beq _080964C2
- movs r0, 0xC4
- strh r0, [r1, 0x20]
- movs r5, 0x2
-_080964C2:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _080964E6
- ldr r1, [r6]
- adds r1, 0x4
- adds r1, r3
- ldr r2, [r1]
- movs r0, 0x70
- strh r0, [r2, 0x22]
- ldr r2, [r1]
- ldrb r1, [r2, 0x3]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2, 0x3]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
-_080964E6:
- ldr r0, [r6]
- adds r0, 0x4
- adds r0, r3
- ldr r0, [r0]
- lsls r1, r5, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08096488
- movs r4, 0
- ldr r5, _08096574 @ =gUnknown_02038478
-_08096504:
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 19
- movs r3, 0xF8
- lsls r3, 15
- adds r0, r3
- lsrs r0, 16
- lsls r2, r4, 24
- lsrs r2, 24
- ldr r1, [r5]
- ldr r3, _08096584 @ =0x0000023e
- adds r1, r3
- ldrb r1, [r1]
- str r1, [sp]
- movs r1, 0x58
- movs r3, 0
- bl sub_809A9A0
- adds r2, r0, 0
- ldr r0, [r5]
- lsls r1, r4, 2
- adds r0, 0x20
- adds r0, r1
- str r2, [r0]
- cmp r2, 0
- beq _0809654C
- movs r1, 0x1
- cmp r4, 0
- bne _08096544
- movs r3, 0x1
- negs r3, r3
- adds r1, r3, 0
-_08096544:
- strh r1, [r2, 0x2E]
- ldr r1, [r0]
- ldr r0, _08096588 @ =sub_8096784
- str r0, [r1, 0x1C]
-_0809654C:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _08096504
- bl sub_809665C
- add sp, 0x3C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08096564: .4byte 0xffff0fff
-_08096568: .4byte gDummySpriteAnimTable
-_0809656C: .4byte gDummySpriteAffineAnimTable
-_08096570: .4byte SpriteCallbackDummy
-_08096574: .4byte gUnknown_02038478
-_08096578: .4byte 0x00000242
-_0809657C: .4byte gSprites
-_08096580: .4byte gSpriteAnimTable_83B604C
-_08096584: .4byte 0x0000023e
-_08096588: .4byte sub_8096784
- thumb_func_end sub_80963D0
-
- thumb_func_start sub_809658C
-sub_809658C: @ 809658C
- push {r4-r6,lr}
- ldr r4, _080965F4 @ =gUnknown_02038478
- ldr r0, [r4]
- ldr r0, [r0]
- cmp r0, 0
- beq _080965A2
- bl DestroySprite
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1]
-_080965A2:
- movs r5, 0
- adds r6, r4, 0
-_080965A6:
- ldr r0, [r6]
- lsls r4, r5, 2
- adds r0, 0x4
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0
- beq _080965C2
- bl DestroySprite
- ldr r0, [r6]
- adds r0, 0x4
- adds r0, r4
- movs r1, 0
- str r1, [r0]
-_080965C2:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _080965A6
- movs r5, 0
-_080965CE:
- ldr r0, _080965F4 @ =gUnknown_02038478
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, 0x20
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _080965E2
- bl DestroySprite
-_080965E2:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x1
- bls _080965CE
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080965F4: .4byte gUnknown_02038478
- thumb_func_end sub_809658C
-
- thumb_func_start sub_80965F8
-sub_80965F8: @ 80965F8
- push {lr}
- ldr r2, _08096628 @ =gUnknown_02038478
- ldr r1, [r2]
- movs r0, 0x8F
- lsls r0, 2
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xD
- bls _0809661E
- ldr r0, [r2]
- movs r1, 0x8F
- lsls r1, 2
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_0809661E:
- bl sub_809665C
- pop {r0}
- bx r0
- .align 2, 0
-_08096628: .4byte gUnknown_02038478
- thumb_func_end sub_80965F8
-
- thumb_func_start sub_809662C
-sub_809662C: @ 809662C
- push {lr}
- ldr r0, _08096644 @ =gUnknown_02038478
- ldr r2, [r0]
- movs r1, 0x8F
- lsls r1, 2
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08096648
- subs r1, r0, 0x1
- b _0809664A
- .align 2, 0
-_08096644: .4byte gUnknown_02038478
-_08096648:
- movs r1, 0xD
-_0809664A:
- movs r3, 0x8F
- lsls r3, 2
- adds r0, r2, r3
- strb r1, [r0]
- bl sub_809665C
- pop {r0}
- bx r0
- thumb_func_end sub_809662C
-
- thumb_func_start sub_809665C
-sub_809665C: @ 809665C
- push {r4-r7,lr}
- ldr r5, _080966B4 @ =gUnknown_02038478
- ldr r0, [r5]
- movs r4, 0x8F
- lsls r4, 2
- adds r0, r4
- ldrb r0, [r0]
- bl sub_8095ADC
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _080966B8 @ =gStringVar1
- movs r6, 0xFC
- strb r6, [r2]
- movs r0, 0x4
- strb r0, [r2, 0x1]
- movs r0, 0xF
- strb r0, [r2, 0x2]
- movs r0, 0x1
- strb r0, [r2, 0x3]
- movs r0, 0xE
- strb r0, [r2, 0x4]
- adds r2, 0x5
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 3
- adds r1, r0
- ldr r0, _080966BC @ =gPokemonStorage + 0x8344
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- movs r0, 0xFE
- strb r0, [r2]
- strb r6, [r2, 0x1]
- movs r0, 0x11
- strb r0, [r2, 0x2]
- cmp r7, 0x9
- bhi _080966C0
- movs r0, 0x28
- b _080966C2
- .align 2, 0
-_080966B4: .4byte gUnknown_02038478
-_080966B8: .4byte gStringVar1
-_080966BC: .4byte gPokemonStorage + 0x8344
-_080966C0:
- movs r0, 0x22
-_080966C2:
- strb r0, [r2, 0x3]
- adds r2, 0x4
- adds r0, r2, 0
- adds r1, r7, 0
- bl ConvertIntToDecimalString
- adds r2, r0, 0
- movs r0, 0xBA
- strb r0, [r2]
- movs r0, 0xA4
- strb r0, [r2, 0x1]
- movs r0, 0xA1
- strb r0, [r2, 0x2]
- movs r0, 0xFF
- strb r0, [r2, 0x3]
- ldr r0, _080966F0 @ =gStringVar1
- movs r1, 0
- movs r2, 0x1
- bl sub_80966F4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080966F0: .4byte gStringVar1
- thumb_func_end sub_809665C
-
- thumb_func_start sub_80966F4
-sub_80966F4: @ 80966F4
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- mov r8, r0
- adds r5, r1, 0
- adds r4, r2, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08096764 @ =gUnknown_02038478
- ldr r0, [r0]
- movs r1, 0x90
- lsls r1, 2
- adds r0, r1
- ldrh r0, [r0]
- bl GetSpriteTileStartByTag
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 11
- lsls r4, 8
- ldr r2, _08096768 @ =0x06010000
- adds r4, r2
- adds r6, r4
- lsls r5, 5
- adds r6, r5
- ldr r0, _0809676C @ =gUnknown_083B6DB8
- ldr r5, [r0]
- mov r1, sp
- ldr r2, _08096770 @ =0x00001111
- adds r0, r2, 0
- strh r0, [r1]
- ldr r4, _08096774 @ =0x040000d4
- str r1, [r4]
- str r5, [r4, 0x4]
- ldr r0, _08096778 @ =0x81000200
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- ldr r0, _0809677C @ =gWindowTemplate_81E6D38
- adds r1, r5, 0
- mov r2, r8
- bl Text_InitWindow8004E3C
- str r5, [r4]
- str r6, [r4, 0x4]
- ldr r0, _08096780 @ =0x80000200
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08096764: .4byte gUnknown_02038478
-_08096768: .4byte 0x06010000
-_0809676C: .4byte gUnknown_083B6DB8
-_08096770: .4byte 0x00001111
-_08096774: .4byte 0x040000d4
-_08096778: .4byte 0x81000200
-_0809677C: .4byte gWindowTemplate_81E6D38
-_08096780: .4byte 0x80000200
- thumb_func_end sub_80966F4
-
- thumb_func_start sub_8096784
-sub_8096784: @ 8096784
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080967B4
- strh r2, [r1, 0x30]
- ldrh r0, [r1, 0x2E]
- ldrh r3, [r1, 0x24]
- adds r0, r3
- strh r0, [r1, 0x24]
- ldrh r0, [r1, 0x32]
- adds r0, 0x1
- strh r0, [r1, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080967B4
- strh r2, [r1, 0x32]
- strh r2, [r1, 0x24]
-_080967B4:
- pop {r0}
- bx r0
- thumb_func_end sub_8096784
-
- thumb_func_start task_intro_29
-task_intro_29: @ 80967B8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _080967D0 @ =gUnknown_0203847D
- strb r0, [r1]
- ldr r1, _080967D4 @ =gSharedMem
- strb r0, [r1, 0x5]
- ldr r0, _080967D8 @ =sub_8096884
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_080967D0: .4byte gUnknown_0203847D
-_080967D4: .4byte gSharedMem
-_080967D8: .4byte sub_8096884
- thumb_func_end task_intro_29
-
- thumb_func_start sub_80967DC
-sub_80967DC: @ 80967DC
- ldr r0, _08096800 @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_08096800: .4byte REG_BG0HOFS
- thumb_func_end sub_80967DC
-
- thumb_func_start sub_8096804
-sub_8096804: @ 8096804
- push {lr}
- bl ResetPaletteFade
- bl ResetSpriteData
- bl FreeSpriteTileRanges
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r1, _0809683C @ =gReservedSpriteTileCount
- movs r2, 0xA0
- lsls r2, 2
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08096840 @ =gSharedMem + 0x20
- adds r1, r0, 0
- adds r1, 0x8
- movs r2, 0x8
- bl sub_809CFDC
- ldr r1, _08096844 @ =gKeyRepeatStartDelay
- movs r0, 0x14
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0809683C: .4byte gReservedSpriteTileCount
-_08096840: .4byte gSharedMem + 0x20
-_08096844: .4byte gKeyRepeatStartDelay
- thumb_func_end sub_8096804
-
- thumb_func_start sub_8096848
-sub_8096848: @ 8096848
- push {lr}
- bl sub_809B0D4
- ldr r2, _08096868 @ =gUnknown_0203847C
- movs r1, 0
- ldr r0, _0809686C @ =gSharedMem
- ldrb r0, [r0, 0x5]
- cmp r0, 0x1
- bne _0809685C
- movs r1, 0x1
-_0809685C:
- strb r1, [r2]
- ldr r1, _08096870 @ =gUnknown_0203847E
- movs r0, 0
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08096868: .4byte gUnknown_0203847C
-_0809686C: .4byte gSharedMem
-_08096870: .4byte gUnknown_0203847E
- thumb_func_end sub_8096848
-
- thumb_func_start sub_8096874
-sub_8096874: @ 8096874
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bx lr
- thumb_func_end sub_8096874
-
- thumb_func_start sub_8096884
-sub_8096884: @ 8096884
- push {lr}
- ldr r0, _080968A0 @ =gMain
- ldr r1, _080968A4 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x9
- bls _08096894
- b _08096986
-_08096894:
- lsls r0, 2
- ldr r1, _080968A8 @ =_080968AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080968A0: .4byte gMain
-_080968A4: .4byte 0x0000043c
-_080968A8: .4byte _080968AC
- .align 2, 0
-_080968AC:
- .4byte _080968D4
- .4byte _080968E8
- .4byte _080968F4
- .4byte _08096904
- .4byte _0809690E
- .4byte _08096918
- .4byte _0809691E
- .4byte _08096924
- .4byte _0809692A
- .4byte _08096964
-_080968D4:
- movs r0, 0
- bl SetVBlankCallback
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- bl sub_8096804
- b _0809697A
-_080968E8:
- ldr r0, _080968F0 @ =gWindowTemplate_81E6D00
- bl Text_LoadWindowTemplate
- b _0809697A
- .align 2, 0
-_080968F0: .4byte gWindowTemplate_81E6D00
-_080968F4:
- ldr r0, _08096900 @ =gWindowTemplate_81E6D00
- bl InitMenuWindow
- bl Menu_EraseScreen
- b _0809697A
- .align 2, 0
-_08096900: .4byte gWindowTemplate_81E6D00
-_08096904:
- bl sub_80967DC
- bl sub_8096848
- b _0809697A
-_0809690E:
- bl sub_8098B48
- bl sub_809AA24
- b _0809697A
-_08096918:
- bl sub_8097DE0
- b _0809697A
-_0809691E:
- bl sub_8097E70
- b _0809697A
-_08096924:
- bl sub_8098400
- b _0809697A
-_0809692A:
- ldr r0, _08096950 @ =gPokemonStorage
- ldrb r0, [r0]
- bl sub_8099BF8
- ldr r2, _08096954 @ =gSharedMem
- ldr r1, _08096958 @ =0x000012bc
- adds r0, r2, r1
- movs r1, 0xA
- strh r1, [r0]
- ldr r1, _0809695C @ =0x000012be
- adds r2, r1
- ldr r1, _08096960 @ =0x0000dacb
- strh r1, [r2]
- bl sub_80F727C
- bl sub_80F7404
- b _0809697A
- .align 2, 0
-_08096950: .4byte gPokemonStorage
-_08096954: .4byte gSharedMem
-_08096958: .4byte 0x000012bc
-_0809695C: .4byte 0x000012be
-_08096960: .4byte 0x0000dacb
-_08096964:
- bl sub_8096874
- ldr r0, _0809698C @ =sub_8096BF0
- bl sub_8096BE0
- ldr r0, _08096990 @ =sub_8096B38
- bl SetMainCallback2
- ldr r0, _08096994 @ =sub_8096AFC
- bl SetVBlankCallback
-_0809697A:
- ldr r1, _08096998 @ =gMain
- ldr r0, _0809699C @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08096986:
- pop {r0}
- bx r0
- .align 2, 0
-_0809698C: .4byte sub_8096BF0
-_08096990: .4byte sub_8096B38
-_08096994: .4byte sub_8096AFC
-_08096998: .4byte gMain
-_0809699C: .4byte 0x0000043c
- thumb_func_end sub_8096884
-
- thumb_func_start sub_80969A0
-sub_80969A0: @ 80969A0
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080969BC @ =gMain
- ldr r1, _080969C0 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xA
- bls _080969B2
- b _08096AE4
-_080969B2:
- lsls r0, 2
- ldr r1, _080969C4 @ =_080969C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080969BC: .4byte gMain
-_080969C0: .4byte 0x0000043c
-_080969C4: .4byte _080969C8
- .align 2, 0
-_080969C8:
- .4byte _080969F4
- .4byte _08096A34
- .4byte _08096A40
- .4byte _08096A50
- .4byte _08096A56
- .4byte _08096A60
- .4byte _08096A66
- .4byte _08096A6C
- .4byte _08096A72
- .4byte _08096AAC
- .4byte _08096AC8
-_080969F4:
- movs r0, 0
- bl SetVBlankCallback
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08096A28 @ =gSharedMem
- ldr r0, _08096A2C @ =gUnknown_0203847D
- ldrb r0, [r0]
- strb r0, [r1, 0x5]
- bl sub_8096804
- ldr r4, _08096A30 @ =gUnknown_0203847F
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _08096A1A
- bl sub_809BBC0
-_08096A1A:
- ldrb r0, [r4]
- cmp r0, 0
- bne _08096AD8
- bl sub_809BD14
- b _08096AD8
- .align 2, 0
-_08096A28: .4byte gSharedMem
-_08096A2C: .4byte gUnknown_0203847D
-_08096A30: .4byte gUnknown_0203847F
-_08096A34:
- ldr r0, _08096A3C @ =gWindowTemplate_81E6D00
- bl Text_LoadWindowTemplate
- b _08096AD8
- .align 2, 0
-_08096A3C: .4byte gWindowTemplate_81E6D00
-_08096A40:
- ldr r0, _08096A4C @ =gWindowTemplate_81E6D00
- bl InitMenuWindow
- bl Menu_EraseScreen
- b _08096AD8
- .align 2, 0
-_08096A4C: .4byte gWindowTemplate_81E6D00
-_08096A50:
- bl sub_80967DC
- b _08096AD8
-_08096A56:
- bl sub_8098B48
- bl sub_809AA98
- b _08096AD8
-_08096A60:
- bl sub_8097DE0
- b _08096AD8
-_08096A66:
- bl sub_8097E70
- b _08096AD8
-_08096A6C:
- bl sub_8098400
- b _08096AD8
-_08096A72:
- ldr r0, _08096A98 @ =gPokemonStorage
- ldrb r0, [r0]
- bl sub_8099BF8
- ldr r2, _08096A9C @ =gSharedMem
- ldr r1, _08096AA0 @ =0x000012bc
- adds r0, r2, r1
- movs r1, 0xA
- strh r1, [r0]
- ldr r1, _08096AA4 @ =0x000012be
- adds r2, r1
- ldr r1, _08096AA8 @ =0x0000dacb
- strh r1, [r2]
- bl sub_80F727C
- bl sub_80F7404
- b _08096AD8
- .align 2, 0
-_08096A98: .4byte gPokemonStorage
-_08096A9C: .4byte gSharedMem
-_08096AA0: .4byte 0x000012bc
-_08096AA4: .4byte 0x000012be
-_08096AA8: .4byte 0x0000dacb
-_08096AAC:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _08096AC4 @ =sub_8096AFC
- bl SetVBlankCallback
- b _08096AD8
- .align 2, 0
-_08096AC4: .4byte sub_8096AFC
-_08096AC8:
- bl sub_8096874
- ldr r0, _08096AEC @ =sub_8096C68
- bl sub_8096BE0
- ldr r0, _08096AF0 @ =sub_8096B38
- bl SetMainCallback2
-_08096AD8:
- ldr r1, _08096AF4 @ =gMain
- ldr r0, _08096AF8 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08096AE4:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08096AEC: .4byte sub_8096C68
-_08096AF0: .4byte sub_8096B38
-_08096AF4: .4byte gMain
-_08096AF8: .4byte 0x0000043c
- thumb_func_end sub_80969A0
-
- thumb_func_start sub_8096AFC
-sub_8096AFC: @ 8096AFC
- push {lr}
- ldr r2, _08096B2C @ =REG_BG2HOFS
- ldr r1, _08096B30 @ =gSharedMem
- ldr r3, _08096B34 @ =0x000008b4
- adds r0, r1, r3
- ldrh r0, [r0]
- strh r0, [r2]
- adds r2, 0x4
- ldrh r0, [r1, 0xA]
- strh r0, [r2]
- adds r2, 0x2
- ldrh r0, [r1, 0x8]
- strh r0, [r2]
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl sub_809CFF0
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- .align 2, 0
-_08096B2C: .4byte REG_BG2HOFS
-_08096B30: .4byte gSharedMem
-_08096B34: .4byte 0x000008b4
- thumb_func_end sub_8096AFC
-
- thumb_func_start sub_8096B38
-sub_8096B38: @ 8096B38
- push {lr}
- ldr r0, _08096B58 @ =gSharedMem
- ldr r0, [r0]
- bl _call_via_r0
- bl sub_8097E44
- bl sub_8098734
- bl AnimateSprites
- bl BuildOamBuffer
- pop {r0}
- bx r0
- .align 2, 0
-_08096B58: .4byte gSharedMem
- thumb_func_end sub_8096B38
-
- thumb_func_start sub_8096B5C
-sub_8096B5C: @ 8096B5C
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, _08096B70 @ =gSharedMem
- ldrb r0, [r4, 0x6]
- cmp r0, 0
- beq _08096B74
- cmp r0, 0x1
- beq _08096BAC
- b _08096BCC
- .align 2, 0
-_08096B70: .4byte gSharedMem
-_08096B74:
- ldr r1, _08096B98 @ =0x00002690
- adds r0, r4, r1
- ldr r0, [r0]
- ldr r2, _08096B9C @ =0x0000268d
- adds r1, r4, r2
- ldrb r1, [r1]
- ldr r3, _08096BA0 @ =0x0000268c
- adds r2, r4, r3
- ldrb r2, [r2]
- ldr r3, _08096BA4 @ =sub_80969A0
- ldr r5, _08096BA8 @ =0x0000268e
- adds r4, r5
- ldrb r4, [r4]
- str r4, [sp]
- bl ShowPokemonSummaryScreen
- b _08096BCC
- .align 2, 0
-_08096B98: .4byte 0x00002690
-_08096B9C: .4byte 0x0000268d
-_08096BA0: .4byte 0x0000268c
-_08096BA4: .4byte sub_80969A0
-_08096BA8: .4byte 0x0000268e
-_08096BAC:
- ldr r0, _08096BD4 @ =gPokemonStorage
- ldrb r2, [r0]
- lsls r1, r2, 3
- adds r1, r2
- ldr r2, _08096BD8 @ =0x00008344
- adds r0, r2
- adds r1, r0
- movs r0, 0
- str r0, [sp]
- ldr r0, _08096BDC @ =sub_80969A0
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DoNamingScreen
-_08096BCC:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08096BD4: .4byte gPokemonStorage
-_08096BD8: .4byte 0x00008344
-_08096BDC: .4byte sub_80969A0
- thumb_func_end sub_8096B5C
-
- thumb_func_start sub_8096BE0
-sub_8096BE0: @ 8096BE0
- ldr r1, _08096BEC @ =gSharedMem
- str r0, [r1]
- movs r0, 0
- strb r0, [r1, 0x4]
- bx lr
- .align 2, 0
-_08096BEC: .4byte gSharedMem
- thumb_func_end sub_8096BE0
-
- thumb_func_start sub_8096BF0
-sub_8096BF0: @ 8096BF0
- push {r4,lr}
- ldr r4, _08096C04 @ =gSharedMem
- ldrb r0, [r4, 0x4]
- cmp r0, 0x1
- beq _08096C16
- cmp r0, 0x1
- bgt _08096C08
- cmp r0, 0
- beq _08096C0E
- b _08096C5C
- .align 2, 0
-_08096C04: .4byte gSharedMem
-_08096C08:
- cmp r0, 0x2
- beq _08096C4C
- b _08096C5C
-_08096C0E:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- b _08096C38
-_08096C16:
- movs r0, 0x2
- bl PlaySE
- movs r1, 0
- movs r0, 0xE
- strh r0, [r4, 0xC]
- ldr r0, _08096C48 @ =0x0000dad0
- strh r0, [r4, 0xE]
- strh r1, [r4, 0x10]
- strh r1, [r4, 0x12]
- adds r0, r4, 0
- adds r0, 0xC
- bl sub_80C5CD4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
-_08096C38:
- movs r2, 0
- bl BlendPalettes
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08096C5C
- .align 2, 0
-_08096C48: .4byte 0x0000dad0
-_08096C4C:
- bl sub_80C5DCC
- lsls r0, 24
- cmp r0, 0
- beq _08096C5C
- ldr r0, _08096C64 @ =sub_8096C84
- bl sub_8096BE0
-_08096C5C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08096C64: .4byte sub_8096C84
- thumb_func_end sub_8096BF0
-
- thumb_func_start sub_8096C68
-sub_8096C68: @ 8096C68
- push {lr}
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08096C7A
- ldr r0, _08096C80 @ =sub_8096C84
- bl sub_8096BE0
-_08096C7A:
- pop {r0}
- bx r0
- .align 2, 0
-_08096C80: .4byte sub_8096C84
- thumb_func_end sub_8096C68
-
- thumb_func_start sub_8096C84
-sub_8096C84: @ 8096C84
- push {r4,lr}
- ldr r0, _08096C9C @ =gSharedMem
- ldrb r0, [r0, 0x4]
- cmp r0, 0x6
- bls _08096C90
- b _08096FBA
-_08096C90:
- lsls r0, 2
- ldr r1, _08096CA0 @ =_08096CA4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08096C9C: .4byte gSharedMem
-_08096CA0: .4byte _08096CA4
- .align 2, 0
-_08096CA4:
- .4byte _08096CC0
- .4byte _08096EE0
- .4byte _08096F1C
- .4byte _08096F60
- .4byte _08096F80
- .4byte _08096F8A
- .4byte _08096FA4
-_08096CC0:
- bl sub_809CA40
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x1
- cmp r0, 0xF
- bls _08096CD0
- b _08096FBA
-_08096CD0:
- lsls r0, 2
- ldr r1, _08096CDC @ =_08096CE0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08096CDC: .4byte _08096CE0
- .align 2, 0
-_08096CE0:
- .4byte _08096D20
- .4byte _08096FBA
- .4byte _08096FBA
- .4byte _08096D94
- .4byte _08096D34
- .4byte _08096D5C
- .4byte _08096DAC
- .4byte _08096DC0
- .4byte _08096DD4
- .4byte _08096DFC
- .4byte _08096E30
- .4byte _08096EB8
- .4byte _08096E70
- .4byte _08096E8C
- .4byte _08096ECC
- .4byte _08096DA0
-_08096D20:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08096D30 @ =gSharedMem
- movs r0, 0x1
- strb r0, [r1, 0x4]
- b _08096FBA
- .align 2, 0
-_08096D30: .4byte gSharedMem
-_08096D34:
- ldr r4, _08096D48 @ =gSharedMem
- ldrb r0, [r4, 0x5]
- cmp r0, 0x2
- beq _08096D4C
- movs r0, 0x10
- bl sub_8098898
- movs r0, 0x3
- strb r0, [r4, 0x4]
- b _08096FBA
- .align 2, 0
-_08096D48: .4byte gSharedMem
-_08096D4C:
- bl sub_809B0D4
- ldr r0, _08096D58 @ =sub_8096FC8
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096D58: .4byte sub_8096FC8
-_08096D5C:
- ldr r4, _08096D88 @ =gSharedMem
- ldrb r0, [r4, 0x5]
- cmp r0, 0x2
- beq _08096D66
- b _08096FBA
-_08096D66:
- bl sub_809BF20
- lsls r0, 24
- cmp r0, 0
- beq _08096D80
- ldr r1, _08096D8C @ =0x000011f2
- adds r0, r4, r1
- ldrh r0, [r0]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- bne _08096E4C
-_08096D80:
- ldr r0, _08096D90 @ =sub_8097004
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096D88: .4byte gSharedMem
-_08096D8C: .4byte 0x000011f2
-_08096D90: .4byte sub_8097004
-_08096D94:
- ldr r0, _08096D9C @ =sub_8097BA0
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096D9C: .4byte sub_8097BA0
-_08096DA0:
- ldr r0, _08096DA8 @ =sub_8097CC0
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096DA8: .4byte sub_8097CC0
-_08096DAC:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08096DBC @ =sub_809789C
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096DBC: .4byte sub_809789C
-_08096DC0:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08096DD0 @ =sub_8097078
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096DD0: .4byte sub_8097078
-_08096DD4:
- movs r0, 0x5
- bl PlaySE
- ldr r4, _08096DF0 @ =gSharedMem
- ldr r0, _08096DF4 @ =gPokemonStorage
- ldrb r0, [r0]
- adds r0, 0x1
- ldr r2, _08096DF8 @ =0x000008b2
- adds r1, r4, r2
- strh r0, [r1]
- cmp r0, 0xD
- ble _08096E18
- movs r0, 0
- b _08096E16
- .align 2, 0
-_08096DF0: .4byte gSharedMem
-_08096DF4: .4byte gPokemonStorage
-_08096DF8: .4byte 0x000008b2
-_08096DFC:
- movs r0, 0x5
- bl PlaySE
- ldr r4, _08096E24 @ =gSharedMem
- ldr r0, _08096E28 @ =gPokemonStorage
- ldrb r0, [r0]
- subs r0, 0x1
- ldr r2, _08096E2C @ =0x000008b2
- adds r1, r4, r2
- strh r0, [r1]
- cmp r0, 0
- bge _08096E18
- movs r0, 0xD
-_08096E16:
- strh r0, [r1]
-_08096E18:
- ldrb r0, [r1]
- bl sub_8099C70
- movs r0, 0x2
- strb r0, [r4, 0x4]
- b _08096FBA
- .align 2, 0
-_08096E24: .4byte gSharedMem
-_08096E28: .4byte gPokemonStorage
-_08096E2C: .4byte 0x000008b2
-_08096E30:
- bl sub_809BE80
- lsls r0, 24
- cmp r0, 0
- bne _08096E96
- ldr r4, _08096E54 @ =gSharedMem
- ldr r1, _08096E58 @ =0x000011f2
- adds r0, r4, r1
- ldrh r0, [r0]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _08096E5C
-_08096E4C:
- movs r0, 0x5
- strb r0, [r4, 0x4]
- b _08096FBA
- .align 2, 0
-_08096E54: .4byte gSharedMem
-_08096E58: .4byte 0x000011f2
-_08096E5C:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08096E6C @ =sub_809746C
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096E6C: .4byte sub_809746C
-_08096E70:
- bl sub_809BE80
- lsls r0, 24
- cmp r0, 0
- bne _08096E96
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08096E88 @ =sub_80972A8
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096E88: .4byte sub_80972A8
-_08096E8C:
- bl sub_809BEBC
- lsls r0, 24
- cmp r0, 0
- bne _08096EA4
-_08096E96:
- ldr r1, _08096EA0 @ =gSharedMem
- movs r0, 0x4
- strb r0, [r1, 0x4]
- b _08096FBA
- .align 2, 0
-_08096EA0: .4byte gSharedMem
-_08096EA4:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08096EB4 @ =c3_0808DC50
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096EB4: .4byte c3_0808DC50
-_08096EB8:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08096EC8 @ =sub_8097390
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096EC8: .4byte sub_8097390
-_08096ECC:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08096EDC @ =sub_80972FC
- bl sub_8096BE0
- b _08096FBA
- .align 2, 0
-_08096EDC: .4byte sub_80972FC
-_08096EE0:
- bl sub_809AC00
- lsls r0, 24
- cmp r0, 0
- bne _08096FBA
- bl sub_809BF48
- lsls r0, 24
- cmp r0, 0
- beq _08096EFA
- bl sub_80986E8
- b _08096EFE
-_08096EFA:
- bl sub_8098710
-_08096EFE:
- ldr r4, _08096F14 @ =gSharedMem
- ldr r2, _08096F18 @ =0x000011f6
- adds r0, r4, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _08096F0E
- bl BoxSetMosaic
-_08096F0E:
- movs r0, 0
- strb r0, [r4, 0x4]
- b _08096FBA
- .align 2, 0
-_08096F14: .4byte gSharedMem
-_08096F18: .4byte 0x000011f6
-_08096F1C:
- bl sub_8099D34
- lsls r0, 24
- cmp r0, 0
- bne _08096FBA
- ldr r1, _08096F50 @ =gPokemonStorage
- ldr r0, _08096F54 @ =gSharedMem
- ldr r2, _08096F58 @ =0x000008b2
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldr r0, _08096F5C @ =gUnknown_0203847C
- ldrb r0, [r0]
- cmp r0, 0
- bne _08096F70
- bl sub_809BF20
- lsls r0, 24
- cmp r0, 0
- bne _08096F70
- bl sub_809B440
- bl BoxSetMosaic
- b _08096F70
- .align 2, 0
-_08096F50: .4byte gPokemonStorage
-_08096F54: .4byte gSharedMem
-_08096F58: .4byte 0x000008b2
-_08096F5C: .4byte gUnknown_0203847C
-_08096F60:
- ldr r0, _08096F78 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF3
- ands r0, r1
- cmp r0, 0
- beq _08096FBA
- bl sub_8098A5C
-_08096F70:
- ldr r1, _08096F7C @ =gSharedMem
- movs r0, 0
- strb r0, [r1, 0x4]
- b _08096FBA
- .align 2, 0
-_08096F78: .4byte gMain
-_08096F7C: .4byte gSharedMem
-_08096F80:
- movs r0, 0x20
- bl PlaySE
- movs r0, 0xD
- b _08096F92
-_08096F8A:
- movs r0, 0x20
- bl PlaySE
- movs r0, 0x16
-_08096F92:
- bl sub_8098898
- ldr r1, _08096FA0 @ =gSharedMem
- movs r0, 0x6
- strb r0, [r1, 0x4]
- b _08096FBA
- .align 2, 0
-_08096FA0: .4byte gSharedMem
-_08096FA4:
- ldr r0, _08096FC0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF3
- ands r0, r1
- cmp r0, 0
- beq _08096FBA
- bl sub_8098A5C
- ldr r0, _08096FC4 @ =sub_8096C84
- bl sub_8096BE0
-_08096FBA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08096FC0: .4byte gMain
-_08096FC4: .4byte sub_8096C84
- thumb_func_end sub_8096C84
-
- thumb_func_start sub_8096FC8
-sub_8096FC8: @ 8096FC8
- push {r4,lr}
- ldr r4, _08096FD8 @ =gSharedMem
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _08096FDC
- cmp r0, 0x1
- beq _08096FE8
- b _08096FF8
- .align 2, 0
-_08096FD8: .4byte gSharedMem
-_08096FDC:
- bl sub_809880C
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08096FF8
-_08096FE8:
- bl sub_8098830
- lsls r0, 24
- cmp r0, 0
- bne _08096FF8
- ldr r0, _08097000 @ =sub_8096C84
- bl sub_8096BE0
-_08096FF8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097000: .4byte sub_8096C84
- thumb_func_end sub_8096FC8
-
- thumb_func_start sub_8097004
-sub_8097004: @ 8097004
- push {r4,lr}
- ldr r4, _08097018 @ =gSharedMem
- ldrb r0, [r4, 0x4]
- cmp r0, 0x1
- beq _0809702E
- cmp r0, 0x1
- bgt _0809701C
- cmp r0, 0
- beq _08097022
- b _0809706A
- .align 2, 0
-_08097018: .4byte gSharedMem
-_0809701C:
- cmp r0, 0x2
- beq _0809704C
- b _0809706A
-_08097022:
- movs r0, 0x5
- bl PlaySE
- bl add_to_c3_somehow
- b _08097044
-_0809702E:
- bl sub_80985CC
- lsls r0, 24
- cmp r0, 0
- bne _0809706A
- bl sub_809B0F4
- lsls r0, 24
- lsrs r0, 24
- bl sub_809B0C0
-_08097044:
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _0809706A
-_0809704C:
- bl sub_809AC00
- lsls r0, 24
- cmp r0, 0
- bne _0809706A
- ldr r1, _08097070 @ =0x000011f6
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08097064
- bl BoxSetMosaic
-_08097064:
- ldr r0, _08097074 @ =sub_8096C84
- bl sub_8096BE0
-_0809706A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097070: .4byte 0x000011f6
-_08097074: .4byte sub_8096C84
- thumb_func_end sub_8097004
-
- thumb_func_start sub_8097078
-sub_8097078: @ 8097078
- push {r4,lr}
- ldr r0, _08097090 @ =gSharedMem
- ldrb r0, [r0, 0x4]
- cmp r0, 0x5
- bls _08097084
- b _0809729A
-_08097084:
- lsls r0, 2
- ldr r1, _08097094 @ =_08097098
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08097090: .4byte gSharedMem
-_08097094: .4byte _08097098
- .align 2, 0
-_08097098:
- .4byte _080970B0
- .4byte _080970C8
- .4byte _08097258
- .4byte _0809726C
- .4byte _08097262
- .4byte _08097284
-_080970B0:
- movs r0, 0x4
- bl sub_8098898
- bl sub_809CE84
- ldr r1, _080970C4 @ =gSharedMem
- movs r0, 0x1
- strb r0, [r1, 0x4]
- b _0809729A
- .align 2, 0
-_080970C4: .4byte gSharedMem
-_080970C8:
- bl sub_809CF30
- adds r0, 0x1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x9
- bls _080970D8
- b _0809729A
-_080970D8:
- lsls r0, 2
- ldr r1, _080970E4 @ =_080970E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080970E4: .4byte _080970E8
- .align 2, 0
-_080970E8:
- .4byte _08097110
- .4byte _08097110
- .4byte _08097190
- .4byte _08097178
- .4byte _08097120
- .4byte _08097158
- .4byte _08097140
- .4byte _08097230
- .4byte _080971CC
- .4byte _08097244
-_08097110:
- bl sub_8098A5C
- ldr r0, _0809711C @ =sub_8096C84
- bl sub_8096BE0
- b _0809729A
- .align 2, 0
-_0809711C: .4byte sub_8096C84
-_08097120:
- bl sub_809BE80
- lsls r0, 24
- cmp r0, 0
- bne _080971D6
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldr r0, _0809713C @ =sub_80972A8
- bl sub_8096BE0
- b _0809729A
- .align 2, 0
-_0809713C: .4byte sub_80972A8
-_08097140:
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldr r0, _08097154 @ =sub_80972FC
- bl sub_8096BE0
- b _0809729A
- .align 2, 0
-_08097154: .4byte sub_80972FC
-_08097158:
- bl sub_809BEBC
- lsls r0, 24
- cmp r0, 0
- beq _080971D6
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldr r0, _08097174 @ =c3_0808DC50
- bl sub_8096BE0
- b _0809729A
- .align 2, 0
-_08097174: .4byte c3_0808DC50
-_08097178:
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldr r0, _0809718C @ =sub_8097390
- bl sub_8096BE0
- b _0809729A
- .align 2, 0
-_0809718C: .4byte sub_8097390
-_08097190:
- bl sub_809BE80
- lsls r0, 24
- cmp r0, 0
- bne _080971D6
- ldr r4, _080971C0 @ =gSharedMem
- ldr r1, _080971C4 @ =0x000011f2
- adds r0, r4, r1
- ldrh r0, [r0]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- bne _08097210
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldr r0, _080971C8 @ =sub_809746C
- bl sub_8096BE0
- b _0809729A
- .align 2, 0
-_080971C0: .4byte gSharedMem
-_080971C4: .4byte 0x000011f2
-_080971C8: .4byte sub_809746C
-_080971CC:
- bl sub_809BE80
- lsls r0, 24
- cmp r0, 0
- beq _080971E4
-_080971D6:
- ldr r1, _080971E0 @ =gSharedMem
- movs r0, 0x2
- strb r0, [r1, 0x4]
- b _0809729A
- .align 2, 0
-_080971E0: .4byte gSharedMem
-_080971E4:
- ldr r4, _080971F8 @ =gSharedMem
- ldr r1, _080971FC @ =0x000011f9
- adds r0, r4, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08097200
- movs r0, 0x4
- strb r0, [r4, 0x4]
- b _0809729A
- .align 2, 0
-_080971F8: .4byte gSharedMem
-_080971FC: .4byte 0x000011f9
-_08097200:
- ldr r1, _08097218 @ =0x000011f2
- adds r0, r4, r1
- ldrh r0, [r0]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _0809721C
-_08097210:
- movs r0, 0x3
- strb r0, [r4, 0x4]
- b _0809729A
- .align 2, 0
-_08097218: .4byte 0x000011f2
-_0809721C:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0809722C @ =sub_8097594
- bl sub_8096BE0
- b _0809729A
- .align 2, 0
-_0809722C: .4byte sub_8097594
-_08097230:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08097240 @ =sub_8097788
- bl sub_8096BE0
- b _0809729A
- .align 2, 0
-_08097240: .4byte sub_8097788
-_08097244:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08097254 @ =sub_80977E4
- bl sub_8096BE0
- b _0809729A
- .align 2, 0
-_08097254: .4byte sub_80977E4
-_08097258:
- movs r0, 0x20
- bl PlaySE
- movs r0, 0xD
- b _08097274
-_08097262:
- movs r0, 0x20
- bl PlaySE
- movs r0, 0x11
- b _08097274
-_0809726C:
- movs r0, 0x20
- bl PlaySE
- movs r0, 0x16
-_08097274:
- bl sub_8098898
- ldr r1, _08097280 @ =gSharedMem
- movs r0, 0x5
- strb r0, [r1, 0x4]
- b _0809729A
- .align 2, 0
-_08097280: .4byte gSharedMem
-_08097284:
- ldr r0, _080972A0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF3
- ands r0, r1
- cmp r0, 0
- beq _0809729A
- bl sub_8098A5C
- ldr r0, _080972A4 @ =sub_8096C84
- bl sub_8096BE0
-_0809729A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080972A0: .4byte gMain
-_080972A4: .4byte sub_8096C84
- thumb_func_end sub_8097078
-
- thumb_func_start sub_80972A8
-sub_80972A8: @ 80972A8
- push {r4,lr}
- ldr r4, _080972B8 @ =gSharedMem
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _080972BC
- cmp r0, 0x1
- beq _080972CA
- b _080972F2
- .align 2, 0
-_080972B8: .4byte gSharedMem
-_080972BC:
- movs r0, 0
- bl sub_809B100
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _080972F2
-_080972CA:
- bl sub_809B130
- lsls r0, 24
- cmp r0, 0
- bne _080972F2
- ldr r0, _080972E4 @ =gUnknown_0203847C
- ldrb r0, [r0]
- cmp r0, 0
- beq _080972EC
- ldr r0, _080972E8 @ =sub_8097858
- bl sub_8096BE0
- b _080972F2
- .align 2, 0
-_080972E4: .4byte gUnknown_0203847C
-_080972E8: .4byte sub_8097858
-_080972EC:
- ldr r0, _080972F8 @ =sub_8096C84
- bl sub_8096BE0
-_080972F2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080972F8: .4byte sub_8096C84
- thumb_func_end sub_80972A8
-
- thumb_func_start sub_80972FC
-sub_80972FC: @ 80972FC
- push {r4,lr}
- ldr r4, _0809730C @ =gSharedMem
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _08097310
- cmp r0, 0x1
- beq _0809731E
- b _08097346
- .align 2, 0
-_0809730C: .4byte gSharedMem
-_08097310:
- movs r0, 0x1
- bl sub_809B100
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08097346
-_0809731E:
- bl sub_809B130
- lsls r0, 24
- cmp r0, 0
- bne _08097346
- ldr r0, _08097338 @ =gUnknown_0203847C
- ldrb r0, [r0]
- cmp r0, 0
- beq _08097340
- ldr r0, _0809733C @ =sub_8097858
- bl sub_8096BE0
- b _08097346
- .align 2, 0
-_08097338: .4byte gUnknown_0203847C
-_0809733C: .4byte sub_8097858
-_08097340:
- ldr r0, _0809734C @ =sub_8096C84
- bl sub_8096BE0
-_08097346:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809734C: .4byte sub_8096C84
- thumb_func_end sub_80972FC
-
- thumb_func_start c3_0808DC50
-c3_0808DC50: @ 8097350
- push {r4,lr}
- ldr r4, _08097360 @ =gSharedMem
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _08097364
- cmp r0, 0x1
- beq _08097372
- b _08097386
- .align 2, 0
-_08097360: .4byte gSharedMem
-_08097364:
- movs r0, 0x2
- bl sub_809B100
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08097386
-_08097372:
- bl sub_809B130
- lsls r0, 24
- cmp r0, 0
- bne _08097386
- bl BoxSetMosaic
- ldr r0, _0809738C @ =sub_8096C84
- bl sub_8096BE0
-_08097386:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809738C: .4byte sub_8096C84
- thumb_func_end c3_0808DC50
-
- thumb_func_start sub_8097390
-sub_8097390: @ 8097390
- push {lr}
- ldr r0, _080973A4 @ =gSharedMem
- ldrb r0, [r0, 0x4]
- cmp r0, 0x5
- bhi _08097462
- lsls r0, 2
- ldr r1, _080973A8 @ =_080973AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080973A4: .4byte gSharedMem
-_080973A8: .4byte _080973AC
- .align 2, 0
-_080973AC:
- .4byte _080973C4
- .4byte _080973FC
- .4byte _0809741C
- .4byte _0809742C
- .4byte _0809743E
- .4byte _0809745C
-_080973C4:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bne _080973E4
- movs r0, 0xE
- bl sub_8098898
- ldr r1, _080973E0 @ =gSharedMem
- movs r0, 0x1
- strb r0, [r1, 0x4]
- b _08097462
- .align 2, 0
-_080973E0: .4byte gSharedMem
-_080973E4:
- bl sub_809B0E0
- movs r0, 0
- bl sub_809B100
- ldr r1, _080973F8 @ =gSharedMem
- movs r0, 0x2
- strb r0, [r1, 0x4]
- b _08097462
- .align 2, 0
-_080973F8: .4byte gSharedMem
-_080973FC:
- ldr r0, _08097414 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF3
- ands r0, r1
- cmp r0, 0
- beq _08097462
- bl sub_8098A5C
- ldr r0, _08097418 @ =sub_8096C84
- bl sub_8096BE0
- b _08097462
- .align 2, 0
-_08097414: .4byte gMain
-_08097418: .4byte sub_8096C84
-_0809741C:
- bl sub_809B130
- lsls r0, 24
- cmp r0, 0
- bne _08097462
- bl sub_809880C
- b _0809744C
-_0809742C:
- bl sub_8098830
- lsls r0, 24
- cmp r0, 0
- bne _08097462
- movs r0, 0x1
- bl sub_809B100
- b _0809744C
-_0809743E:
- bl sub_809B130
- lsls r0, 24
- cmp r0, 0
- bne _08097462
- bl sub_80987DC
-_0809744C:
- ldr r1, _08097458 @ =gSharedMem
- ldrb r0, [r1, 0x4]
- adds r0, 0x1
- strb r0, [r1, 0x4]
- b _08097462
- .align 2, 0
-_08097458: .4byte gSharedMem
-_0809745C:
- ldr r0, _08097468 @ =sub_8097004
- bl sub_8096BE0
-_08097462:
- pop {r0}
- bx r0
- .align 2, 0
-_08097468: .4byte sub_8097004
- thumb_func_end sub_8097390
-
- thumb_func_start sub_809746C
-sub_809746C: @ 809746C
- push {r4,lr}
- ldr r0, _08097484 @ =gSharedMem
- ldrb r0, [r0, 0x4]
- cmp r0, 0x4
- bls _08097478
- b _08097584
-_08097478:
- lsls r0, 2
- ldr r1, _08097488 @ =_0809748C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08097484: .4byte gSharedMem
-_08097488: .4byte _0809748C
- .align 2, 0
-_0809748C:
- .4byte _080974A0
- .4byte _080974D8
- .4byte _08097534
- .4byte _08097548
- .4byte _0809756C
-_080974A0:
- movs r0, 0x6
- bl sub_8098898
- ldr r4, _080974C8 @ =gSharedMem + 0x2370
- ldr r2, _080974CC @ =0x0000daca
- adds r0, r4, 0
- movs r1, 0x7
- movs r3, 0x3
- bl sub_8096264
- ldr r0, _080974D0 @ =gUnknown_0203847E
- ldrb r0, [r0]
- bl sub_809634C
- ldr r0, _080974D4 @ =0xffffdc90
- adds r4, r0
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08097584
- .align 2, 0
-_080974C8: .4byte gSharedMem + 0x2370
-_080974CC: .4byte 0x0000daca
-_080974D0: .4byte gUnknown_0203847E
-_080974D4: .4byte 0xffffdc90
-_080974D8:
- bl sub_8096368
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xC8
- beq _08097584
- cmp r4, 0xC9
- bne _080974F6
- bl sub_8098A5C
- bl sub_809635C
- bl sub_8096310
- b _0809755E
-_080974F6:
- adds r0, r4, 0
- bl sub_809B62C
- lsls r0, 24
- cmp r0, 0
- beq _08097518
- bl sub_8098A5C
- bl sub_809635C
- bl sub_8096310
- ldr r1, _08097514 @ =gSharedMem
- movs r0, 0x2
- b _08097522
- .align 2, 0
-_08097514: .4byte gSharedMem
-_08097518:
- movs r0, 0x8
- bl sub_8098898
- ldr r1, _0809752C @ =gSharedMem
- movs r0, 0x4
-_08097522:
- strb r0, [r1, 0x4]
- ldr r0, _08097530 @ =gUnknown_0203847E
- strb r4, [r0]
- b _08097584
- .align 2, 0
-_0809752C: .4byte gSharedMem
-_08097530: .4byte gUnknown_0203847E
-_08097534:
- bl party_compaction
- bl sub_8099310
- ldr r1, _08097544 @ =gSharedMem
- ldrb r0, [r1, 0x4]
- adds r0, 0x1
- b _08097582
- .align 2, 0
-_08097544: .4byte gSharedMem
-_08097548:
- bl sub_8099374
- lsls r0, 24
- cmp r0, 0
- bne _08097584
- bl sub_809B6BC
- bl BoxSetMosaic
- bl sub_80987DC
-_0809755E:
- ldr r0, _08097568 @ =sub_8096C84
- bl sub_8096BE0
- b _08097584
- .align 2, 0
-_08097568: .4byte sub_8096C84
-_0809756C:
- ldr r0, _0809758C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _08097584
- movs r0, 0x6
- bl sub_8098898
- ldr r1, _08097590 @ =gSharedMem
- movs r0, 0x1
-_08097582:
- strb r0, [r1, 0x4]
-_08097584:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809758C: .4byte gMain
-_08097590: .4byte gSharedMem
- thumb_func_end sub_809746C
-
- thumb_func_start sub_8097594
-sub_8097594: @ 8097594
- push {r4,lr}
- ldr r0, _080975AC @ =gSharedMem
- ldrb r0, [r0, 0x4]
- cmp r0, 0xD
- bls _080975A0
- b _0809777A
-_080975A0:
- lsls r0, 2
- ldr r1, _080975B0 @ =_080975B4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080975AC: .4byte gSharedMem
-_080975B0: .4byte _080975B4
- .align 2, 0
-_080975B4:
- .4byte _080975EC
- .4byte _08097600
- .4byte _0809763A
- .4byte _0809766E
- .4byte _0809767A
- .4byte _08097690
- .4byte _080976C8
- .4byte _080976E0
- .4byte _080976EC
- .4byte _080976F0
- .4byte _08097704
- .4byte _08097720
- .4byte _08097732
- .4byte _08097764
-_080975EC:
- movs r0, 0x9
- bl sub_8098898
- movs r0, 0x1
- bl sub_8098A38
- ldr r1, _0809761C @ =gSharedMem
- ldrb r0, [r1, 0x4]
- adds r0, 0x1
- strb r0, [r1, 0x4]
-_08097600:
- bl Menu_ProcessInputNoWrap
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0809762C
- cmp r1, 0
- bgt _08097620
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08097626
- b _0809777A
- .align 2, 0
-_0809761C: .4byte gSharedMem
-_08097620:
- cmp r1, 0x1
- beq _08097626
- b _0809777A
-_08097626:
- bl sub_8098A5C
- b _080976E0
-_0809762C:
- bl sub_8098A5C
- bl sub_809B7D4
- bl sub_809B6DC
- b _08097744
-_0809763A:
- bl sub_809B960
- bl sub_809B734
- lsls r0, 24
- cmp r0, 0
- beq _0809764A
- b _0809777A
-_0809764A:
- ldr r4, _08097650 @ =gSharedMem
- b _0809765A
- .align 2, 0
-_08097650: .4byte gSharedMem
-_08097654:
- cmp r0, 0
- bne _0809765A
- b _08097758
-_0809765A:
- bl sub_809B960
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _08097654
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _0809777A
-_0809766E:
- bl sub_809B760
- bl sub_809801C
- movs r0, 0xA
- b _08097740
-_0809767A:
- ldr r0, _0809768C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08097688
- b _0809777A
-_08097688:
- movs r0, 0xB
- b _08097740
- .align 2, 0
-_0809768C: .4byte gMain
-_08097690:
- ldr r0, _080976B4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0809777A
- bl sub_8098A5C
- ldr r0, _080976B8 @ =gUnknown_0203847C
- ldrb r0, [r0]
- cmp r0, 0
- beq _080976BC
- bl party_compaction
- bl sub_8099310
- b _08097744
- .align 2, 0
-_080976B4: .4byte gMain
-_080976B8: .4byte gUnknown_0203847C
-_080976BC:
- ldr r1, _080976C4 @ =gSharedMem
- movs r0, 0x7
- strb r0, [r1, 0x4]
- b _0809777A
- .align 2, 0
-_080976C4: .4byte gSharedMem
-_080976C8:
- bl sub_8099374
- lsls r0, 24
- cmp r0, 0
- bne _0809777A
- bl sub_809B440
- bl BoxSetMosaic
- bl sub_80987DC
- b _08097744
-_080976E0:
- ldr r0, _080976E8 @ =sub_8096C84
- bl sub_8096BE0
- b _0809777A
- .align 2, 0
-_080976E8: .4byte sub_8096C84
-_080976EC:
- movs r0, 0xA
- b _08097740
-_080976F0:
- ldr r0, _08097700 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0809777A
- movs r0, 0x15
- b _08097740
- .align 2, 0
-_08097700: .4byte gMain
-_08097704:
- ldr r0, _0809771C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0809777A
- bl sub_8098A5C
- bl sub_8099958
- b _08097744
- .align 2, 0
-_0809771C: .4byte gMain
-_08097720:
- bl sub_8099990
- lsls r0, 24
- cmp r0, 0
- bne _0809777A
- bl sub_809B7AC
- movs r0, 0x13
- b _08097740
-_08097732:
- ldr r0, _08097750 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0809777A
- movs r0, 0x14
-_08097740:
- bl sub_8098898
-_08097744:
- ldr r1, _08097754 @ =gSharedMem
- ldrb r0, [r1, 0x4]
- adds r0, 0x1
- strb r0, [r1, 0x4]
- b _0809777A
- .align 2, 0
-_08097750: .4byte gMain
-_08097754: .4byte gSharedMem
-_08097758:
- ldr r1, _08097760 @ =gSharedMem
- movs r0, 0x8
- strb r0, [r1, 0x4]
- b _0809777A
- .align 2, 0
-_08097760: .4byte gSharedMem
-_08097764:
- ldr r0, _08097780 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- beq _0809777A
- bl sub_8098A5C
- ldr r0, _08097784 @ =sub_8096C84
- bl sub_8096BE0
-_0809777A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097780: .4byte gMain
-_08097784: .4byte sub_8096C84
- thumb_func_end sub_8097594
-
- thumb_func_start sub_8097788
-sub_8097788: @ 8097788
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _0809779C @ =gSharedMem
- ldrb r4, [r5, 0x4]
- cmp r4, 0
- beq _080977A0
- cmp r4, 0x1
- beq _080977BC
- b _080977D4
- .align 2, 0
-_0809779C: .4byte gSharedMem
-_080977A0:
- bl sub_809BC18
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- b _080977D4
-_080977BC:
- bl UpdatePaletteFade
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080977D4
- ldr r0, _080977DC @ =gUnknown_0203847F
- strb r1, [r0]
- strb r1, [r5, 0x6]
- ldr r0, _080977E0 @ =sub_8096B5C
- bl SetMainCallback2
-_080977D4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080977DC: .4byte gUnknown_0203847F
-_080977E0: .4byte sub_8096B5C
- thumb_func_end sub_8097788
-
- thumb_func_start sub_80977E4
-sub_80977E4: @ 80977E4
- push {r4,lr}
- ldr r4, _080977F4 @ =gSharedMem
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _080977F8
- cmp r0, 0x1
- beq _08097824
- b _0809784C
- .align 2, 0
-_080977F4: .4byte gSharedMem
-_080977F8:
- movs r0, 0xC
- bl sub_8098898
- ldr r0, _08097820 @ =0x000011f7
- adds r2, r4, r0
- ldrb r1, [r2]
- movs r3, 0x96
- lsls r3, 5
- adds r0, r4, r3
- strb r1, [r0]
- ldrb r0, [r2]
- movs r1, 0xB0
- movs r2, 0x10
- bl sub_80F7418
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _0809784C
- .align 2, 0
-_08097820: .4byte 0x000011f7
-_08097824:
- bl sub_80F7500
- lsls r0, 24
- cmp r0, 0
- bne _0809784C
- bl sub_80F7470
- bl sub_8098A5C
- movs r1, 0x96
- lsls r1, 5
- adds r0, r4, r1
- ldrb r0, [r0]
- bl sub_809BDD8
- bl sub_809801C
- ldr r0, _08097854 @ =sub_8096C84
- bl sub_8096BE0
-_0809784C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097854: .4byte sub_8096C84
- thumb_func_end sub_80977E4
-
- thumb_func_start sub_8097858
-sub_8097858: @ 8097858
- push {r4,lr}
- ldr r4, _08097868 @ =gSharedMem
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _0809786C
- cmp r0, 0x1
- beq _0809787C
- b _08097890
- .align 2, 0
-_08097868: .4byte gSharedMem
-_0809786C:
- bl party_compaction
- bl sub_8099310
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08097890
-_0809787C:
- bl sub_8099374
- lsls r0, 24
- cmp r0, 0
- bne _08097890
- bl sub_80987DC
- ldr r0, _08097898 @ =sub_8096C84
- bl sub_8096BE0
-_08097890:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097898: .4byte sub_8096C84
- thumb_func_end sub_8097858
-
- thumb_func_start sub_809789C
-sub_809789C: @ 809789C
- push {r4,lr}
- ldr r4, _080978AC @ =gSharedMem
- ldrb r0, [r4, 0x4]
- cmp r0, 0
- beq _080978B0
- cmp r0, 0x1
- beq _080978C2
- b _08097968
- .align 2, 0
-_080978AC: .4byte gSharedMem
-_080978B0:
- movs r0, 0x1
- bl sub_8098898
- bl sub_809CE84
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08097968
-_080978C2:
- bl sub_809CF30
- adds r0, 0x1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bhi _08097968
- lsls r0, 2
- ldr r1, _080978DC @ =_080978E0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080978DC: .4byte _080978E0
- .align 2, 0
-_080978E0:
- .4byte _08097914
- .4byte _08097914
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097968
- .4byte _08097958
- .4byte _08097940
- .4byte _0809792C
-_08097914:
- movs r0, 0x1
- bl sub_809A860
- bl sub_8098A5C
- ldr r0, _08097928 @ =sub_8096C84
- bl sub_8096BE0
- b _08097968
- .align 2, 0
-_08097928: .4byte sub_8096C84
-_0809792C:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0809793C @ =sub_8097B44
- bl sub_8096BE0
- b _08097968
- .align 2, 0
-_0809793C: .4byte sub_8097B44
-_08097940:
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldr r0, _08097954 @ =sub_8097974
- bl sub_8096BE0
- b _08097968
- .align 2, 0
-_08097954: .4byte sub_8097974
-_08097958:
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldr r0, _08097970 @ =sub_8097A64
- bl sub_8096BE0
-_08097968:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097970: .4byte sub_8097A64
- thumb_func_end sub_809789C
-
- thumb_func_start sub_8097974
-sub_8097974: @ 8097974
- push {r4,r5,lr}
- ldr r5, _08097988 @ =gSharedMem
- ldrb r0, [r5, 0x4]
- cmp r0, 0x1
- beq _080979A2
- cmp r0, 0x1
- bgt _0809798C
- cmp r0, 0
- beq _08097996
- b _08097A5A
- .align 2, 0
-_08097988: .4byte gSharedMem
-_0809798C:
- cmp r0, 0x2
- beq _080979FC
- cmp r0, 0x3
- beq _08097A44
- b _08097A5A
-_08097996:
- bl sub_8098A80
- movs r0, 0x2
- bl sub_8098898
- b _08097A3C
-_080979A2:
- bl sub_809CF30
- ldr r1, _080979CC @ =0x00000d5e
- adds r4, r5, r1
- strh r0, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080979D4
- movs r0, 0x1
- bl sub_809A860
- bl sub_8098A5C
- ldr r0, _080979D0 @ =sub_8096C84
- bl sub_8096BE0
- b _08097A5A
- .align 2, 0
-_080979CC: .4byte 0x00000d5e
-_080979D0: .4byte sub_8096C84
-_080979D4:
- cmp r0, r1
- blt _08097A5A
- cmp r0, 0xF
- bgt _08097A5A
- cmp r0, 0xC
- blt _08097A5A
- movs r0, 0x5
- bl PlaySE
- ldrh r0, [r4]
- subs r0, 0xC
- strh r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8098AA8
- movs r0, 0x3
- bl sub_8098898
- b _08097A3C
-_080979FC:
- bl sub_809CF30
- movs r1, 0xD6
- lsls r1, 4
- adds r4, r5, r1
- strh r0, [r4]
- movs r0, 0
- ldrsh r1, [r4, r0]
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- beq _08097A5A
- adds r0, 0x1
- cmp r1, r0
- bne _08097A24
- bl sub_8098A5C
- movs r0, 0
- strb r0, [r5, 0x4]
- b _08097A5A
-_08097A24:
- movs r0, 0x5
- bl PlaySE
- bl sub_8098A5C
- ldrh r0, [r4]
- subs r0, 0x10
- strh r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- bl sub_8099DCC
-_08097A3C:
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- b _08097A5A
-_08097A44:
- bl sub_8099E08
- lsls r0, 24
- cmp r0, 0
- bne _08097A5A
- movs r0, 0x1
- bl sub_809A860
- ldr r0, _08097A60 @ =sub_8096C84
- bl sub_8096BE0
-_08097A5A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08097A60: .4byte sub_8096C84
- thumb_func_end sub_8097974
-
- thumb_func_start sub_8097A64
-sub_8097A64: @ 8097A64
- push {r4,r5,lr}
- ldr r5, _08097A78 @ =gSharedMem
- ldrb r0, [r5, 0x4]
- cmp r0, 0x1
- beq _08097AB0
- cmp r0, 0x1
- bgt _08097A7C
- cmp r0, 0
- beq _08097A86
- b _08097B32
- .align 2, 0
-_08097A78: .4byte gSharedMem
-_08097A7C:
- cmp r0, 0x2
- beq _08097B00
- cmp r0, 0x3
- beq _08097B18
- b _08097B32
-_08097A86:
- movs r0, 0x5
- bl sub_8098898
- ldr r1, _08097AA4 @ =0x00002370
- adds r0, r5, r1
- ldr r2, _08097AA8 @ =0x0000daca
- movs r1, 0x7
- movs r3, 0x3
- bl sub_8096264
- ldr r0, _08097AAC @ =gPokemonStorage
- ldrb r0, [r0]
- bl sub_809634C
- b _08097B0A
- .align 2, 0
-_08097AA4: .4byte 0x00002370
-_08097AA8: .4byte 0x0000daca
-_08097AAC: .4byte gPokemonStorage
-_08097AB0:
- bl sub_8096368
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08097AF4 @ =0x000008b2
- adds r4, r5, r2
- strh r0, [r4]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0xC8
- beq _08097B32
- bl sub_8098A5C
- bl sub_809635C
- bl sub_8096310
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0xC9
- beq _08097AE4
- adds r1, r0, 0
- ldr r0, _08097AF8 @ =gPokemonStorage
- ldrb r0, [r0]
- cmp r1, r0
- bne _08097B0A
-_08097AE4:
- movs r0, 0x1
- bl sub_809A860
- ldr r0, _08097AFC @ =sub_8096C84
- bl sub_8096BE0
- b _08097B32
- .align 2, 0
-_08097AF4: .4byte 0x000008b2
-_08097AF8: .4byte gPokemonStorage
-_08097AFC: .4byte sub_8096C84
-_08097B00:
- ldr r1, _08097B14 @ =0x000008b2
- adds r0, r5, r1
- ldrb r0, [r0]
- bl sub_8099C70
-_08097B0A:
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- b _08097B32
- .align 2, 0
-_08097B14: .4byte 0x000008b2
-_08097B18:
- bl sub_8099D34
- lsls r0, 24
- cmp r0, 0
- bne _08097B32
- ldr r1, _08097B38 @ =gPokemonStorage
- ldr r2, _08097B3C @ =0x000008b2
- adds r0, r5, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldr r0, _08097B40 @ =sub_8096C84
- bl sub_8096BE0
-_08097B32:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08097B38: .4byte gPokemonStorage
-_08097B3C: .4byte 0x000008b2
-_08097B40: .4byte sub_8096C84
- thumb_func_end sub_8097A64
-
- thumb_func_start sub_8097B44
-sub_8097B44: @ 8097B44
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _08097B58 @ =gSharedMem
- ldrb r4, [r5, 0x4]
- cmp r4, 0
- beq _08097B5C
- cmp r4, 0x1
- beq _08097B78
- b _08097B8E
- .align 2, 0
-_08097B58: .4byte gSharedMem
-_08097B5C:
- bl sub_809BB90
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrb r0, [r5, 0x4]
- adds r0, 0x1
- strb r0, [r5, 0x4]
- b _08097B8E
-_08097B78:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08097B8E
- ldr r0, _08097B98 @ =gUnknown_0203847F
- strb r4, [r0]
- strb r4, [r5, 0x6]
- ldr r0, _08097B9C @ =sub_8096B5C
- bl SetMainCallback2
-_08097B8E:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08097B98: .4byte gUnknown_0203847F
-_08097B9C: .4byte sub_8096B5C
- thumb_func_end sub_8097B44
-
- thumb_func_start sub_8097BA0
-sub_8097BA0: @ 8097BA0
- push {r4,lr}
- ldr r0, _08097BB8 @ =gSharedMem
- ldrb r1, [r0, 0x4]
- adds r4, r0, 0
- cmp r1, 0x4
- bls _08097BAE
- b _08097CB0
-_08097BAE:
- lsls r0, r1, 2
- ldr r1, _08097BBC @ =_08097BC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08097BB8: .4byte gSharedMem
-_08097BBC: .4byte _08097BC0
- .align 2, 0
-_08097BC0:
- .4byte _08097BD4
- .4byte _08097C18
- .4byte _08097C2C
- .4byte _08097C74
- .4byte _08097C98
-_08097BD4:
- bl sub_809BF20
- lsls r0, 24
- cmp r0, 0
- beq _08097BF8
- movs r0, 0x20
- bl PlaySE
- movs r0, 0xF
- bl sub_8098898
- ldr r1, _08097BF4 @ =gSharedMem
- movs r0, 0x1
- strb r0, [r1, 0x4]
- b _08097CB0
- .align 2, 0
-_08097BF4: .4byte gSharedMem
-_08097BF8:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_8098898
- movs r0, 0
- bl sub_8098A38
- ldr r1, _08097C14 @ =gSharedMem
- movs r0, 0x2
- strb r0, [r1, 0x4]
- b _08097CB0
- .align 2, 0
-_08097C14: .4byte gSharedMem
-_08097C18:
- ldr r0, _08097C28 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF3
- ands r0, r1
- cmp r0, 0
- beq _08097CB0
- b _08097C4A
- .align 2, 0
-_08097C28: .4byte gMain
-_08097C2C:
- bl Menu_ProcessInputNoWrap
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08097C5C
- cmp r1, 0
- bgt _08097C46
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08097C4A
- b _08097CB0
-_08097C46:
- cmp r1, 0x1
- bne _08097CB0
-_08097C4A:
- bl sub_8098A5C
- ldr r0, _08097C58 @ =sub_8096C84
- bl sub_8096BE0
- b _08097CB0
- .align 2, 0
-_08097C58: .4byte sub_8096C84
-_08097C5C:
- movs r0, 0x3
- bl PlaySE
- bl sub_8098A5C
- ldr r1, _08097C70 @ =gSharedMem
- ldrb r0, [r1, 0x4]
- adds r0, 0x1
- strb r0, [r1, 0x4]
- b _08097CB0
- .align 2, 0
-_08097C70: .4byte gSharedMem
-_08097C74:
- movs r1, 0
- movs r0, 0xE
- strh r0, [r4, 0xC]
- ldr r0, _08097C94 @ =0x0000dad0
- strh r0, [r4, 0xE]
- movs r0, 0x14
- strh r0, [r4, 0x10]
- strh r1, [r4, 0x12]
- adds r0, r4, 0
- adds r0, 0xC
- bl sub_80C5E38
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08097CB0
- .align 2, 0
-_08097C94: .4byte 0x0000dad0
-_08097C98:
- bl sub_80C5F98
- lsls r0, 24
- cmp r0, 0
- beq _08097CB0
- bl CalculatePlayerPartyCount
- ldr r1, _08097CB8 @ =gPlayerPartyCount
- strb r0, [r1]
- ldr r0, _08097CBC @ =sub_80961A8
- bl SetMainCallback2
-_08097CB0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097CB8: .4byte gPlayerPartyCount
-_08097CBC: .4byte sub_80961A8
- thumb_func_end sub_8097BA0
-
- thumb_func_start sub_8097CC0
-sub_8097CC0: @ 8097CC0
- push {r4,lr}
- ldr r0, _08097CD8 @ =gSharedMem
- ldrb r1, [r0, 0x4]
- adds r4, r0, 0
- cmp r1, 0x4
- bls _08097CCE
- b _08097DD0
-_08097CCE:
- lsls r0, r1, 2
- ldr r1, _08097CDC @ =_08097CE0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08097CD8: .4byte gSharedMem
-_08097CDC: .4byte _08097CE0
- .align 2, 0
-_08097CE0:
- .4byte _08097CF4
- .4byte _08097D38
- .4byte _08097D4C
- .4byte _08097D94
- .4byte _08097DB8
-_08097CF4:
- bl sub_809BF20
- lsls r0, 24
- cmp r0, 0
- beq _08097D18
- movs r0, 0x20
- bl PlaySE
- movs r0, 0xF
- bl sub_8098898
- ldr r1, _08097D14 @ =gSharedMem
- movs r0, 0x1
- strb r0, [r1, 0x4]
- b _08097DD0
- .align 2, 0
-_08097D14: .4byte gSharedMem
-_08097D18:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x12
- bl sub_8098898
- movs r0, 0
- bl sub_8098A38
- ldr r1, _08097D34 @ =gSharedMem
- movs r0, 0x2
- strb r0, [r1, 0x4]
- b _08097DD0
- .align 2, 0
-_08097D34: .4byte gSharedMem
-_08097D38:
- ldr r0, _08097D48 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF3
- ands r0, r1
- cmp r0, 0
- beq _08097DD0
- b _08097D6C
- .align 2, 0
-_08097D48: .4byte gMain
-_08097D4C:
- bl Menu_ProcessInputNoWrap
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _08097D6C
- cmp r1, 0
- bgt _08097D66
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08097D7C
- b _08097DD0
-_08097D66:
- cmp r1, 0x1
- beq _08097D7C
- b _08097DD0
-_08097D6C:
- bl sub_8098A5C
- ldr r0, _08097D78 @ =sub_8096C84
- bl sub_8096BE0
- b _08097DD0
- .align 2, 0
-_08097D78: .4byte sub_8096C84
-_08097D7C:
- movs r0, 0x3
- bl PlaySE
- bl sub_8098A5C
- ldr r1, _08097D90 @ =gSharedMem
- ldrb r0, [r1, 0x4]
- adds r0, 0x1
- strb r0, [r1, 0x4]
- b _08097DD0
- .align 2, 0
-_08097D90: .4byte gSharedMem
-_08097D94:
- movs r1, 0
- movs r0, 0xE
- strh r0, [r4, 0xC]
- ldr r0, _08097DB4 @ =0x0000dad0
- strh r0, [r4, 0xE]
- movs r0, 0x14
- strh r0, [r4, 0x10]
- strh r1, [r4, 0x12]
- adds r0, r4, 0
- adds r0, 0xC
- bl sub_80C5E38
- ldrb r0, [r4, 0x4]
- adds r0, 0x1
- strb r0, [r4, 0x4]
- b _08097DD0
- .align 2, 0
-_08097DB4: .4byte 0x0000dad0
-_08097DB8:
- bl sub_80C5F98
- lsls r0, 24
- cmp r0, 0
- beq _08097DD0
- bl CalculatePlayerPartyCount
- ldr r1, _08097DD8 @ =gPlayerPartyCount
- strb r0, [r1]
- ldr r0, _08097DDC @ =sub_80961A8
- bl SetMainCallback2
-_08097DD0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097DD8: .4byte gPlayerPartyCount
-_08097DDC: .4byte sub_80961A8
- thumb_func_end sub_8097CC0
-
- thumb_func_start sub_8097DE0
-sub_8097DE0: @ 8097DE0
- push {lr}
- ldr r1, _08097E1C @ =gSharedMem
- movs r0, 0
- strb r0, [r1, 0x7]
- strh r0, [r1, 0x8]
- strh r0, [r1, 0xA]
- ldr r1, _08097E20 @ =REG_BG3CNT
- ldr r2, _08097E24 @ =0x00001e0f
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08097E28 @ =gPokemonStorageScrollingBGTile
- ldr r2, _08097E2C @ =0x0600e000
- ldr r0, _08097E30 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08097E34 @ =0x80000010
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _08097E38 @ =gPokemonStorageScrollingBGTilemap
- ldr r1, _08097E3C @ =0x0600f000
- bl LZ77UnCompVram
- ldr r0, _08097E40 @ =gPokemonStorageScrollingBGPalette
- movs r1, 0xD0
- movs r2, 0x10
- bl LoadPalette
- pop {r0}
- bx r0
- .align 2, 0
-_08097E1C: .4byte gSharedMem
-_08097E20: .4byte REG_BG3CNT
-_08097E24: .4byte 0x00001e0f
-_08097E28: .4byte gPokemonStorageScrollingBGTile
-_08097E2C: .4byte 0x0600e000
-_08097E30: .4byte 0x040000d4
-_08097E34: .4byte 0x80000010
-_08097E38: .4byte gPokemonStorageScrollingBGTilemap
-_08097E3C: .4byte 0x0600f000
-_08097E40: .4byte gPokemonStorageScrollingBGPalette
- thumb_func_end sub_8097DE0
-
- thumb_func_start sub_8097E44
-sub_8097E44: @ 8097E44
- push {lr}
- ldr r1, _08097E6C @ =gSharedMem
- ldrb r0, [r1, 0x7]
- adds r0, 0x1
- strb r0, [r1, 0x7]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08097E66
- movs r0, 0
- strb r0, [r1, 0x7]
- ldrh r0, [r1, 0x8]
- subs r0, 0x1
- strh r0, [r1, 0x8]
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- strh r0, [r1, 0xA]
-_08097E66:
- pop {r0}
- bx r0
- .align 2, 0
-_08097E6C: .4byte gSharedMem
- thumb_func_end sub_8097E44
-
- thumb_func_start sub_8097E70
-sub_8097E70: @ 8097E70
- push {r4,lr}
- sub sp, 0x10
- ldr r0, _08097F2C @ =gPSSMenuHeader_Gfx
- ldr r1, _08097F30 @ =0x06005000
- bl LZ77UnCompVram
- ldr r0, _08097F34 @ =gPSSMenuHeader_Tilemap
- ldr r4, _08097F38 @ =gUnknown_02039760
- adds r1, r4, 0
- bl LZ77UnCompWram
- ldr r0, _08097F3C @ =0x06007800
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r1, 0xA
- str r1, [sp, 0x8]
- movs r1, 0x14
- str r1, [sp, 0xC]
- movs r1, 0
- movs r2, 0
- adds r3, r4, 0
- bl sub_809D034
- ldr r0, _08097F40 @ =gPSSMenu1_Pal
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08097F44 @ =gPSSMenu2_Pal
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08097F48 @ =gUnknown_083B6D74
- movs r1, 0xB0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08097F4C @ =gUnknown_083B6D94
- movs r1, 0xC0
- movs r2, 0x20
- bl LoadPalette
- ldr r4, _08097F50 @ =gUnknownPalette_81E6692+0x2
- adds r0, r4, 0
- movs r1, 0xF1
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xF2
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- adds r0, 0x8
- movs r1, 0xF3
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- adds r0, 0x16
- movs r1, 0xF4
- movs r2, 0x4
- bl LoadPalette
- adds r0, r4, 0
- adds r0, 0x12
- movs r1, 0xF6
- movs r2, 0x4
- bl LoadPalette
- adds r4, 0x2
- adds r0, r4, 0
- movs r1, 0xFF
- movs r2, 0x2
- bl LoadPalette
- ldr r0, _08097F54 @ =gWaveformSpritePalette
- bl LoadSpritePalette
- bl sub_80980D4
- bl sub_8097F58
- bl sub_8097FB8
- bl sub_809801C
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097F2C: .4byte gPSSMenuHeader_Gfx
-_08097F30: .4byte 0x06005000
-_08097F34: .4byte gPSSMenuHeader_Tilemap
-_08097F38: .4byte gUnknown_02039760
-_08097F3C: .4byte 0x06007800
-_08097F40: .4byte gPSSMenu1_Pal
-_08097F44: .4byte gPSSMenu2_Pal
-_08097F48: .4byte gUnknown_083B6D74
-_08097F4C: .4byte gUnknown_083B6D94
-_08097F50: .4byte gUnknownPalette_81E6692+0x2
-_08097F54: .4byte gWaveformSpritePalette
- thumb_func_end sub_8097E70
-
- thumb_func_start sub_8097F58
-sub_8097F58: @ 8097F58
- push {r4,lr}
- ldr r1, _08097FA4 @ =0x0000dace
- movs r0, 0xD
- movs r2, 0
- bl sub_80F7940
- ldr r4, _08097FA8 @ =gSharedMem
- ldr r1, _08097FAC @ =0x000012ac
- adds r3, r4, r1
- str r0, [r3]
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- strb r1, [r0, 0x5]
- ldr r0, [r3]
- adds r0, 0x43
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r3]
- movs r0, 0x28
- strh r0, [r1, 0x20]
- ldr r1, [r3]
- movs r0, 0x95
- strh r0, [r1, 0x22]
- movs r0, 0xD
- bl GetSpriteTileStartByTag
- ldr r1, _08097FB0 @ =0x000012b8
- adds r4, r1
- lsls r0, 16
- lsrs r0, 11
- ldr r1, _08097FB4 @ =0x06010000
- adds r0, r1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08097FA4: .4byte 0x0000dace
-_08097FA8: .4byte gSharedMem
-_08097FAC: .4byte 0x000012ac
-_08097FB0: .4byte 0x000012b8
-_08097FB4: .4byte 0x06010000
- thumb_func_end sub_8097F58
-
- thumb_func_start sub_8097FB8
-sub_8097FB8: @ 8097FB8
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r0, _0809800C @ =gWaveformSpriteSheet
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp]
- str r1, [sp, 0x4]
- mov r0, sp
- bl LoadSpriteSheet
- movs r4, 0
- ldr r5, _08098010 @ =gSharedMem + 0x12B0
-_08097FD0:
- lsls r1, r4, 6
- subs r1, r4
- adds r1, 0x8
- lsls r1, 16
- asrs r1, 16
- ldr r0, _08098014 @ =gSpriteTemplate_83B6EFC
- movs r2, 0x9
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r4, 2
- adds r2, r5
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08098018 @ =gSprites
- adds r1, r0
- str r1, [r2]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _08097FD0
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809800C: .4byte gWaveformSpriteSheet
-_08098010: .4byte gSharedMem + 0x12B0
-_08098014: .4byte gSpriteTemplate_83B6EFC
-_08098018: .4byte gSprites
- thumb_func_end sub_8097FB8
-
- thumb_func_start sub_809801C
-sub_809801C: @ 809801C
- push {lr}
- ldr r1, _0809803C @ =gSharedMem
- ldr r2, _08098040 @ =0x000011f0
- adds r0, r1, r2
- ldrh r0, [r0]
- subs r2, 0x4
- adds r1, r2
- ldr r1, [r1]
- bl sub_80981F0
- bl sub_80982B4
- bl sub_8098350
- pop {r0}
- bx r0
- .align 2, 0
-_0809803C: .4byte gSharedMem
-_08098040: .4byte 0x000011f0
- thumb_func_end sub_809801C
-
- thumb_func_start BoxSetMosaic
-BoxSetMosaic: @ 8098044
- push {lr}
- bl sub_809801C
- ldr r0, _08098084 @ =gSharedMem
- movs r1, 0x9C
- lsls r1, 6
- adds r3, r0, r1
- ldr r2, [r3]
- cmp r2, 0
- beq _08098080
- ldrb r0, [r2, 0x1]
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldr r1, [r3]
- movs r0, 0xA
- strh r0, [r1, 0x2E]
- ldr r1, [r3]
- movs r0, 0x1
- strh r0, [r1, 0x30]
- ldr r1, [r3]
- ldr r0, _08098088 @ =sub_8098090
- str r0, [r1, 0x1C]
- ldr r2, _0809808C @ =REG_MOSAIC
- ldr r0, [r3]
- ldrh r0, [r0, 0x2E]
- lsls r1, r0, 12
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
-_08098080:
- pop {r0}
- bx r0
- .align 2, 0
-_08098084: .4byte gSharedMem
-_08098088: .4byte sub_8098090
-_0809808C: .4byte REG_MOSAIC
- thumb_func_end BoxSetMosaic
-
- thumb_func_start sub_8098090
-sub_8098090: @ 8098090
- push {lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x2E]
- ldrh r1, [r3, 0x30]
- subs r0, r1
- strh r0, [r3, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bge _080980A6
- movs r0, 0
- strh r0, [r3, 0x2E]
-_080980A6:
- ldr r2, _080980CC @ =REG_MOSAIC
- ldrh r0, [r3, 0x2E]
- lsls r1, r0, 12
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _080980C8
- ldrb r0, [r3, 0x1]
- movs r1, 0x11
- negs r1, r1
- ands r1, r0
- strb r1, [r3, 0x1]
- ldr r0, _080980D0 @ =SpriteCallbackDummy
- str r0, [r3, 0x1C]
-_080980C8:
- pop {r0}
- bx r0
- .align 2, 0
-_080980CC: .4byte REG_MOSAIC
-_080980D0: .4byte SpriteCallbackDummy
- thumb_func_end sub_8098090
-
- thumb_func_start sub_80980D4
-sub_80980D4: @ 80980D4
- push {r4,r5,lr}
- sub sp, 0x28
- ldr r0, _08098150 @ =gUnknown_083B6DCC
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- ldr r0, _08098154 @ =gUnknown_083B6DD4
- ldr r1, [r0, 0x4]
- ldr r0, [r0]
- str r0, [sp, 0x20]
- str r1, [sp, 0x24]
- mov r1, sp
- ldr r0, _08098158 @ =gSpriteTemplate_83B6DDC
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- movs r1, 0
- add r5, sp, 0x18
- ldr r4, _0809815C @ =gSharedMem + 0x2784
- movs r3, 0
- ldr r2, _08098160 @ =0x000007ff
-_08098102:
- adds r0, r1, r4
- strb r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r2
- bls _08098102
- movs r1, 0
- ldr r3, _08098164 @ =gSharedMem + 0x2704
- movs r2, 0
-_08098116:
- 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 _08098116
- ldr r0, _08098168 @ =gSharedMem
- movs r1, 0x9C
- lsls r1, 6
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- adds r0, r5, 0
- bl LoadSpriteSheet
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _080981C4
- add r0, sp, 0x20
- bl LoadSpritePalette
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- beq _080981C4
- b _080981B0
- .align 2, 0
-_08098150: .4byte gUnknown_083B6DCC
-_08098154: .4byte gUnknown_083B6DD4
-_08098158: .4byte gSpriteTemplate_83B6DDC
-_0809815C: .4byte gSharedMem + 0x2784
-_08098160: .4byte 0x000007ff
-_08098164: .4byte gSharedMem + 0x2704
-_08098168: .4byte gSharedMem
-_0809816C:
- ldr r2, _0809819C @ =gSharedMem
- movs r0, 0x9C
- lsls r0, 6
- adds r3, r2, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080981A0 @ =gSprites
- adds r0, r1
- str r0, [r3]
- lsls r0, r4, 4
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- ldr r3, _080981A4 @ =0x000026fa
- adds r1, r2, r3
- strh r0, [r1]
- ldr r4, _080981A8 @ =0x000026fc
- adds r2, r4
- lsls r0, r5, 5
- ldr r1, _080981AC @ =0x06010000
- adds r0, r1
- str r0, [r2]
- b _080981C4
- .align 2, 0
-_0809819C: .4byte gSharedMem
-_080981A0: .4byte gSprites
-_080981A4: .4byte 0x000026fa
-_080981A8: .4byte 0x000026fc
-_080981AC: .4byte 0x06010000
-_080981B0:
- mov r0, sp
- movs r1, 0x28
- movs r2, 0x30
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- bne _0809816C
-_080981C4:
- ldr r0, _080981E8 @ =gSharedMem
- movs r2, 0x9C
- lsls r2, 6
- adds r0, r2
- ldr r0, [r0]
- cmp r0, 0
- bne _080981DE
- movs r0, 0x2
- bl FreeSpriteTilesByTag
- ldr r0, _080981EC @ =0x0000dac7
- bl FreeSpritePaletteByTag
-_080981DE:
- add sp, 0x28
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080981E8: .4byte gSharedMem
-_080981EC: .4byte 0x0000dac7
- thumb_func_end sub_80980D4
-
- thumb_func_start sub_80981F0
-sub_80981F0: @ 80981F0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r7, r1, 0
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r6, _08098274 @ =gSharedMem
- movs r0, 0x9C
- lsls r0, 6
- adds r0, r6
- mov r8, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080982A6
- cmp r4, 0
- beq _0809829C
- lsls r0, r4, 3
- ldr r1, _08098278 @ =gMonFrontPicTable
- adds r0, r1
- ldr r2, _0809827C @ =gMonFrontPicCoords
- lsls r1, r4, 2
- adds r1, r2
- ldrb r1, [r1]
- ldr r2, _08098280 @ =0x00004784
- adds r3, r6, r2
- ldr r2, _08098284 @ =0x00002784
- adds r5, r6, r2
- str r5, [sp]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r2, 0x1
- bl HandleLoadSpecialPokePic
- ldr r1, _08098288 @ =0x000011e8
- adds r0, r6, r1
- ldr r0, [r0]
- ldr r2, _0809828C @ =0x00002704
- adds r4, r6, r2
- adds r1, r4, 0
- bl LZ77UnCompWram
- ldr r1, _08098290 @ =0x000026fc
- adds r0, r6, r1
- ldr r1, [r0]
- ldr r2, _08098294 @ =0x04000200
- adds r0, r5, 0
- bl CpuSet
- ldr r2, _08098298 @ =0x000026fa
- adds r0, r6, r2
- ldrh r1, [r0]
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadPalette
- mov r0, r8
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- b _080982A6
- .align 2, 0
-_08098274: .4byte gSharedMem
-_08098278: .4byte gMonFrontPicTable
-_0809827C: .4byte gMonFrontPicCoords
-_08098280: .4byte 0x00004784
-_08098284: .4byte 0x00002784
-_08098288: .4byte 0x000011e8
-_0809828C: .4byte 0x00002704
-_08098290: .4byte 0x000026fc
-_08098294: .4byte 0x04000200
-_08098298: .4byte 0x000026fa
-_0809829C:
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_080982A6:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80981F0
-
- thumb_func_start sub_80982B4
-sub_80982B4: @ 80982B4
- push {r4,lr}
- ldr r4, _080982E4 @ =gSharedMem
- ldr r1, _080982E8 @ =0x000011f0
- adds r0, r4, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _080982F4
- ldr r2, _080982EC @ =0x000011f7
- adds r0, r4, r2
- ldrb r0, [r0]
- adds r2, 0xC1
- adds r1, r4, r2
- ldr r1, [r1]
- bl sub_80F7A10
- ldr r1, _080982F0 @ =0x000012ac
- adds r0, r4, r1
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- b _08098302
- .align 2, 0
-_080982E4: .4byte gSharedMem
-_080982E8: .4byte 0x000011f0
-_080982EC: .4byte 0x000011f7
-_080982F0: .4byte 0x000012ac
-_080982F4:
- ldr r2, _08098348 @ =0x000012ac
- adds r0, r4, r2
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
-_08098302:
- strb r0, [r1]
- movs r0, 0
- movs r1, 0xB
- movs r2, 0x9
- movs r3, 0x11
- bl Menu_EraseWindowRect
- ldr r4, _0809834C @ =gSharedMem + 0x127A
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0x10
- bl Menu_PrintText
- adds r0, r4, 0
- subs r0, 0x6B
- movs r1, 0x1
- movs r2, 0xB
- bl Menu_PrintText
- adds r0, r4, 0
- subs r0, 0x46
- movs r1, 0
- movs r2, 0xD
- bl Menu_PrintText
- subs r4, 0x21
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0xF
- bl Menu_PrintText
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08098348: .4byte 0x000012ac
-_0809834C: .4byte gSharedMem + 0x127A
- thumb_func_end sub_80982B4
-
- thumb_func_start sub_8098350
-sub_8098350: @ 8098350
- push {r4,r5,lr}
- sub sp, 0x10
- ldr r5, _080983A0 @ =gSharedMem
- ldr r1, _080983A4 @ =0x000011f0
- adds r0, r5, r1
- ldrh r2, [r0]
- cmp r2, 0
- beq _080983B4
- ldr r0, _080983A8 @ =0x06007800
- ldr r3, _080983AC @ =gUnknown_02039760
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x8
- str r1, [sp, 0x8]
- movs r1, 0x2
- str r1, [sp, 0xC]
- movs r1, 0x1
- movs r2, 0
- bl sub_809D034
- movs r4, 0
- ldr r0, _080983B0 @ =0x000012b0
- adds r5, r0
-_08098382:
- lsls r0, r4, 2
- adds r0, r5
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnimIfDifferent
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _08098382
- b _080983EC
- .align 2, 0
-_080983A0: .4byte gSharedMem
-_080983A4: .4byte 0x000011f0
-_080983A8: .4byte 0x06007800
-_080983AC: .4byte gUnknown_02039760
-_080983B0: .4byte 0x000012b0
-_080983B4:
- ldr r0, _080983F4 @ =0x06007800
- ldr r3, _080983F8 @ =gUnknown_02039760
- movs r1, 0xA
- str r1, [sp]
- str r2, [sp, 0x4]
- movs r1, 0x8
- str r1, [sp, 0x8]
- movs r1, 0x2
- str r1, [sp, 0xC]
- movs r1, 0x1
- movs r2, 0
- bl sub_809D034
- movs r4, 0
- ldr r1, _080983FC @ =0x000012b0
- adds r5, r1
-_080983D4:
- lsls r0, r4, 2
- adds r0, r5
- ldr r0, [r0]
- lsls r1, r4, 25
- lsrs r1, 24
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _080983D4
-_080983EC:
- add sp, 0x10
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080983F4: .4byte 0x06007800
-_080983F8: .4byte gUnknown_02039760
-_080983FC: .4byte 0x000012b0
- thumb_func_end sub_8098350
-
- thumb_func_start sub_8098400
-sub_8098400: @ 8098400
- push {r4,r5,lr}
- sub sp, 0x14
- ldr r1, _0809847C @ =REG_BG1CNT
- ldr r2, _08098480 @ =0x00000f01
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08098484 @ =gPSSMenuMisc_Gfx
- ldr r1, _08098488 @ =0x06006800
- bl LZ77UnCompVram
- ldr r0, _0809848C @ =gPSSMenuMisc_Tilemap
- ldr r5, _08098490 @ =gSharedMem + 0xA8
- adds r1, r5, 0
- bl LZ77UnCompWram
- ldr r0, _08098494 @ =gPSSMenu3_Pal
- movs r1, 0x20
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08098498 @ =gPSSMenu4_Pal
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- ldr r4, _0809849C @ =0x06007800
- add r1, sp, 0x10
- movs r0, 0
- strh r0, [r1]
- ldr r0, _080984A0 @ =0x040000d4
- str r1, [r0]
- str r4, [r0, 0x4]
- ldr r1, _080984A4 @ =0x81000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- bl sub_8098780
- ldr r0, _080984A8 @ =gUnknown_0203847C
- ldrb r0, [r0]
- cmp r0, 0
- beq _080984AC
- movs r0, 0x1
- bl sub_8098690
- movs r0, 0x1
- bl sub_8099200
- movs r0, 0
- str r0, [sp]
- str r0, [sp, 0x4]
- movs r0, 0xC
- str r0, [sp, 0x8]
- movs r0, 0x16
- str r0, [sp, 0xC]
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0
- adds r3, r5, 0
- bl sub_809D034
- b _080984CC
- .align 2, 0
-_0809847C: .4byte REG_BG1CNT
-_08098480: .4byte 0x00000f01
-_08098484: .4byte gPSSMenuMisc_Gfx
-_08098488: .4byte 0x06006800
-_0809848C: .4byte gPSSMenuMisc_Tilemap
-_08098490: .4byte gSharedMem + 0xA8
-_08098494: .4byte gPSSMenu3_Pal
-_08098498: .4byte gPSSMenu4_Pal
-_0809849C: .4byte 0x06007800
-_080984A0: .4byte 0x040000d4
-_080984A4: .4byte 0x81000400
-_080984A8: .4byte gUnknown_0203847C
-_080984AC:
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0xC
- str r0, [sp, 0x8]
- movs r0, 0x2
- str r0, [sp, 0xC]
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0
- adds r3, r5, 0
- bl sub_809D034
- movs r0, 0x1
- bl sub_8098690
-_080984CC:
- ldr r0, _080984E0 @ =gSharedMem
- ldr r1, _080984E4 @ =0x000008af
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080984E0: .4byte gSharedMem
-_080984E4: .4byte 0x000008af
- thumb_func_end sub_8098400
-
- thumb_func_start sub_80984E8
-sub_80984E8: @ 80984E8
- push {lr}
- ldr r1, _08098510 @ =gSharedMem
- ldr r0, _08098514 @ =0x000008a8
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0x14
- strh r0, [r2]
- ldr r0, _08098518 @ =0x000008aa
- adds r2, r1, r0
- movs r0, 0x2
- strh r0, [r2]
- ldr r0, _0809851C @ =0x000008ad
- adds r1, r0
- strb r3, [r1]
- movs r0, 0
- bl sub_8099200
- pop {r0}
- bx r0
- .align 2, 0
-_08098510: .4byte gSharedMem
-_08098514: .4byte 0x000008a8
-_08098518: .4byte 0x000008aa
-_0809851C: .4byte 0x000008ad
- thumb_func_end sub_80984E8
-
- thumb_func_start sub_8098520
-sub_8098520: @ 8098520
- push {r4,r5,lr}
- sub sp, 0x10
- ldr r3, _08098578 @ =gSharedMem
- ldr r0, _0809857C @ =0x000008ad
- adds r5, r3, r0
- ldrb r0, [r5]
- cmp r0, 0x14
- beq _08098592
- ldr r0, _08098580 @ =0x000008a8
- adds r1, r3, r0
- ldrh r0, [r1]
- subs r0, 0x1
- movs r4, 0
- strh r0, [r1]
- ldr r0, _08098584 @ =0x000008aa
- adds r2, r3, r0
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- ldr r0, _08098588 @ =0x06007800
- adds r3, 0xA8
- str r4, [sp]
- ldrh r1, [r1]
- str r1, [sp, 0x4]
- movs r1, 0xC
- str r1, [sp, 0x8]
- ldrh r1, [r2]
- str r1, [sp, 0xC]
- movs r1, 0xA
- movs r2, 0
- bl sub_809D034
- movs r0, 0x8
- bl sub_80994A8
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x14
- beq _0809858C
- movs r0, 0x1
- b _08098594
- .align 2, 0
-_08098578: .4byte gSharedMem
-_0809857C: .4byte 0x000008ad
-_08098580: .4byte 0x000008a8
-_08098584: .4byte 0x000008aa
-_08098588: .4byte 0x06007800
-_0809858C:
- ldr r1, _0809859C @ =gUnknown_0203847C
- movs r0, 0x1
- strb r0, [r1]
-_08098592:
- movs r0, 0
-_08098594:
- add sp, 0x10
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0809859C: .4byte gUnknown_0203847C
- thumb_func_end sub_8098520
-
- thumb_func_start add_to_c3_somehow
-add_to_c3_somehow: @ 80985A0
- ldr r1, _080985BC @ =gSharedMem
- ldr r0, _080985C0 @ =0x000008a8
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0
- strh r0, [r2]
- ldr r0, _080985C4 @ =0x000008aa
- adds r2, r1, r0
- movs r0, 0x16
- strh r0, [r2]
- ldr r0, _080985C8 @ =0x000008ad
- adds r1, r0
- strb r3, [r1]
- bx lr
- .align 2, 0
-_080985BC: .4byte gSharedMem
-_080985C0: .4byte 0x000008a8
-_080985C4: .4byte 0x000008aa
-_080985C8: .4byte 0x000008ad
- thumb_func_end add_to_c3_somehow
-
- thumb_func_start sub_80985CC
-sub_80985CC: @ 80985CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- ldr r3, _08098640 @ =gSharedMem
- ldr r0, _08098644 @ =0x000008ad
- adds r6, r3, r0
- ldrb r0, [r6]
- cmp r0, 0x14
- beq _0809867A
- ldr r2, _08098648 @ =0x000008a8
- adds r1, r3, r2
- ldrh r0, [r1]
- adds r0, 0x1
- movs r2, 0
- mov r9, r2
- strh r0, [r1]
- ldr r0, _0809864C @ =0x000008aa
- adds r4, r3, r0
- ldrh r0, [r4]
- subs r0, 0x1
- strh r0, [r4]
- ldr r5, _08098650 @ =0x06007800
- adds r3, 0xA8
- mov r8, r3
- str r2, [sp]
- ldrh r0, [r1]
- str r0, [sp, 0x4]
- movs r7, 0xC
- str r7, [sp, 0x8]
- ldrh r0, [r4]
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0xA
- bl sub_809D034
- ldrh r2, [r4]
- movs r4, 0x1
- str r4, [sp]
- adds r0, r5, 0
- movs r1, 0xA
- movs r3, 0xC
- bl sub_809D16C
- movs r0, 0x8
- negs r0, r0
- bl sub_80994A8
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x14
- beq _08098654
- movs r0, 0x1
- b _0809867C
- .align 2, 0
-_08098640: .4byte gSharedMem
-_08098644: .4byte 0x000008ad
-_08098648: .4byte 0x000008a8
-_0809864C: .4byte 0x000008aa
-_08098650: .4byte 0x06007800
-_08098654:
- ldr r0, _0809868C @ =gUnknown_0203847C
- movs r1, 0
- strb r1, [r0]
- bl sub_809954C
- bl party_compaction
- str r7, [sp]
- mov r2, r9
- str r2, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x2
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0x15
- movs r2, 0
- mov r3, r8
- bl sub_809D034
-_0809867A:
- movs r0, 0
-_0809867C:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0809868C: .4byte gUnknown_0203847C
- thumb_func_end sub_80985CC
-
- thumb_func_start sub_8098690
-sub_8098690: @ 8098690
- push {lr}
- sub sp, 0x10
- lsls r0, 24
- cmp r0, 0
- beq _080986C0
- ldr r0, _080986B8 @ =0x06007800
- ldr r3, _080986BC @ =gSharedMem + 0xA8
- movs r1, 0xC
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x9
- str r1, [sp, 0x8]
- movs r1, 0x2
- str r1, [sp, 0xC]
- movs r1, 0x15
- movs r2, 0
- bl sub_809D034
- b _080986DA
- .align 2, 0
-_080986B8: .4byte 0x06007800
-_080986BC: .4byte gSharedMem + 0xA8
-_080986C0:
- ldr r0, _080986E0 @ =0x06007800
- ldr r3, _080986E4 @ =gSharedMem + 0xA8
- movs r1, 0xC
- str r1, [sp]
- movs r2, 0x2
- str r2, [sp, 0x4]
- movs r1, 0x9
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- movs r1, 0x15
- movs r2, 0
- bl sub_809D034
-_080986DA:
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_080986E0: .4byte 0x06007800
-_080986E4: .4byte gSharedMem + 0xA8
- thumb_func_end sub_8098690
-
- thumb_func_start sub_80986E8
-sub_80986E8: @ 80986E8
- ldr r1, _08098704 @ =gSharedMem
- ldr r2, _08098708 @ =0x000008af
- adds r0, r1, r2
- movs r3, 0x1
- strb r3, [r0]
- movs r0, 0x8B
- lsls r0, 4
- adds r2, r1, r0
- movs r0, 0x1E
- strb r0, [r2]
- ldr r2, _0809870C @ =0x000008b1
- adds r1, r2
- strb r3, [r1]
- bx lr
- .align 2, 0
-_08098704: .4byte gSharedMem
-_08098708: .4byte 0x000008af
-_0809870C: .4byte 0x000008b1
- thumb_func_end sub_80986E8
-
- thumb_func_start sub_8098710
-sub_8098710: @ 8098710
- push {lr}
- ldr r0, _0809872C @ =gSharedMem
- ldr r2, _08098730 @ =0x000008af
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- beq _08098728
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- bl sub_8098690
-_08098728:
- pop {r0}
- bx r0
- .align 2, 0
-_0809872C: .4byte gSharedMem
-_08098730: .4byte 0x000008af
- thumb_func_end sub_8098710
-
- thumb_func_start sub_8098734
-sub_8098734: @ 8098734
- push {lr}
- ldr r2, _08098774 @ =gSharedMem
- ldr r1, _08098778 @ =0x000008af
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08098770
- movs r0, 0x8B
- lsls r0, 4
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1E
- bls _08098770
- movs r0, 0
- strb r0, [r1]
- movs r3, 0
- ldr r0, _0809877C @ =0x000008b1
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _08098768
- movs r3, 0x1
-_08098768:
- strb r3, [r1]
- ldrb r0, [r1]
- bl sub_8098690
-_08098770:
- pop {r0}
- bx r0
- .align 2, 0
-_08098774: .4byte gSharedMem
-_08098778: .4byte 0x000008af
-_0809877C: .4byte 0x000008b1
- thumb_func_end sub_8098734
-
- thumb_func_start sub_8098780
-sub_8098780: @ 8098780
- push {r4-r6,lr}
- sub sp, 0x10
- movs r4, 0x1
- ldr r6, _080987D4 @ =gSharedMem + 0xA8
- movs r5, 0x80
- lsls r5, 9
-_0809878C:
- movs r0, 0x64
- muls r0, r4
- ldr r1, _080987D8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080987A0
- movs r0, 0x1
-_080987A0:
- movs r1, 0x10
- cmp r0, 0
- beq _080987A8
- movs r1, 0xC
-_080987A8:
- lsrs r2, r5, 16
- str r1, [sp]
- movs r0, 0x4
- str r0, [sp, 0x4]
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- adds r0, r6, 0
- movs r1, 0x7
- adds r3, r6, 0
- bl sub_809D104
- movs r0, 0xC0
- lsls r0, 10
- adds r5, r0
- adds r4, 0x1
- cmp r4, 0x5
- ble _0809878C
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080987D4: .4byte gSharedMem + 0xA8
-_080987D8: .4byte gPlayerParty
- thumb_func_end sub_8098780
-
- thumb_func_start sub_80987DC
-sub_80987DC: @ 80987DC
- push {lr}
- sub sp, 0x10
- bl sub_8098780
- ldr r0, _08098804 @ =0x06007800
- ldr r3, _08098808 @ =gSharedMem + 0xA8
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- movs r1, 0xC
- str r1, [sp, 0x8]
- movs r1, 0x16
- str r1, [sp, 0xC]
- movs r1, 0xA
- movs r2, 0
- bl sub_809D034
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_08098804: .4byte 0x06007800
-_08098808: .4byte gSharedMem + 0xA8
- thumb_func_end sub_80987DC
-
- thumb_func_start sub_809880C
-sub_809880C: @ 809880C
- push {lr}
- ldr r0, _08098828 @ =gSharedMem
- ldr r1, _0809882C @ =0x000008ae
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x6
- bl PlaySE
- bl sub_80984E8
- pop {r0}
- bx r0
- .align 2, 0
-_08098828: .4byte gSharedMem
-_0809882C: .4byte 0x000008ae
- thumb_func_end sub_809880C
-
- thumb_func_start sub_8098830
-sub_8098830: @ 8098830
- push {r4,r5,lr}
- ldr r5, _08098848 @ =gSharedMem
- ldr r0, _0809884C @ =0x000008ae
- adds r4, r5, r0
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _08098866
- cmp r0, 0x1
- bgt _08098850
- cmp r0, 0
- beq _08098856
- b _08098890
- .align 2, 0
-_08098848: .4byte gSharedMem
-_0809884C: .4byte 0x000008ae
-_08098850:
- cmp r0, 0x2
- beq _0809888C
- b _08098890
-_08098856:
- bl sub_8098520
- lsls r0, 24
- cmp r0, 0
- bne _08098890
- bl sub_809B068
- b _0809887E
-_08098866:
- bl sub_809AC00
- lsls r0, 24
- cmp r0, 0
- bne _08098890
- ldr r1, _08098888 @ =0x000011f6
- adds r0, r5, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809887E
- bl BoxSetMosaic
-_0809887E:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08098890
- .align 2, 0
-_08098888: .4byte 0x000011f6
-_0809888C:
- movs r0, 0
- b _08098892
-_08098890:
- movs r0, 0x1
-_08098892:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8098830
-
-.section .text_8098A38
-
- thumb_func_start sub_8098A38
-sub_8098A38: @ 8098A38
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x17
- movs r1, 0xA
- movs r2, 0
- bl DisplayYesNoMenu
- lsls r4, 24
- asrs r4, 24
- adds r0, r4, 0
- bl Menu_MoveCursor
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8098A38
-
- thumb_func_start sub_8098A5C
-sub_8098A5C: @ 8098A5C
- push {lr}
- bl Menu_DestroyCursor
- movs r0, 0xA
- movs r1, 0x10
- movs r2, 0x1D
- movs r3, 0x13
- bl Menu_EraseWindowRect
- movs r0, 0x17
- movs r1, 0xA
- movs r2, 0x1D
- movs r3, 0xF
- bl Menu_EraseWindowRect
- pop {r0}
- bx r0
- thumb_func_end sub_8098A5C
-
- thumb_func_start sub_8098A80
-sub_8098A80: @ 8098A80
- push {lr}
- bl sub_809CDCC
- movs r0, 0xC
- bl sub_809CDEC
- movs r0, 0xD
- bl sub_809CDEC
- movs r0, 0xE
- bl sub_809CDEC
- movs r0, 0xF
- bl sub_809CDEC
- bl sub_809CE84
- pop {r0}
- bx r0
- thumb_func_end sub_8098A80
-
- thumb_func_start sub_8098AA8
-sub_8098AA8: @ 8098AA8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl sub_809CDCC
- cmp r4, 0x1
- beq _08098AE6
- cmp r4, 0x1
- bgt _08098AC2
- cmp r4, 0
- beq _08098ACC
- b _08098B32
-_08098AC2:
- cmp r5, 0x2
- beq _08098B00
- cmp r5, 0x3
- beq _08098B1A
- b _08098B32
-_08098ACC:
- movs r0, 0x10
- bl sub_809CDEC
- movs r0, 0x11
- bl sub_809CDEC
- movs r0, 0x12
- bl sub_809CDEC
- movs r0, 0x13
- bl sub_809CDEC
- b _08098B32
-_08098AE6:
- movs r0, 0x14
- bl sub_809CDEC
- movs r0, 0x15
- bl sub_809CDEC
- movs r0, 0x16
- bl sub_809CDEC
- movs r0, 0x17
- bl sub_809CDEC
- b _08098B32
-_08098B00:
- movs r0, 0x18
- bl sub_809CDEC
- movs r0, 0x19
- bl sub_809CDEC
- movs r0, 0x1A
- bl sub_809CDEC
- movs r0, 0x1B
- bl sub_809CDEC
- b _08098B32
-_08098B1A:
- movs r0, 0x1C
- bl sub_809CDEC
- movs r0, 0x1D
- bl sub_809CDEC
- movs r0, 0x1E
- bl sub_809CDEC
- movs r0, 0x1F
- bl sub_809CDEC
-_08098B32:
- bl sub_809CE84
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8098AA8
-
- thumb_func_start get_preferred_box
-get_preferred_box: @ 8098B3C
- ldr r0, _08098B44 @ =gPokemonStorage
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08098B44: .4byte gPokemonStorage
- thumb_func_end get_preferred_box
-
- thumb_func_start sub_8098B48
-sub_8098B48: @ 8098B48
- push {r4,r5,lr}
- bl sub_809D51C
- movs r2, 0
- ldr r1, _08098BD8 @ =gUnknown_083B6DB4
- ldr r0, [r1]
- ldr r4, _08098BDC @ =0x000010d0
- adds r3, r0, r4
- movs r4, 0
- adds r5, r1, 0
-_08098B5C:
- lsls r0, r2, 1
- adds r0, r3, r0
- strh r4, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x27
- bls _08098B5C
- movs r2, 0
- ldr r0, _08098BD8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0x89
- lsls r1, 5
- adds r3, r0, r1
- movs r1, 0
-_08098B7A:
- lsls r0, r2, 1
- adds r0, r3, r0
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x27
- bls _08098B7A
- movs r2, 0
- ldr r0, _08098BD8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r4, _08098BE0 @ =0x00001038
- adds r3, r0, r4
- movs r1, 0
-_08098B96:
- lsls r0, r2, 2
- adds r0, r3, r0
- str r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x5
- bls _08098B96
- movs r2, 0
- ldr r0, _08098BD8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _08098BE4 @ =0x00001050
- adds r3, r0, r1
- movs r1, 0
-_08098BB2:
- lsls r0, r2, 2
- adds r0, r3, r0
- str r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1D
- bls _08098BB2
- ldr r0, [r5]
- ldr r2, _08098BE8 @ =0x00001034
- adds r1, r0, r2
- movs r2, 0
- str r2, [r1]
- ldr r4, _08098BEC @ =0x00000d5c
- adds r0, r4
- strh r2, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08098BD8: .4byte gUnknown_083B6DB4
-_08098BDC: .4byte 0x000010d0
-_08098BE0: .4byte 0x00001038
-_08098BE4: .4byte 0x00001050
-_08098BE8: .4byte 0x00001034
-_08098BEC: .4byte 0x00000d5c
- thumb_func_end sub_8098B48
-
- thumb_func_start sub_8098BF0
-sub_8098BF0: @ 8098BF0
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r0, _08098C38 @ =gUnknown_083B6DB4
- ldr r5, [r0]
- ldr r0, _08098C3C @ =0x000025b4
- adds r4, r5, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0x7
- str r1, [sp, 0x4]
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0
- bl sub_8099AFC
- ldr r1, _08098C40 @ =0x00001034
- adds r5, r1
- str r0, [r5]
- ldr r1, _08098C44 @ =sub_80999C4
- str r1, [r0, 0x1C]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08098C38: .4byte gUnknown_083B6DB4
-_08098C3C: .4byte 0x000025b4
-_08098C40: .4byte 0x00001034
-_08098C44: .4byte sub_80999C4
- thumb_func_end sub_8098BF0
-
- thumb_func_start sub_8098C48
-sub_8098C48: @ 8098C48
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldr r1, _08098CCC @ =gPokemonStorage + 0x4
- adds r6, r0, r1
- movs r0, 0
- mov r8, r0
- movs r7, 0
-_08098C6A:
- movs r5, 0
- adds r1, r7, 0x1
- mov r9, r1
-_08098C70:
- adds r0, r6, 0
- movs r1, 0x41
- bl GetBoxMonData
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _08098CD8
- adds r0, r6, 0
- movs r1, 0
- bl GetBoxMonData
- adds r1, r0, 0
- lsls r2, r5, 1
- adds r2, r5
- lsls r2, 19
- movs r3, 0xC8
- lsls r3, 15
- adds r2, r3
- asrs r2, 16
- lsls r3, r7, 1
- adds r3, r7
- lsls r3, 19
- movs r0, 0xB0
- lsls r0, 14
- adds r3, r0
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x12
- subs r0, r5
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- adds r0, r4, 0
- asrs r3, 16
- bl sub_8099AFC
- ldr r1, _08098CD0 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- mov r3, r8
- lsls r2, r3, 2
- ldr r3, _08098CD4 @ =0x00001050
- adds r1, r3
- adds r1, r2
- str r0, [r1]
- b _08098CE8
- .align 2, 0
-_08098CCC: .4byte gPokemonStorage + 0x4
-_08098CD0: .4byte gUnknown_083B6DB4
-_08098CD4: .4byte 0x00001050
-_08098CD8:
- ldr r0, _08098D18 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- mov r2, r8
- lsls r1, r2, 2
- ldr r3, _08098D1C @ =0x00001050
- adds r0, r3
- adds r0, r1
- str r4, [r0]
-_08098CE8:
- adds r6, 0x50
- mov r0, r8
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _08098C70
- mov r1, r9
- lsls r0, r1, 16
- lsrs r7, r0, 16
- cmp r7, 0x4
- bls _08098C6A
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08098D18: .4byte gUnknown_083B6DB4
-_08098D1C: .4byte 0x00001050
- thumb_func_end sub_8098C48
-
- thumb_func_start sub_8098D20
-sub_8098D20: @ 8098D20
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- bl get_preferred_box
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r2, r1, 4
- subs r2, r1
- lsls r2, 5
- lsls r0, r4, 2
- mov r9, r0
- adds r0, r4
- lsls r0, 4
- ldr r1, _08098DD4 @ =gPokemonStorage + 0x4
- adds r0, r1
- adds r7, r2, r0
- adds r0, r7, 0
- movs r1, 0x41
- bl GetBoxMonData
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r0, 0
- beq _08098DC4
- adds r0, r4, 0
- movs r1, 0x6
- bl __umodsi3
- adds r6, r0, 0
- lsls r0, r6, 24
- lsrs r0, 24
- lsls r5, r0, 1
- adds r5, r0
- lsls r5, 19
- movs r1, 0xC8
- lsls r1, 15
- adds r5, r1
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 1
- adds r4, r0
- lsls r4, 19
- movs r2, 0xB0
- lsls r2, 14
- adds r4, r2
- lsrs r4, 16
- adds r0, r7, 0
- movs r1, 0
- bl GetBoxMonData
- adds r1, r0, 0
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0x12
- subs r0, r6
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- mov r0, r8
- adds r2, r5, 0
- adds r3, r4, 0
- bl sub_8099AFC
- ldr r1, _08098DD8 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- ldr r2, _08098DDC @ =0x00001050
- adds r1, r2
- add r1, r9
- str r0, [r1]
-_08098DC4:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08098DD4: .4byte gPokemonStorage + 0x4
-_08098DD8: .4byte gUnknown_083B6DB4
-_08098DDC: .4byte 0x00001050
- thumb_func_end sub_8098D20
-
- thumb_func_start sub_8098DE0
-sub_8098DE0: @ 8098DE0
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- movs r2, 0
- ldr r0, _08098E18 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _08098E1C @ =0x00001050
- adds r3, r0, r1
- movs r6, 0x1
- ldr r5, _08098E20 @ =sub_8098E68
-_08098DF4:
- lsls r0, r2, 2
- adds r1, r3, r0
- ldr r0, [r1]
- cmp r0, 0
- beq _08098E08
- strh r4, [r0, 0x32]
- ldr r0, [r1]
- strh r6, [r0, 0x36]
- ldr r0, [r1]
- str r5, [r0, 0x1C]
-_08098E08:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1D
- bls _08098DF4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08098E18: .4byte gUnknown_083B6DB4
-_08098E1C: .4byte 0x00001050
-_08098E20: .4byte sub_8098E68
- thumb_func_end sub_8098DE0
-
- thumb_func_start sub_8098E24
-sub_8098E24: @ 8098E24
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x30]
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _08098E40
- subs r0, r1, 0x1
- strh r0, [r2, 0x30]
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- b _08098E56
-_08098E40:
- ldr r0, _08098E5C @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r3, _08098E60 @ =0x00001178
- adds r1, r3
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ldrh r0, [r2, 0x34]
- strh r0, [r2, 0x20]
- ldr r0, _08098E64 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_08098E56:
- pop {r0}
- bx r0
- .align 2, 0
-_08098E5C: .4byte gUnknown_083B6DB4
-_08098E60: .4byte 0x00001178
-_08098E64: .4byte SpriteCallbackDummy
- thumb_func_end sub_8098E24
-
- thumb_func_start sub_8098E68
-sub_8098E68: @ 8098E68
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x36]
- movs r3, 0x36
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _08098E7C
- subs r0, r1, 0x1
- strh r0, [r2, 0x36]
- b _08098E98
-_08098E7C:
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x38]
- subs r0, 0x45
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB6
- bls _08098E98
- ldr r0, _08098E9C @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_08098E98:
- pop {r0}
- bx r0
- .align 2, 0
-_08098E9C: .4byte SpriteCallbackDummy
- thumb_func_end sub_8098E68
-
- thumb_func_start sub_8098EA0
-sub_8098EA0: @ 8098EA0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0
- ldr r0, _08098ED8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _08098EDC @ =0x00001050
- adds r7, r0, r1
-_08098EB0:
- lsls r0, r5, 2
- adds r4, r7, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _08098EC2
- bl sub_8099BE0
- movs r0, 0
- str r0, [r4]
-_08098EC2:
- adds r0, r5, 0x6
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x4
- bls _08098EB0
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08098ED8: .4byte gUnknown_083B6DB4
-_08098EDC: .4byte 0x00001050
- thumb_func_end sub_8098EA0
-
- thumb_func_start sub_8098EE0
-sub_8098EE0: @ 8098EE0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp, 0x8]
- lsls r2, 16
- movs r0, 0x2C
- str r0, [sp, 0x10]
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 19
- movs r1, 0xC8
- lsls r1, 15
- adds r0, r1
- lsrs r0, 16
- mov r10, r0
- ldr r0, [sp, 0x8]
- adds r0, 0x1
- lsrs r3, r2, 16
- str r3, [sp, 0xC]
- asrs r2, 16
- adds r1, r0, 0
- muls r1, r2
- mov r4, r10
- subs r1, r4, r1
- movs r0, 0x12
- subs r0, r6
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x18]
- movs r0, 0
- str r0, [sp, 0x14]
- mov r9, r0
- ldr r0, _08098FF8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r2, _08098FFC @ =0x0000117d
- adds r2, r0
- mov r8, r2
- ldr r3, _08099000 @ =0x00001050
- adds r3, r0, r3
- str r3, [sp, 0x20]
- lsls r1, 16
- str r1, [sp, 0x1C]
-_08098F42:
- mov r4, r8
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- lsls r7, r6, 2
- adds r1, r7, r6
- lsls r1, 4
- ldr r2, _08099004 @ =gPokemonStorage + 0x4
- adds r4, r1, r2
- adds r0, r4
- movs r1, 0x41
- bl GetBoxMonData
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _08098FC8
- mov r1, r8
- ldrb r0, [r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- adds r0, r4
- movs r1, 0
- bl GetBoxMonData
- adds r1, r0, 0
- ldr r2, [sp, 0x10]
- lsls r3, r2, 16
- asrs r3, 16
- movs r0, 0x2
- str r0, [sp]
- ldr r4, [sp, 0x18]
- str r4, [sp, 0x4]
- adds r0, r5, 0
- ldr r4, [sp, 0x1C]
- asrs r2, r4, 16
- bl sub_8099AFC
- ldr r2, [sp, 0x20]
- adds r1, r2, r7
- str r0, [r1]
- cmp r0, 0
- beq _08098FC8
- mov r3, sp
- ldrh r3, [r3, 0x8]
- strh r3, [r0, 0x30]
- ldr r0, [r1]
- mov r4, sp
- ldrh r4, [r4, 0xC]
- strh r4, [r0, 0x32]
- ldr r0, [r1]
- mov r2, r10
- strh r2, [r0, 0x34]
- ldr r1, [r1]
- ldr r0, _08099008 @ =sub_8098E24
- str r0, [r1, 0x1C]
- ldr r0, [sp, 0x14]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
-_08098FC8:
- adds r0, r6, 0x6
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, [sp, 0x10]
- adds r0, 0x18
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x10]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- cmp r0, 0x4
- bls _08098F42
- ldr r0, [sp, 0x14]
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08098FF8: .4byte gUnknown_083B6DB4
-_08098FFC: .4byte 0x0000117d
-_08099000: .4byte 0x00001050
-_08099004: .4byte gPokemonStorage + 0x4
-_08099008: .4byte sub_8098E24
- thumb_func_end sub_8098EE0
-
- thumb_func_start sub_809900C
-sub_809900C: @ 809900C
- push {r4-r6,lr}
- lsls r1, 24
- lsrs r1, 24
- ldr r4, _08099058 @ =gUnknown_083B6DB4
- ldr r5, [r4]
- ldr r3, _0809905C @ =0x0000117c
- adds r2, r5, r3
- movs r3, 0
- strb r3, [r2]
- ldr r6, _08099060 @ =0x0000117d
- adds r2, r5, r6
- strb r0, [r2]
- ldr r2, _08099064 @ =0x0000117b
- adds r0, r5, r2
- strb r1, [r0]
- subs r6, 0xB
- adds r2, r5, r6
- movs r0, 0x20
- strh r0, [r2]
- lsls r1, 24
- asrs r1, 24
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- negs r0, r0
- adds r6, 0x4
- adds r2, r5, r6
- strh r0, [r2]
- ldr r2, _08099068 @ =0x00001178
- adds r0, r5, r2
- strh r3, [r0]
- cmp r1, 0
- ble _08099070
- ldr r3, _0809906C @ =0x0000117a
- adds r1, r5, r3
- movs r0, 0
- b _08099076
- .align 2, 0
-_08099058: .4byte gUnknown_083B6DB4
-_0809905C: .4byte 0x0000117c
-_08099060: .4byte 0x0000117d
-_08099064: .4byte 0x0000117b
-_08099068: .4byte 0x00001178
-_0809906C: .4byte 0x0000117a
-_08099070:
- ldr r6, _080990A0 @ =0x0000117a
- adds r1, r5, r6
- movs r0, 0x5
-_08099076:
- strb r0, [r1]
- ldr r2, [r4]
- ldr r1, _080990A0 @ =0x0000117a
- adds r0, r2, r1
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, 0x64
- ldr r3, _080990A4 @ =0x00001174
- adds r1, r2, r3
- strh r0, [r1]
- ldr r6, _080990A8 @ =0x00001176
- adds r2, r6
- movs r1, 0
- ldrsh r0, [r2, r1]
- bl sub_8098DE0
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080990A0: .4byte 0x0000117a
-_080990A4: .4byte 0x00001174
-_080990A8: .4byte 0x00001176
- thumb_func_end sub_809900C
-
- thumb_func_start sub_80990AC
-sub_80990AC: @ 80990AC
- push {r4-r6,lr}
- ldr r0, _080990D4 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- ldr r0, _080990D8 @ =0x00001172
- adds r3, r4, r0
- ldrh r0, [r3]
- cmp r0, 0
- beq _080990C0
- subs r0, 0x1
- strh r0, [r3]
-_080990C0:
- ldr r1, _080990DC @ =0x0000117c
- adds r6, r4, r1
- ldrb r0, [r6]
- cmp r0, 0x1
- beq _08099138
- cmp r0, 0x1
- bgt _080990E0
- cmp r0, 0
- beq _080990E8
- b _080991F0
- .align 2, 0
-_080990D4: .4byte gUnknown_083B6DB4
-_080990D8: .4byte 0x00001172
-_080990DC: .4byte 0x0000117c
-_080990E0:
- cmp r0, 0x2
- bne _080990E6
- b _080991E0
-_080990E6:
- b _080991F0
-_080990E8:
- ldr r2, _0809912C @ =0x00001174
- adds r5, r4, r2
- ldr r3, _08099130 @ =0x00001176
- adds r0, r4, r3
- ldrh r0, [r0]
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r5]
- subs r0, 0x41
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xBA
- bhi _08099104
- b _080991F8
-_08099104:
- adds r2, 0x6
- adds r0, r4, r2
- ldrb r0, [r0]
- bl sub_8098EA0
- ldr r3, _08099134 @ =0x0000117b
- adds r0, r4, r3
- movs r1, 0
- ldrsb r1, [r0, r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r5]
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- b _080991F8
- .align 2, 0
-_0809912C: .4byte 0x00001174
-_08099130: .4byte 0x00001176
-_08099134: .4byte 0x0000117b
-_08099138:
- ldr r2, _08099194 @ =0x00001174
- adds r1, r4, r2
- ldr r5, _08099198 @ =0x00001176
- adds r2, r4, r5
- ldrh r0, [r2]
- ldrh r5, [r1]
- adds r0, r5
- strh r0, [r1]
- ldr r0, _0809919C @ =0x0000117a
- adds r5, r4, r0
- ldrb r0, [r5]
- ldrh r1, [r3]
- movs r3, 0
- ldrsh r2, [r2, r3]
- bl sub_8098EE0
- ldr r2, _080991A0 @ =0x00001178
- adds r1, r4, r2
- lsls r0, 24
- lsrs r0, 24
- ldrh r3, [r1]
- adds r0, r3
- strh r0, [r1]
- ldr r1, _080991A4 @ =0x0000117b
- adds r0, r4, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- cmp r1, 0
- ble _08099178
- ldrb r0, [r5]
- cmp r0, 0x5
- beq _08099182
-_08099178:
- cmp r1, 0
- bge _080991B0
- ldrb r0, [r5]
- cmp r0, 0
- bne _080991B0
-_08099182:
- ldr r0, _080991A8 @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r2, _080991AC @ =0x0000117c
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080991F8
- .align 2, 0
-_08099194: .4byte 0x00001174
-_08099198: .4byte 0x00001176
-_0809919C: .4byte 0x0000117a
-_080991A0: .4byte 0x00001178
-_080991A4: .4byte 0x0000117b
-_080991A8: .4byte gUnknown_083B6DB4
-_080991AC: .4byte 0x0000117c
-_080991B0:
- ldr r0, _080991D0 @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r5, _080991D4 @ =0x0000117a
- adds r3, r1, r5
- ldr r2, _080991D8 @ =0x0000117b
- adds r0, r1, r2
- ldrb r0, [r0]
- ldrb r5, [r3]
- adds r0, r5
- movs r2, 0
- strb r0, [r3]
- ldr r0, _080991DC @ =0x0000117c
- adds r1, r0
- strb r2, [r1]
- b _080991F8
- .align 2, 0
-_080991D0: .4byte gUnknown_083B6DB4
-_080991D4: .4byte 0x0000117a
-_080991D8: .4byte 0x0000117b
-_080991DC: .4byte 0x0000117c
-_080991E0:
- ldr r1, _080991F4 @ =0x00001178
- adds r0, r4, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _080991F8
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
-_080991F0:
- movs r0, 0
- b _080991FA
- .align 2, 0
-_080991F4: .4byte 0x00001178
-_080991F8:
- movs r0, 0x1
-_080991FA:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80990AC
-
- thumb_func_start sub_8099200
-sub_8099200: @ 8099200
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r4, _080992A0 @ =gPlayerParty
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r1, r0, 0
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xB
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r2, 0x68
- movs r3, 0x40
- bl sub_8099AFC
- ldr r1, _080992A4 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- ldr r2, _080992A8 @ =0x00001038
- adds r1, r2
- str r0, [r1]
- movs r7, 0x1
- movs r6, 0x1
-_08099246:
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, _080992A0 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- beq _080992AC
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r1, r0, 0
- subs r0, r6, 0x1
- lsls r3, r0, 1
- adds r3, r0
- lsls r3, 19
- movs r0, 0x80
- lsls r0, 13
- adds r3, r0
- asrs r3, 16
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xB
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r2, 0x98
- bl sub_8099AFC
- ldr r1, _080992A4 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- lsls r2, r6, 2
- ldr r3, _080992A8 @ =0x00001038
- adds r1, r3
- adds r1, r2
- str r0, [r1]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- b _080992BA
- .align 2, 0
-_080992A0: .4byte gPlayerParty
-_080992A4: .4byte gUnknown_083B6DB4
-_080992A8: .4byte 0x00001038
-_080992AC:
- ldr r0, _08099308 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- lsls r1, r6, 2
- ldr r2, _0809930C @ =0x00001038
- adds r0, r2
- adds r0, r1
- str r5, [r0]
-_080992BA:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _08099246
- mov r3, r8
- cmp r3, 0
- bne _080992FA
- movs r6, 0
- cmp r6, r7
- bcs _080992FA
- ldr r0, _08099308 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809930C @ =0x00001038
- adds r3, r0, r1
- movs r4, 0x4
-_080992DA:
- lsls r1, r6, 2
- adds r1, r3, r1
- ldr r2, [r1]
- ldrh r0, [r2, 0x22]
- subs r0, 0xA0
- strh r0, [r2, 0x22]
- ldr r1, [r1]
- adds r1, 0x3E
- ldrb r0, [r1]
- orrs r0, r4
- strb r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, r7
- bcc _080992DA
-_080992FA:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08099308: .4byte gUnknown_083B6DB4
-_0809930C: .4byte 0x00001038
- thumb_func_end sub_8099200
-
- thumb_func_start sub_8099310
-sub_8099310: @ 8099310
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _08099368 @ =gUnknown_083B6DB4
- ldr r2, [r0]
- ldr r0, _0809936C @ =0x00001171
- adds r1, r2, r0
- movs r0, 0
- strb r0, [r1]
- movs r5, 0
- movs r6, 0
- mov r8, r2
- ldr r7, _0809936C @ =0x00001171
- add r7, r8
-_0809932C:
- lsls r1, r5, 2
- ldr r0, _08099370 @ =0x00001038
- add r0, r8
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- beq _08099354
- cmp r5, r6
- beq _0809934E
- adds r1, r6, 0
- bl sub_8099388
- movs r0, 0
- str r0, [r4]
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
-_0809934E:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
-_08099354:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _0809932C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08099368: .4byte gUnknown_083B6DB4
-_0809936C: .4byte 0x00001171
-_08099370: .4byte 0x00001038
- thumb_func_end sub_8099310
-
- thumb_func_start sub_8099374
-sub_8099374: @ 8099374
- ldr r0, _08099380 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _08099384 @ =0x00001171
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08099380: .4byte gUnknown_083B6DB4
-_08099384: .4byte 0x00001171
- thumb_func_end sub_8099374
-
- thumb_func_start sub_8099388
-sub_8099388: @ 8099388
- push {r4,lr}
- adds r2, r0, 0
- lsls r1, 16
- lsrs r1, 16
- strh r1, [r2, 0x30]
- cmp r1, 0
- bne _0809939C
- movs r3, 0x68
- movs r4, 0x40
- b _080993AE
-_0809939C:
- movs r3, 0x98
- subs r1, 0x1
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 19
- movs r1, 0x80
- lsls r1, 13
- adds r0, r1
- lsrs r4, r0, 16
-_080993AE:
- ldrh r0, [r2, 0x20]
- lsls r0, 3
- strh r0, [r2, 0x32]
- ldrh r0, [r2, 0x22]
- lsls r0, 3
- strh r0, [r2, 0x34]
- lsls r1, r3, 3
- movs r3, 0x32
- ldrsh r0, [r2, r3]
- subs r0, r1, r0
- cmp r0, 0
- bge _080993C8
- adds r0, 0x7
-_080993C8:
- asrs r0, 3
- strh r0, [r2, 0x36]
- lsls r0, r4, 16
- asrs r0, 13
- movs r3, 0x34
- ldrsh r1, [r2, r3]
- subs r0, r1
- cmp r0, 0
- bge _080993DC
- adds r0, 0x7
-_080993DC:
- asrs r0, 3
- strh r0, [r2, 0x38]
- movs r0, 0x8
- strh r0, [r2, 0x3A]
- ldr r0, _080993F0 @ =sub_80993F4
- str r0, [r2, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080993F0: .4byte sub_80993F4
- thumb_func_end sub_8099388
-
- thumb_func_start sub_80993F4
-sub_80993F4: @ 80993F4
- push {r4,lr}
- adds r3, r0, 0
- ldrh r2, [r3, 0x3A]
- movs r1, 0x3A
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _08099424
- ldrh r0, [r3, 0x36]
- ldrh r4, [r3, 0x32]
- adds r0, r4
- strh r0, [r3, 0x32]
- ldrh r1, [r3, 0x38]
- ldrh r4, [r3, 0x34]
- adds r1, r4
- strh r1, [r3, 0x34]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r3, 0x20]
- lsls r1, 16
- asrs r1, 19
- strh r1, [r3, 0x22]
- subs r0, r2, 0x1
- strh r0, [r3, 0x3A]
- b _08099468
-_08099424:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0
- bne _08099434
- movs r0, 0x68
- strh r0, [r3, 0x20]
- movs r0, 0x40
- b _08099446
-_08099434:
- movs r0, 0x98
- strh r0, [r3, 0x20]
- movs r4, 0x30
- ldrsh r1, [r3, r4]
- subs r1, 0x1
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, 0x10
-_08099446:
- strh r0, [r3, 0x22]
- ldr r0, _08099470 @ =SpriteCallbackDummy
- str r0, [r3, 0x1C]
- ldr r0, _08099474 @ =gUnknown_083B6DB4
- ldr r2, [r0]
- movs r0, 0x30
- ldrsh r1, [r3, r0]
- lsls r1, 2
- ldr r4, _08099478 @ =0x00001038
- adds r0, r2, r4
- adds r0, r1
- str r3, [r0]
- ldr r0, _0809947C @ =0x00001171
- adds r2, r0
- ldrb r0, [r2]
- subs r0, 0x1
- strb r0, [r2]
-_08099468:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08099470: .4byte SpriteCallbackDummy
-_08099474: .4byte gUnknown_083B6DB4
-_08099478: .4byte 0x00001038
-_0809947C: .4byte 0x00001171
- thumb_func_end sub_80993F4
-
- thumb_func_start sub_8099480
-sub_8099480: @ 8099480
- push {r4,lr}
- ldr r0, _080994A0 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _080994A4 @ =0x00001034
- adds r4, r0, r1
- ldr r0, [r4]
- cmp r0, 0
- beq _08099498
- bl sub_8099BE0
- movs r0, 0
- str r0, [r4]
-_08099498:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080994A0: .4byte gUnknown_083B6DB4
-_080994A4: .4byte 0x00001034
- thumb_func_end sub_8099480
-
- thumb_func_start sub_80994A8
-sub_80994A8: @ 80994A8
- push {r4-r6,lr}
- movs r3, 0
- ldr r1, _080994FC @ =gUnknown_083B6DB4
- ldr r1, [r1]
- ldr r2, _08099500 @ =0x00001038
- adds r5, r1, r2
- lsls r0, 16
- asrs r4, r0, 16
- movs r6, 0x5
- negs r6, r6
-_080994BC:
- lsls r0, r3, 2
- adds r2, r5, r0
- ldr r1, [r2]
- cmp r1, 0
- beq _0809950E
- ldrh r0, [r1, 0x22]
- adds r0, r4, r0
- strh r0, [r1, 0x22]
- ldr r2, [r2]
- ldrh r1, [r2, 0x26]
- ldrh r0, [r2, 0x22]
- adds r1, r0
- adds r0, r2, 0
- adds r0, 0x29
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, r1
- lsls r0, 16
- movs r1, 0x80
- lsls r1, 13
- adds r0, r1
- lsrs r0, 16
- cmp r0, 0xC0
- bls _08099504
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _0809950E
- .align 2, 0
-_080994FC: .4byte gUnknown_083B6DB4
-_08099500: .4byte 0x00001038
-_08099504:
- adds r2, 0x3E
- ldrb r1, [r2]
- adds r0, r6, 0
- ands r0, r1
- strb r0, [r2]
-_0809950E:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _080994BC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80994A8
-
- thumb_func_start sub_8099520
-sub_8099520: @ 8099520
- push {r4,lr}
- lsls r0, 24
- ldr r1, _08099544 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- lsrs r0, 22
- ldr r2, _08099548 @ =0x00001038
- adds r1, r2
- adds r4, r1, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _0809953E
- bl sub_8099BE0
- movs r0, 0
- str r0, [r4]
-_0809953E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08099544: .4byte gUnknown_083B6DB4
-_08099548: .4byte 0x00001038
- thumb_func_end sub_8099520
-
- thumb_func_start sub_809954C
-sub_809954C: @ 809954C
- push {r4-r6,lr}
- movs r5, 0
- ldr r0, _0809957C @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _08099580 @ =0x00001038
- adds r6, r0, r1
-_08099558:
- lsls r0, r5, 2
- adds r4, r6, r0
- ldr r0, [r4]
- cmp r0, 0
- beq _0809956A
- bl sub_8099BE0
- movs r0, 0
- str r0, [r4]
-_0809956A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _08099558
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809957C: .4byte gUnknown_083B6DB4
-_08099580: .4byte 0x00001038
- thumb_func_end sub_809954C
-
- thumb_func_start sub_8099584
-sub_8099584: @ 8099584
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- adds r5, r1, 0
- cmp r4, 0
- bne _080995B4
- ldr r3, _080995AC @ =gUnknown_083B6DB4
- ldr r0, [r3]
- ldr r5, _080995B0 @ =0x00001034
- adds r2, r0, r5
- lsls r1, 2
- adds r5, 0x4
- adds r0, r5
- adds r0, r1
- ldr r1, [r0]
- str r1, [r2]
- str r4, [r0]
- b _080995D0
- .align 2, 0
-_080995AC: .4byte gUnknown_083B6DB4
-_080995B0: .4byte 0x00001034
-_080995B4:
- cmp r4, 0x1
- bne _080995F4
- ldr r3, _080995FC @ =gUnknown_083B6DB4
- ldr r0, [r3]
- ldr r1, _08099600 @ =0x00001034
- adds r2, r0, r1
- lsls r1, r5, 2
- ldr r4, _08099604 @ =0x00001050
- adds r0, r4
- adds r0, r1
- ldr r1, [r0]
- str r1, [r2]
- movs r1, 0
- str r1, [r0]
-_080995D0:
- ldr r2, [r3]
- ldr r5, _08099600 @ =0x00001034
- adds r2, r5
- ldr r1, [r2]
- ldr r0, _08099608 @ =sub_80999C4
- str r0, [r1, 0x1C]
- ldr r3, [r2]
- ldrb r1, [r3, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r0, [r2]
- adds r0, 0x43
- movs r1, 0x7
- strb r1, [r0]
-_080995F4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080995FC: .4byte gUnknown_083B6DB4
-_08099600: .4byte 0x00001034
-_08099604: .4byte 0x00001050
-_08099608: .4byte sub_80999C4
- thumb_func_end sub_8099584
-
- thumb_func_start sub_809960C
-sub_809960C: @ 809960C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- cmp r0, 0xE
- bne _08099654
- ldr r4, _08099648 @ =gUnknown_083B6DB4
- ldr r0, [r4]
- lsls r1, r6, 2
- ldr r2, _0809964C @ =0x00001038
- adds r3, r0, r2
- adds r3, r1
- ldr r1, _08099650 @ =0x00001034
- adds r0, r1
- ldr r2, [r0]
- str r2, [r3]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r3]
- adds r0, 0x43
- movs r1, 0xB
- strb r1, [r0]
- b _0809968A
- .align 2, 0
-_08099648: .4byte gUnknown_083B6DB4
-_0809964C: .4byte 0x00001038
-_08099650: .4byte 0x00001034
-_08099654:
- ldr r5, _080996A0 @ =gUnknown_083B6DB4
- ldr r0, [r5]
- lsls r1, r6, 2
- ldr r2, _080996A4 @ =0x00001050
- adds r3, r0, r2
- adds r3, r1
- ldr r1, _080996A8 @ =0x00001034
- adds r0, r1
- ldr r2, [r0]
- str r2, [r3]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r4, [r3]
- adds r0, r6, 0
- movs r1, 0x6
- bl __umodsi3
- movs r1, 0x12
- subs r1, r0
- adds r4, 0x43
- strb r1, [r4]
- adds r4, r5, 0
-_0809968A:
- ldr r1, [r4]
- ldr r2, _080996A8 @ =0x00001034
- adds r1, r2
- ldr r2, [r1]
- ldr r0, _080996AC @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
- movs r0, 0
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080996A0: .4byte gUnknown_083B6DB4
-_080996A4: .4byte 0x00001050
-_080996A8: .4byte 0x00001034
-_080996AC: .4byte SpriteCallbackDummy
- thumb_func_end sub_809960C
-
- thumb_func_start sub_80996B0
-sub_80996B0: @ 80996B0
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r0, 0xE
- bne _080996D8
- ldr r3, _080996CC @ =gUnknown_083B6DB4
- ldr r1, [r3]
- ldr r0, _080996D0 @ =0x000010c8
- adds r2, r1, r0
- lsls r0, r4, 2
- ldr r4, _080996D4 @ =0x00001038
- b _080996E4
- .align 2, 0
-_080996CC: .4byte gUnknown_083B6DB4
-_080996D0: .4byte 0x000010c8
-_080996D4: .4byte 0x00001038
-_080996D8:
- ldr r3, _08099704 @ =gUnknown_083B6DB4
- ldr r1, [r3]
- ldr r0, _08099708 @ =0x000010c8
- adds r2, r1, r0
- lsls r0, r4, 2
- ldr r4, _0809970C @ =0x00001050
-_080996E4:
- adds r0, r4
- adds r1, r0
- str r1, [r2]
- ldr r1, [r3]
- ldr r2, _08099710 @ =0x00001034
- adds r0, r1, r2
- ldr r2, [r0]
- ldr r0, _08099714 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
- ldr r4, _08099718 @ =0x00001170
- adds r1, r4
- movs r0, 0
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08099704: .4byte gUnknown_083B6DB4
-_08099708: .4byte 0x000010c8
-_0809970C: .4byte 0x00001050
-_08099710: .4byte 0x00001034
-_08099714: .4byte SpriteCallbackDummy
-_08099718: .4byte 0x00001170
- thumb_func_end sub_80996B0
-
- thumb_func_start sub_809971C
-sub_809971C: @ 809971C
- push {r4-r7,lr}
- ldr r0, _08099730 @ =gUnknown_083B6DB4
- ldr r2, [r0]
- ldr r0, _08099734 @ =0x00001170
- adds r7, r2, r0
- ldrb r0, [r7]
- cmp r0, 0x10
- bne _08099738
- movs r0, 0
- b _08099800
- .align 2, 0
-_08099730: .4byte gUnknown_083B6DB4
-_08099734: .4byte 0x00001170
-_08099738:
- adds r0, 0x1
- strb r0, [r7]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809975E
- ldr r1, _08099808 @ =0x000010c8
- adds r0, r2, r1
- ldr r0, [r0]
- ldr r1, [r0]
- ldrh r0, [r1, 0x22]
- subs r0, 0x1
- strh r0, [r1, 0x22]
- ldr r4, _0809980C @ =0x00001034
- adds r0, r2, r4
- ldr r1, [r0]
- ldrh r0, [r1, 0x22]
- adds r0, 0x1
- strh r0, [r1, 0x22]
-_0809975E:
- ldr r0, _08099808 @ =0x000010c8
- adds r5, r2, r0
- ldr r0, [r5]
- ldr r1, [r0]
- ldr r3, _08099810 @ =gSineTable
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r3
- movs r4, 0
- ldrsh r0, [r0, r4]
- cmp r0, 0
- bge _08099778
- adds r0, 0xF
-_08099778:
- asrs r0, 4
- strh r0, [r1, 0x24]
- ldr r0, _0809980C @ =0x00001034
- adds r6, r2, r0
- ldr r1, [r6]
- ldrb r0, [r7]
- lsls r0, 4
- adds r0, r3
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bge _08099792
- adds r0, 0xF
-_08099792:
- asrs r0, 4
- negs r0, r0
- strh r0, [r1, 0x24]
- ldrb r0, [r7]
- cmp r0, 0x8
- bne _080997DE
- ldr r4, [r6]
- ldr r0, [r5]
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- movs r2, 0xC
- ands r2, r0
- ldrb r3, [r4, 0x5]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r3
- orrs r0, r2
- strb r0, [r4, 0x5]
- ldr r2, [r6]
- ldr r0, [r5]
- ldr r0, [r0]
- adds r0, 0x43
- ldrb r0, [r0]
- adds r2, 0x43
- strb r0, [r2]
- ldr r0, [r5]
- ldr r2, [r0]
- ldrb r0, [r2, 0x5]
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r2, 0x5]
- ldr r0, [r5]
- ldr r0, [r0]
- adds r0, 0x43
- movs r1, 0x7
- strb r1, [r0]
-_080997DE:
- ldrb r0, [r7]
- cmp r0, 0x10
- bne _080997FE
- ldr r1, [r6]
- ldr r0, [r5]
- ldr r0, [r0]
- str r0, [r6]
- ldr r0, [r5]
- str r1, [r0]
- ldr r1, [r6]
- ldr r0, _08099814 @ =sub_80999C4
- str r0, [r1, 0x1C]
- ldr r0, [r5]
- ldr r1, [r0]
- ldr r0, _08099818 @ =SpriteCallbackDummy
- str r0, [r1, 0x1C]
-_080997FE:
- movs r0, 0x1
-_08099800:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08099808: .4byte 0x000010c8
-_0809980C: .4byte 0x00001034
-_08099810: .4byte gSineTable
-_08099814: .4byte sub_80999C4
-_08099818: .4byte SpriteCallbackDummy
- thumb_func_end sub_809971C
-
- thumb_func_start sub_809981C
-sub_809981C: @ 809981C
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- cmp r0, 0x1
- beq _08099858
- cmp r0, 0x1
- bgt _08099836
- cmp r0, 0
- beq _0809983C
- b _080998C0
-_08099836:
- cmp r2, 0x2
- beq _0809987C
- b _080998C0
-_0809983C:
- ldr r3, _0809984C @ =gUnknown_083B6DB4
- ldr r1, [r3]
- ldr r0, _08099850 @ =0x000010cc
- adds r2, r1, r0
- lsls r0, r4, 2
- ldr r4, _08099854 @ =0x00001038
- b _08099864
- .align 2, 0
-_0809984C: .4byte gUnknown_083B6DB4
-_08099850: .4byte 0x000010cc
-_08099854: .4byte 0x00001038
-_08099858:
- ldr r3, _08099870 @ =gUnknown_083B6DB4
- ldr r1, [r3]
- ldr r0, _08099874 @ =0x000010cc
- adds r2, r1, r0
- lsls r0, r4, 2
- ldr r4, _08099878 @ =0x00001050
-_08099864:
- adds r0, r4
- adds r1, r0
- str r1, [r2]
- adds r0, r3, 0
- b _0809988A
- .align 2, 0
-_08099870: .4byte gUnknown_083B6DB4
-_08099874: .4byte 0x000010cc
-_08099878: .4byte 0x00001050
-_0809987C:
- ldr r0, _080998C8 @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r3, _080998CC @ =0x000010cc
- adds r2, r1, r3
- ldr r4, _080998D0 @ =0x00001034
- adds r1, r4
- str r1, [r2]
-_0809988A:
- ldr r0, [r0]
- ldr r1, _080998CC @ =0x000010cc
- adds r4, r0, r1
- ldr r0, [r4]
- ldr r0, [r0]
- cmp r0, 0
- beq _080998C0
- bl InitSpriteAffineAnim
- ldr r0, [r4]
- ldr r2, [r0]
- ldrb r1, [r2, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldr r0, [r4]
- ldr r1, [r0]
- ldr r0, _080998D4 @ =gSpriteAffineAnimTable_83B6F5C
- str r0, [r1, 0x10]
- ldr r0, [r4]
- ldr r0, [r0]
- movs r1, 0
- bl StartSpriteAffineAnim
-_080998C0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080998C8: .4byte gUnknown_083B6DB4
-_080998CC: .4byte 0x000010cc
-_080998D0: .4byte 0x00001034
-_080998D4: .4byte gSpriteAffineAnimTable_83B6F5C
- thumb_func_end sub_809981C
-
- thumb_func_start sub_80998D8
-sub_80998D8: @ 80998D8
- push {lr}
- ldr r0, _080998FC @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _08099900 @ =0x000010cc
- adds r0, r1
- ldr r0, [r0]
- ldr r1, [r0]
- cmp r1, 0
- beq _080998F8
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- movs r0, 0x4
- ands r0, r2
- cmp r0, 0
- beq _08099904
-_080998F8:
- movs r0, 0
- b _0809991A
- .align 2, 0
-_080998FC: .4byte gUnknown_083B6DB4
-_08099900: .4byte 0x000010cc
-_08099904:
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08099918
- movs r0, 0x4
- orrs r0, r2
- strb r0, [r3]
-_08099918:
- movs r0, 0x1
-_0809991A:
- pop {r1}
- bx r1
- thumb_func_end sub_80998D8
-
- thumb_func_start sub_8099920
-sub_8099920: @ 8099920
- push {r4,lr}
- ldr r0, _08099950 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _08099954 @ =0x000010cc
- adds r4, r0, r1
- ldr r0, [r4]
- ldr r0, [r0]
- cmp r0, 0
- beq _0809994A
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldr r0, [r4]
- ldr r0, [r0]
- bl sub_8099BE0
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1]
-_0809994A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08099950: .4byte gUnknown_083B6DB4
-_08099954: .4byte 0x000010cc
- thumb_func_end sub_8099920
-
- thumb_func_start sub_8099958
-sub_8099958: @ 8099958
- push {lr}
- ldr r0, _08099988 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809998C @ =0x000010cc
- adds r3, r0, r1
- ldr r0, [r3]
- ldr r0, [r0]
- cmp r0, 0
- beq _08099982
- adds r2, r0, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, [r3]
- ldr r0, [r0]
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_08099982:
- pop {r0}
- bx r0
- .align 2, 0
-_08099988: .4byte gUnknown_083B6DB4
-_0809998C: .4byte 0x000010cc
- thumb_func_end sub_8099958
-
- thumb_func_start sub_8099990
-sub_8099990: @ 8099990
- push {lr}
- ldr r0, _080999A4 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _080999A8 @ =0x000010cc
- adds r2, r0, r1
- ldr r0, [r2]
- cmp r0, 0
- bne _080999AC
- movs r0, 0
- b _080999C0
- .align 2, 0
-_080999A4: .4byte gUnknown_083B6DB4
-_080999A8: .4byte 0x000010cc
-_080999AC:
- ldr r0, [r0]
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080999BE
- movs r0, 0
- str r0, [r2]
-_080999BE:
- movs r0, 0x1
-_080999C0:
- pop {r1}
- bx r1
- thumb_func_end sub_8099990
-
- thumb_func_start sub_80999C4
-sub_80999C4: @ 80999C4
- ldr r1, _080999E4 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- movs r2, 0x8E
- lsls r2, 5
- adds r1, r2
- ldr r2, [r1]
- ldrh r2, [r2, 0x20]
- strh r2, [r0, 0x20]
- ldr r2, [r1]
- ldrh r1, [r2, 0x26]
- ldrh r2, [r2, 0x22]
- adds r1, r2
- adds r1, 0x4
- strh r1, [r0, 0x22]
- bx lr
- .align 2, 0
-_080999E4: .4byte gUnknown_083B6DB4
- thumb_func_end sub_80999C4
-
- thumb_func_start sub_80999E8
-sub_80999E8: @ 80999E8
- push {r4-r6,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r4, 0
- ldr r1, _08099A58 @ =gUnknown_083B6DB4
- ldr r0, [r1]
- movs r2, 0x89
- lsls r2, 5
- adds r0, r2
- ldrh r0, [r0]
- adds r2, r1, 0
- cmp r0, r3
- beq _08099A20
- adds r6, r2, 0
- movs r5, 0x89
- lsls r5, 5
-_08099A08:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x27
- bhi _08099A20
- ldr r0, [r6]
- lsls r1, r4, 1
- adds r0, r5
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r3
- bne _08099A08
-_08099A20:
- cmp r4, 0x28
- bne _08099A60
- movs r4, 0
- ldr r0, [r2]
- movs r5, 0x89
- lsls r5, 5
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, 0
- beq _08099A4E
- adds r6, r2, 0
-_08099A36:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x27
- bhi _08099A4E
- ldr r0, [r6]
- lsls r1, r4, 1
- adds r0, r5
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _08099A36
-_08099A4E:
- cmp r4, 0x28
- bne _08099A60
- ldr r0, _08099A5C @ =0x0000ffff
- b _08099A94
- .align 2, 0
-_08099A58: .4byte gUnknown_083B6DB4
-_08099A5C: .4byte 0x0000ffff
-_08099A60:
- ldr r1, [r2]
- lsls r2, r4, 1
- movs r5, 0x89
- lsls r5, 5
- adds r0, r1, r5
- adds r0, r2
- strh r3, [r0]
- ldr r0, _08099A9C @ =0x000010d0
- adds r1, r0
- adds r1, r2
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- lsls r4, 20
- lsrs r4, 16
- ldr r1, _08099AA0 @ =gMonIconTable
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r1, r4, 5
- ldr r2, _08099AA4 @ =0x06010000
- adds r1, r2
- ldr r2, _08099AA8 @ =0x04000080
- bl CpuSet
- adds r0, r4, 0
-_08099A94:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08099A9C: .4byte 0x000010d0
-_08099AA0: .4byte gMonIconTable
-_08099AA4: .4byte 0x06010000
-_08099AA8: .4byte 0x04000080
- thumb_func_end sub_80999E8
-
- thumb_func_start sub_8099AAC
-sub_8099AAC: @ 8099AAC
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r6, r0, 16
- movs r3, 0
- ldr r0, _08099AE4 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0x89
- lsls r1, 5
- adds r5, r0, r1
- subs r1, 0x50
- adds r4, r0, r1
- ldr r0, _08099AE8 @ =0x0000ffff
- adds r7, r0, 0
-_08099AC6:
- lsls r1, r3, 1
- adds r2, r5, r1
- ldrh r0, [r2]
- cmp r0, r6
- bne _08099AEC
- adds r1, r4, r1
- ldrh r0, [r1]
- subs r0, 0x1
- strh r0, [r1]
- ands r0, r7
- cmp r0, 0
- bne _08099AF6
- strh r0, [r2]
- b _08099AF6
- .align 2, 0
-_08099AE4: .4byte gUnknown_083B6DB4
-_08099AE8: .4byte 0x0000ffff
-_08099AEC:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x27
- bls _08099AC6
-_08099AF6:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8099AAC
-
- thumb_func_start sub_8099AFC
-sub_8099AFC: @ 8099AFC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r4, [sp, 0x3C]
- ldr r5, [sp, 0x40]
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r2, 16
- lsrs r2, 16
- str r2, [sp, 0x18]
- lsls r3, 16
- lsrs r3, 16
- mov r8, r3
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- mov r9, r5
- mov r2, sp
- ldr r0, _08099BAC @ =gSpriteTemplate_83B6F14
- ldm r0!, {r3,r5,r7}
- stm r2!, {r3,r5,r7}
- ldm r0!, {r3,r5,r7}
- stm r2!, {r3,r5,r7}
- adds r0, r6, 0
- bl mon_icon_convert_unown_species_id
- mov r10, r0
- mov r6, r10
- mov r2, sp
- ldr r1, _08099BB0 @ =gMonIconPaletteIndices
- adds r1, r6, r1
- ldr r3, _08099BB4 @ =0x0000dac0
- adds r0, r3, 0
- ldrb r1, [r1]
- adds r0, r1
- strh r0, [r2, 0x2]
- adds r0, r6, 0
- bl sub_80999E8
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0, 0
- ldr r0, _08099BB8 @ =0x0000ffff
- cmp r5, r0
- beq _08099BCE
- ldr r7, [sp, 0x18]
- lsls r1, r7, 16
- asrs r1, 16
- mov r0, r8
- lsls r2, r0, 16
- asrs r2, 16
- mov r0, sp
- mov r3, r9
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _08099BC8
- ldr r1, _08099BBC @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldr r2, _08099BC0 @ =0x000003ff
- ands r2, r5
- ldrh r3, [r0, 0x4]
- ldr r1, _08099BC4 @ =0xfffffc00
- ands r1, r3
- orrs r1, r2
- strh r1, [r0, 0x4]
- movs r1, 0x3
- ands r4, r1
- lsls r3, r4, 2
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- orrs r1, r3
- strb r1, [r0, 0x5]
- mov r1, r10
- strh r1, [r0, 0x2E]
- b _08099BD0
- .align 2, 0
-_08099BAC: .4byte gSpriteTemplate_83B6F14
-_08099BB0: .4byte gMonIconPaletteIndices
-_08099BB4: .4byte 0x0000dac0
-_08099BB8: .4byte 0x0000ffff
-_08099BBC: .4byte gSprites
-_08099BC0: .4byte 0x000003ff
-_08099BC4: .4byte 0xfffffc00
-_08099BC8:
- adds r0, r6, 0
- bl sub_8099AAC
-_08099BCE:
- movs r0, 0
-_08099BD0:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8099AFC
-
- thumb_func_start sub_8099BE0
-sub_8099BE0: @ 8099BE0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- bl sub_8099AAC
- adds r0, r4, 0
- bl DestroySprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8099BE0
-
- thumb_func_start sub_8099BF8
-sub_8099BF8: @ 8099BF8
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08099C50 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _08099C54 @ =0x000008ba
- adds r2, r0, r1
- movs r1, 0
- strb r1, [r2]
- ldr r2, _08099C58 @ =0x000008b4
- adds r0, r2
- strh r1, [r0]
- str r1, [sp]
- ldr r1, _08099C5C @ =0x040000d4
- mov r0, sp
- str r0, [r1]
- ldr r0, _08099C60 @ =0x0600d000
- str r0, [r1, 0x4]
- ldr r0, _08099C64 @ =0x85000400
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r0, r4, 0
- movs r1, 0
- bl sub_8099EB0
- adds r0, r4, 0
- bl sub_809A23C
- bl sub_809A6DC
- adds r0, r4, 0
- bl sub_8098C48
- ldr r1, _08099C68 @ =REG_BG2CNT
- ldr r2, _08099C6C @ =0x00005a0a
- adds r0, r2, 0
- strh r0, [r1]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08099C50: .4byte gUnknown_083B6DB4
-_08099C54: .4byte 0x000008ba
-_08099C58: .4byte 0x000008b4
-_08099C5C: .4byte 0x040000d4
-_08099C60: .4byte 0x0600d000
-_08099C64: .4byte 0x85000400
-_08099C68: .4byte REG_BG2CNT
-_08099C6C: .4byte 0x00005a0a
- thumb_func_end sub_8099BF8
-
- thumb_func_start sub_8099C70
-sub_8099C70: @ 8099C70
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- bl sub_8099D90
- lsls r0, 24
- asrs r4, r0, 24
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_8099EB0
- ldr r0, _08099D10 @ =gUnknown_083B6DB4
- ldr r2, [r0]
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 1
- ldr r3, _08099D14 @ =0x000008b6
- adds r1, r2, r3
- strh r0, [r1]
- ldr r0, _08099D18 @ =0x000008b8
- adds r1, r2, r0
- movs r0, 0x20
- strh r0, [r1]
- ldr r1, _08099D1C @ =0x000008bb
- adds r0, r2, r1
- strb r5, [r0]
- movs r1, 0
- cmp r4, 0
- bgt _08099CAE
- movs r1, 0x5
-_08099CAE:
- ldr r3, _08099D20 @ =0x000008bc
- adds r0, r2, r3
- strh r1, [r0]
- ldr r1, _08099D24 @ =0x000008be
- adds r0, r2, r1
- strh r4, [r0]
- movs r1, 0x38
- cmp r4, 0
- ble _08099CC6
- movs r3, 0x84
- lsls r3, 1
- adds r1, r3, 0
-_08099CC6:
- movs r3, 0x8C
- lsls r3, 4
- adds r0, r2, r3
- strh r1, [r0]
- movs r1, 0
- cmp r4, 0
- bgt _08099CD6
- movs r1, 0x5
-_08099CD6:
- ldr r3, _08099D28 @ =0x000008c2
- adds r0, r2, r3
- strh r1, [r0]
- ldr r1, _08099D2C @ =0x000008c4
- adds r0, r2, r1
- strh r4, [r0]
- adds r3, 0x4
- adds r1, r2, r3
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08099D30 @ =0x000008c8
- adds r1, r2, r0
- movs r0, 0x2
- strh r0, [r1]
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_809900C
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_809A3D0
- adds r0, r4, 0
- bl sub_809A774
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08099D10: .4byte gUnknown_083B6DB4
-_08099D14: .4byte 0x000008b6
-_08099D18: .4byte 0x000008b8
-_08099D1C: .4byte 0x000008bb
-_08099D20: .4byte 0x000008bc
-_08099D24: .4byte 0x000008be
-_08099D28: .4byte 0x000008c2
-_08099D2C: .4byte 0x000008c4
-_08099D30: .4byte 0x000008c8
- thumb_func_end sub_8099C70
-
- thumb_func_start sub_8099D34
-sub_8099D34: @ 8099D34
- push {r4,lr}
- bl sub_80990AC
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _08099D78 @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r0, _08099D7C @ =0x000008b8
- adds r3, r1, r0
- ldrh r0, [r3]
- cmp r0, 0
- beq _08099D88
- ldr r4, _08099D80 @ =0x000008b4
- adds r2, r1, r4
- adds r4, 0x2
- adds r0, r1, r4
- ldrh r0, [r0]
- ldrh r1, [r2]
- adds r0, r1
- ldr r1, _08099D84 @ =0x000001ff
- ands r0, r1
- strh r0, [r2]
- ldrh r0, [r3]
- subs r0, 0x1
- strh r0, [r3]
- lsls r0, 16
- cmp r0, 0
- bne _08099D74
- bl sub_809A598
- bl sub_809A810
-_08099D74:
- movs r0, 0x1
- b _08099D8A
- .align 2, 0
-_08099D78: .4byte gUnknown_083B6DB4
-_08099D7C: .4byte 0x000008b8
-_08099D80: .4byte 0x000008b4
-_08099D84: .4byte 0x000001ff
-_08099D88:
- adds r0, r2, 0
-_08099D8A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8099D34
-
- thumb_func_start sub_8099D90
-sub_8099D90: @ 8099D90
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl get_preferred_box
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0
- cmp r1, r4
- beq _08099DBA
-_08099DA4:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xD
- bls _08099DB0
- movs r1, 0
-_08099DB0:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r1, r4
- bne _08099DA4
-_08099DBA:
- movs r0, 0x1
- negs r0, r0
- cmp r2, 0x6
- bhi _08099DC4
- movs r0, 0x1
-_08099DC4:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8099D90
-
- thumb_func_start sub_8099DCC
-sub_8099DCC: @ 8099DCC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl get_preferred_box
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08099DF8 @ =gPokemonStorage
- ldr r2, _08099DFC @ =0x000083c2
- adds r1, r2
- adds r0, r1
- movs r1, 0
- strb r4, [r0]
- ldr r0, _08099E00 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r2, _08099E04 @ =0x00001032
- adds r0, r2
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08099DF8: .4byte gPokemonStorage
-_08099DFC: .4byte 0x000083c2
-_08099E00: .4byte gUnknown_083B6DB4
-_08099E04: .4byte 0x00001032
- thumb_func_end sub_8099DCC
-
- thumb_func_start sub_8099E08
-sub_8099E08: @ 8099E08
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r0, _08099E24 @ =gUnknown_083B6DB4
- ldr r5, [r0]
- ldr r0, _08099E28 @ =0x00001032
- adds r4, r5, r0
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _08099E54
- cmp r0, 0x1
- bgt _08099E2C
- cmp r0, 0
- beq _08099E36
- b _08099EA6
- .align 2, 0
-_08099E24: .4byte gUnknown_083B6DB4
-_08099E28: .4byte 0x00001032
-_08099E2C:
- cmp r0, 0x2
- beq _08099E90
- cmp r0, 0x3
- beq _08099EA2
- b _08099EA6
-_08099E36:
- ldr r1, _08099E4C @ =0x00000d08
- adds r0, r5, r1
- ldr r0, [r0]
- ldr r1, _08099E50 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _08099E9A
- .align 2, 0
-_08099E4C: .4byte 0x00000d08
-_08099E50: .4byte 0x0000ffff
-_08099E54:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08099EA6
- bl get_preferred_box
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- bl sub_8099EB0
- bl sub_809A654
- ldr r1, _08099E88 @ =0x00000d08
- adds r0, r5, r1
- ldr r0, [r0]
- ldr r1, _08099E8C @ =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08099E9A
- .align 2, 0
-_08099E88: .4byte 0x00000d08
-_08099E8C: .4byte 0x0000ffff
-_08099E90:
- bl UpdatePaletteFade
- lsls r0, 24
- cmp r0, 0
- bne _08099EA6
-_08099E9A:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08099EA6
-_08099EA2:
- movs r0, 0
- b _08099EA8
-_08099EA6:
- movs r0, 0x1
-_08099EA8:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8099E08
-
- thumb_func_start sub_8099EB0
-sub_8099EB0: @ 8099EB0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- cmp r1, 0
- beq _08099ED8
- ldr r0, _08099F38 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r2, 0
- ldr r3, _08099F3C @ =0x000008ba
- adds r1, r0, r3
- ldrb r0, [r1]
- cmp r0, 0
- bne _08099ED0
- movs r2, 0x1
-_08099ED0:
- strb r2, [r1]
- ldr r0, _08099F40 @ =0x0600d000
- bl sub_809A14C
-_08099ED8:
- ldr r0, _08099F44 @ =gPokemonStorage
- ldr r1, _08099F48 @ =0x000083c2
- adds r0, r1
- adds r0, r4, r0
- ldrb r4, [r0]
- lsls r4, 4
- ldr r0, _08099F4C @ =gWallpaperTable
- adds r4, r0
- ldr r0, [r4, 0xC]
- ldr r1, _08099F38 @ =gUnknown_083B6DB4
- ldr r5, [r1]
- ldr r2, _08099F3C @ =0x000008ba
- adds r6, r5, r2
- ldrb r2, [r6]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 20
- movs r3, 0x80
- lsls r3, 15
- adds r1, r3
- lsrs r1, 16
- movs r2, 0x60
- bl LoadPalette
- ldr r0, [r4, 0x8]
- ldr r1, _08099F50 @ =0x00000d62
- adds r5, r1
- adds r1, r5, 0
- bl LZ77UnCompWram
- ldr r0, _08099F40 @ =0x0600d000
- lsls r2, r7, 24
- asrs r2, 24
- ldrb r3, [r6]
- adds r1, r5, 0
- bl sub_8099F58
- ldr r0, [r4]
- ldrb r1, [r6]
- lsls r1, 13
- ldr r2, _08099F54 @ =0x06008000
- adds r1, r2
- bl LZ77UnCompVram
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08099F38: .4byte gUnknown_083B6DB4
-_08099F3C: .4byte 0x000008ba
-_08099F40: .4byte 0x0600d000
-_08099F44: .4byte gPokemonStorage
-_08099F48: .4byte 0x000083c2
-_08099F4C: .4byte gWallpaperTable
-_08099F50: .4byte 0x00000d62
-_08099F54: .4byte 0x06008000
- thumb_func_end sub_8099EB0
-
- thumb_func_start sub_8099F58
-sub_8099F58: @ 8099F58
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- mov r9, r0
- adds r5, r1, 0
- lsls r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r0, r3, 8
- str r0, [sp]
- lsls r0, r3, 1
- adds r0, r3
- adds r0, 0x4
- lsls r0, 28
- lsrs r0, 16
- str r0, [sp, 0x4]
- ldr r0, _08099FB8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _08099FBC @ =0x000008b4
- adds r0, r1
- ldrh r1, [r0]
- lsrs r1, 3
- adds r1, 0xA
- lsrs r0, r2, 24
- mov r8, r0
- asrs r2, 24
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- movs r0, 0x3F
- ands r1, r0
- str r1, [sp, 0x8]
- adds r2, r1, 0
- cmp r2, 0xC
- bgt _08099FC0
- movs r6, 0x14
- movs r3, 0
- lsls r0, r2, 1
- adds r0, 0x80
- mov r1, r9
- adds r4, r1, r0
- movs r7, 0
- b _0809A020
- .align 2, 0
-_08099FB8: .4byte gUnknown_083B6DB4
-_08099FBC: .4byte 0x000008b4
-_08099FC0:
- cmp r2, 0x1F
- bgt _08099FE6
- movs r0, 0x20
- subs r0, r2
- lsls r0, 16
- movs r1, 0x14
- lsrs r6, r0, 16
- asrs r0, 16
- subs r1, r0
- lsls r1, 16
- lsrs r3, r1, 16
- lsls r0, r2, 1
- adds r0, 0x80
- mov r2, r9
- adds r4, r2, r0
- movs r7, 0x88
- lsls r7, 4
- add r7, r9
- b _0809A020
-_08099FE6:
- cmp r2, 0x2C
- bgt _08099FFE
- movs r6, 0x14
- movs r3, 0
- lsls r0, r2, 1
- movs r1, 0x84
- lsls r1, 4
- adds r0, r1
- mov r2, r9
- adds r4, r2, r0
- movs r7, 0
- b _0809A020
-_08099FFE:
- movs r0, 0x40
- subs r0, r2
- lsls r0, 16
- movs r1, 0x14
- lsrs r6, r0, 16
- asrs r0, 16
- subs r1, r0
- lsls r1, 16
- lsrs r3, r1, 16
- lsls r0, r2, 1
- movs r1, 0x84
- lsls r1, 4
- adds r0, r1
- mov r2, r9
- adds r4, r2, r0
- mov r7, r9
- adds r7, 0x80
-_0809A020:
- movs r1, 0
- mov r0, r8
- lsls r0, 24
- str r0, [sp, 0x14]
- lsls r0, r6, 16
- asrs r0, 16
- mov r8, r0
- lsls r3, 16
- str r3, [sp, 0xC]
- asrs r2, r3, 16
- str r2, [sp, 0x10]
-_0809A036:
- movs r3, 0
- adds r0, r4, 0
- adds r0, 0x40
- str r0, [sp, 0x18]
- adds r2, r7, 0
- adds r2, 0x40
- str r2, [sp, 0x1C]
- adds r1, 0x1
- mov r10, r1
- cmp r3, r8
- bge _0809A07A
- ldr r0, _0809A0D4 @ =0x00000fff
- mov r12, r0
- movs r6, 0xF0
- lsls r6, 8
-_0809A054:
- ldrh r2, [r5]
- mov r0, r12
- ands r0, r2
- ldr r1, [sp]
- adds r0, r1, r0
- adds r1, r6, 0
- ands r1, r2
- ldr r2, [sp, 0x4]
- adds r1, r2, r1
- orrs r1, r0
- lsls r0, r3, 1
- adds r0, r4
- strh r1, [r0]
- adds r5, 0x2
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r8
- blt _0809A054
-_0809A07A:
- movs r3, 0
- ldr r0, [sp, 0x10]
- cmp r3, r0
- bge _0809A0B4
- ldr r1, _0809A0D4 @ =0x00000fff
- mov r12, r1
- movs r6, 0xF0
- lsls r6, 8
- ldr r2, [sp, 0xC]
- asrs r4, r2, 16
-_0809A08E:
- ldrh r2, [r5]
- mov r0, r12
- ands r0, r2
- ldr r1, [sp]
- adds r0, r1, r0
- adds r1, r6, 0
- ands r1, r2
- ldr r2, [sp, 0x4]
- adds r1, r2, r1
- orrs r1, r0
- lsls r0, r3, 1
- adds r0, r7
- strh r1, [r0]
- adds r5, 0x2
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r4
- blt _0809A08E
-_0809A0B4:
- ldr r4, [sp, 0x18]
- ldr r7, [sp, 0x1C]
- mov r1, r10
- lsls r0, r1, 16
- lsrs r1, r0, 16
- cmp r1, 0x11
- bls _0809A036
- ldr r0, [sp, 0x14]
- asrs r2, r0, 24
- cmp r2, 0
- beq _0809A13A
- cmp r2, 0
- ble _0809A0D8
- ldr r1, [sp, 0x8]
- adds r1, 0x14
- b _0809A0DC
- .align 2, 0
-_0809A0D4: .4byte 0x00000fff
-_0809A0D8:
- ldr r1, [sp, 0x8]
- subs r1, 0x4
-_0809A0DC:
- movs r0, 0x3F
- ands r1, r0
- adds r4, r1, 0
- adds r0, r4, 0
- cmp r0, 0x1F
- bgt _0809A0EE
- lsls r0, 1
- adds r0, 0x80
- b _0809A0F6
-_0809A0EE:
- lsls r0, 1
- movs r2, 0x84
- lsls r2, 4
- adds r0, r2
-_0809A0F6:
- mov r1, r9
- adds r2, r1, r0
- movs r3, 0
- movs r6, 0
-_0809A0FE:
- movs r1, 0
- adds r5, r3, 0x1
- lsls r3, r4, 16
-_0809A104:
- strh r6, [r2]
- adds r2, 0x40
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x11
- bls _0809A104
- asrs r0, r3, 16
- adds r4, r0, 0x1
- movs r0, 0x3F
- ands r4, r0
- adds r0, r4, 0
- cmp r0, 0x1F
- bgt _0809A126
- lsls r0, 1
- adds r0, 0x80
- b _0809A12E
-_0809A126:
- lsls r0, 1
- movs r2, 0x84
- lsls r2, 4
- adds r0, r2
-_0809A12E:
- mov r1, r9
- adds r2, r1, r0
- lsls r0, r5, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bls _0809A0FE
-_0809A13A:
- 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_8099F58
-
- thumb_func_start sub_809A14C
-sub_809A14C: @ 809A14C
- push {r4-r6,lr}
- adds r2, r0, 0
- ldr r0, _0809A174 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809A178 @ =0x000008b4
- adds r0, r1
- ldrh r0, [r0]
- lsrs r0, 3
- adds r3, r0, 0
- adds r3, 0x1E
- movs r0, 0x3F
- ands r3, r0
- adds r0, r3, 0
- cmp r0, 0x1F
- bgt _0809A17C
- lsls r0, 1
- movs r6, 0x98
- lsls r6, 3
- adds r0, r6
- b _0809A184
- .align 2, 0
-_0809A174: .4byte gUnknown_083B6DB4
-_0809A178: .4byte 0x000008b4
-_0809A17C:
- lsls r0, 1
- movs r1, 0xC8
- lsls r1, 4
- adds r0, r1
-_0809A184:
- adds r2, r0
- movs r0, 0
- movs r5, 0
- movs r4, 0x3F
-_0809A18C:
- strh r5, [r2]
- adds r2, 0x2
- adds r3, 0x1
- ands r3, r4
- adds r1, r3, 0
- cmp r1, 0
- bne _0809A19E
- ldr r6, _0809A1B8 @ =0xfffff7c0
- adds r2, r6
-_0809A19E:
- cmp r1, 0x20
- bne _0809A1A8
- movs r1, 0xF8
- lsls r1, 3
- adds r2, r1
-_0809A1A8:
- adds r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2B
- bls _0809A18C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A1B8: .4byte 0xfffff7c0
- thumb_func_end sub_809A14C
-
- thumb_func_start sub_809A1BC
-sub_809A1BC: @ 809A1BC
- push {r4-r6,lr}
- sub sp, 0x8
- adds r3, r0, 0
- adds r2, r1, 0
- ldr r0, _0809A228 @ =gUnknown_083B6DB8
- ldr r5, [r0]
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r4, _0809A22C @ =0x040000d4
- str r1, [r4]
- str r5, [r4, 0x4]
- movs r6, 0x80
- lsls r6, 1
- ldr r0, _0809A230 @ =0x81000100
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- ldr r0, _0809A234 @ =gWindowTemplate_81E6D38
- adds r1, r5, 0
- str r3, [sp, 0x4]
- bl Text_InitWindow8004E3C
- str r5, [r4]
- ldr r3, [sp, 0x4]
- str r3, [r4, 0x4]
- ldr r1, _0809A238 @ =0x80000040
- str r1, [r4, 0x8]
- ldr r0, [r4, 0x8]
- adds r0, r5, r6
- str r0, [r4]
- adds r0, r3, 0
- adds r0, 0x80
- str r0, [r4, 0x4]
- str r1, [r4, 0x8]
- ldr r0, [r4, 0x8]
- adds r0, r5, 0
- adds r0, 0x80
- str r0, [r4]
- adds r6, r3, r6
- str r6, [r4, 0x4]
- str r1, [r4, 0x8]
- ldr r0, [r4, 0x8]
- movs r0, 0xC0
- lsls r0, 1
- adds r5, r0
- str r5, [r4]
- adds r3, r0
- str r3, [r4, 0x4]
- str r1, [r4, 0x8]
- ldr r0, [r4, 0x8]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A228: .4byte gUnknown_083B6DB8
-_0809A22C: .4byte 0x040000d4
-_0809A230: .4byte 0x81000100
-_0809A234: .4byte gWindowTemplate_81E6D38
-_0809A238: .4byte 0x80000040
- thumb_func_end sub_809A1BC
-
- thumb_func_start sub_809A23C
-sub_809A23C: @ 809A23C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _0809A384 @ =gUnknown_083B6DB4
- ldr r5, [r0]
- ldr r1, _0809A388 @ =0x000008ca
- adds r7, r5, r1
- str r7, [sp, 0x18]
- mov r2, sp
- adds r2, 0x18
- str r2, [sp, 0x20]
- ldr r0, _0809A38C @ =0x00030200
- str r0, [r2, 0x4]
- mov r1, sp
- ldr r3, _0809A390 @ =0x00000ccc
- adds r0, r5, r3
- str r0, [sp]
- ldr r4, _0809A394 @ =0x0000dac8
- strh r4, [r1, 0x4]
- str r0, [sp, 0x8]
- ldr r6, _0809A398 @ =0xffffdac9
- strh r6, [r1, 0xC]
- add r0, sp, 0x10
- movs r1, 0
- movs r2, 0x8
- bl memset
- ldr r0, _0809A39C @ =gPokemonStorage
- mov r9, r0
- ldr r0, _0809A3A0 @ =0x000083c2
- add r0, r9
- add r0, r8
- ldrb r1, [r0]
- ldr r2, _0809A3A4 @ =gUnknown_083BB0A8
- lsls r1, 2
- adds r0, r1, r2
- ldrh r3, [r0]
- ldr r6, _0809A3A8 @ =0x00000ce8
- adds r0, r5, r6
- strh r3, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrh r1, [r1]
- ldr r2, _0809A3AC @ =0x00000cea
- adds r0, r5, r2
- strh r1, [r0]
- mov r0, sp
- bl LoadSpritePalettes
- ldr r3, _0809A3B0 @ =0x00000d08
- adds r6, r5, r3
- movs r0, 0xFC
- lsls r0, 2
- str r0, [r6]
- adds r0, r4, 0
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- movs r2, 0x87
- lsls r2, 1
- mov r10, r2
- add r1, r10
- ldr r3, _0809A3B4 @ =0x00000cec
- adds r2, r5, r3
- strh r1, [r2]
- movs r4, 0x80
- lsls r4, 9
- adds r1, r4, 0
- lsls r1, r0
- ldr r0, [r6]
- orrs r0, r1
- str r0, [r6]
- ldr r0, _0809A3B8 @ =0x0000dac9
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- add r1, r10
- ldr r2, _0809A3BC @ =0x00000cee
- adds r5, r2
- strh r1, [r5]
- lsls r4, r0
- ldr r0, [r6]
- orrs r0, r4
- str r0, [r6]
- mov r3, r8
- lsls r4, r3, 3
- add r4, r8
- ldr r6, _0809A3C0 @ =0x00008344
- add r9, r6
- add r4, r9
- adds r0, r7, 0
- adds r1, r4, 0
- bl sub_809A1BC
- ldr r0, [sp, 0x20]
- bl LoadSpriteSheet
- adds r0, r4, 0
- bl sub_8072CA4
- lsls r0, 24
- lsrs r0, 24
- bl sub_809A6D0
- movs r4, 0
- lsls r0, 16
- asrs r6, r0, 16
-_0809A328:
- lsls r1, r4, 5
- adds r1, r6, r1
- lsls r1, 16
- asrs r1, 16
- ldr r0, _0809A3C4 @ =gSpriteTemplate_83BB2B8
- movs r2, 0x1C
- movs r3, 0x17
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _0809A384 @ =gUnknown_083B6DB4
- ldr r5, [r0]
- lsls r0, r4, 2
- movs r3, 0xCF
- lsls r3, 4
- adds r2, r5, r3
- adds r2, r0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809A3C8 @ =gSprites
- adds r0, r1
- str r0, [r2]
- lsls r1, r4, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _0809A328
- ldr r6, _0809A3CC @ =0x00000cca
- adds r1, r5, r6
- movs r0, 0
- strb r0, [r1]
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A384: .4byte gUnknown_083B6DB4
-_0809A388: .4byte 0x000008ca
-_0809A38C: .4byte 0x00030200
-_0809A390: .4byte 0x00000ccc
-_0809A394: .4byte 0x0000dac8
-_0809A398: .4byte 0xffffdac9
-_0809A39C: .4byte gPokemonStorage
-_0809A3A0: .4byte 0x000083c2
-_0809A3A4: .4byte gUnknown_083BB0A8
-_0809A3A8: .4byte 0x00000ce8
-_0809A3AC: .4byte 0x00000cea
-_0809A3B0: .4byte 0x00000d08
-_0809A3B4: .4byte 0x00000cec
-_0809A3B8: .4byte 0x0000dac9
-_0809A3BC: .4byte 0x00000cee
-_0809A3C0: .4byte 0x00008344
-_0809A3C4: .4byte gSpriteTemplate_83BB2B8
-_0809A3C8: .4byte gSprites
-_0809A3CC: .4byte 0x00000cca
- thumb_func_end sub_809A23C
-
- thumb_func_start sub_809A3D0
-sub_809A3D0: @ 809A3D0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x28]
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- ldr r3, _0809A43C @ =gUnknown_083B6DB4
- ldr r5, [r3]
- ldr r1, _0809A440 @ =0x000008ca
- adds r0, r5, r1
- str r0, [sp, 0x18]
- add r2, sp, 0x18
- ldr r4, _0809A444 @ =0x0000ffff
- mov r9, r4
- movs r6, 0xC0
- lsls r6, 10
- mov r8, r6
- ldr r0, _0809A448 @ =0x00030200
- str r0, [r2, 0x4]
- mov r1, sp
- ldr r0, _0809A44C @ =gSpriteTemplate_83BB2B8
- ldm r0!, {r4,r6,r7}
- stm r1!, {r4,r6,r7}
- ldm r0!, {r4,r6,r7}
- stm r1!, {r4,r6,r7}
- movs r1, 0
- ldr r7, _0809A450 @ =0x00000cca
- adds r4, r5, r7
- ldrb r0, [r4]
- adds r6, r2, 0
- cmp r0, 0
- bne _0809A41E
- movs r1, 0x1
-_0809A41E:
- strb r1, [r4]
- cmp r1, 0
- bne _0809A458
- ldr r0, [r6, 0x4]
- mov r1, r9
- ands r0, r1
- mov r4, r8
- orrs r0, r4
- str r0, [r6, 0x4]
- ldr r7, _0809A454 @ =0x00000cec
- adds r0, r5, r7
- ldrh r0, [r0]
- mov r8, r0
- b _0809A478
- .align 2, 0
-_0809A43C: .4byte gUnknown_083B6DB4
-_0809A440: .4byte 0x000008ca
-_0809A444: .4byte 0x0000ffff
-_0809A448: .4byte 0x00030200
-_0809A44C: .4byte gSpriteTemplate_83BB2B8
-_0809A450: .4byte 0x00000cca
-_0809A454: .4byte 0x00000cec
-_0809A458:
- ldr r0, [r6, 0x4]
- mov r1, r9
- ands r0, r1
- movs r1, 0x80
- lsls r1, 11
- orrs r0, r1
- str r0, [r6, 0x4]
- ldr r4, _0809A570 @ =0x00000cec
- adds r0, r5, r4
- ldrh r0, [r0]
- mov r8, r0
- mov r1, sp
- movs r0, 0x4
- strh r0, [r1]
- ldr r0, _0809A574 @ =0x0000dac9
- strh r0, [r1, 0x2]
-_0809A478:
- ldr r0, [r3]
- ldr r7, _0809A578 @ =0x000008ca
- adds r0, r7
- ldr r1, [sp, 0x28]
- lsls r5, r1, 3
- adds r5, r1
- ldr r4, _0809A57C @ =gPokemonStorage + 0x8344
- adds r5, r4
- adds r1, r5, 0
- bl sub_809A1BC
- adds r0, r6, 0
- bl LoadSpriteSheet
- adds r4, 0x7E
- ldr r3, [sp, 0x28]
- adds r4, r3, r4
- ldrb r0, [r4]
- lsls r0, 2
- ldr r1, _0809A580 @ =gUnknown_083BB0A8
- adds r0, r1
- mov r1, r8
- movs r2, 0x4
- bl LoadPalette
- adds r0, r5, 0
- bl sub_8072CA4
- lsls r0, 24
- lsrs r0, 24
- bl sub_809A6D0
- lsls r0, 16
- mov r4, r10
- lsls r2, r4, 24
- asrs r2, 24
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 6
- lsrs r6, r0, 16
- str r6, [sp, 0x20]
- asrs r0, 16
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x24]
- movs r7, 0
- negs r2, r2
- mov r9, r2
- movs r0, 0x1
- mov r10, r0
-_0809A4DE:
- lsls r1, r7, 5
- mov r8, r1
- ldr r3, [sp, 0x24]
- lsls r1, r3, 16
- asrs r1, 16
- add r1, r8
- lsls r1, 16
- asrs r1, 16
- mov r0, sp
- movs r2, 0x1C
- movs r3, 0x17
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0809A584 @ =gUnknown_083B6DB4
- ldr r4, [r1]
- lsls r6, r7, 2
- ldr r1, _0809A588 @ =0x00000cf8
- adds r2, r4, r1
- adds r2, r6
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0809A58C @ =gSprites
- adds r1, r0
- str r1, [r2]
- mov r3, r9
- lsls r5, r3, 1
- add r5, r9
- lsls r5, 1
- strh r5, [r1, 0x2E]
- ldr r1, [r2]
- ldr r3, [sp, 0x20]
- lsls r0, r3, 16
- asrs r0, 16
- add r0, r8
- strh r0, [r1, 0x30]
- ldr r0, [r2]
- mov r1, r10
- strh r1, [r0, 0x32]
- ldr r0, [r2]
- ldr r1, _0809A590 @ =sub_809A5E8
- str r1, [r0, 0x1C]
- lsls r1, r7, 24
- lsrs r1, 24
- bl StartSpriteAnim
- movs r3, 0xCF
- lsls r3, 4
- adds r4, r3
- adds r4, r6
- ldr r0, [r4]
- strh r5, [r0, 0x2E]
- ldr r0, [r4]
- mov r6, r10
- strh r6, [r0, 0x30]
- ldr r1, [r4]
- ldr r0, _0809A594 @ =sub_809A61C
- str r0, [r1, 0x1C]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x1
- bls _0809A4DE
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A570: .4byte 0x00000cec
-_0809A574: .4byte 0x0000dac9
-_0809A578: .4byte 0x000008ca
-_0809A57C: .4byte gPokemonStorage + 0x8344
-_0809A580: .4byte gUnknown_083BB0A8
-_0809A584: .4byte gUnknown_083B6DB4
-_0809A588: .4byte 0x00000cf8
-_0809A58C: .4byte gSprites
-_0809A590: .4byte sub_809A5E8
-_0809A594: .4byte sub_809A61C
- thumb_func_end sub_809A3D0
-
- thumb_func_start sub_809A598
-sub_809A598: @ 809A598
- push {lr}
- ldr r0, _0809A5B0 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809A5B4 @ =0x00000cca
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809A5B8
- movs r0, 0x4
- bl FreeSpriteTilesByTag
- b _0809A5BE
- .align 2, 0
-_0809A5B0: .4byte gUnknown_083B6DB4
-_0809A5B4: .4byte 0x00000cca
-_0809A5B8:
- movs r0, 0x3
- bl FreeSpriteTilesByTag
-_0809A5BE:
- ldr r0, _0809A5E0 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r3, 0xCF
- lsls r3, 4
- adds r2, r0, r3
- adds r3, 0x8
- adds r1, r0, r3
- ldr r1, [r1]
- str r1, [r2]
- ldr r2, _0809A5E4 @ =0x00000cf4
- adds r1, r0, r2
- adds r3, 0x4
- adds r0, r3
- ldr r0, [r0]
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0809A5E0: .4byte gUnknown_083B6DB4
-_0809A5E4: .4byte 0x00000cf4
- thumb_func_end sub_809A598
-
- thumb_func_start sub_809A5E8
-sub_809A5E8: @ 809A5E8
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x32]
- movs r3, 0x32
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _0809A5FC
- subs r0, r1, 0x1
- strh r0, [r2, 0x32]
- b _0809A614
-_0809A5FC:
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x30
- ldrsh r1, [r2, r3]
- cmp r0, r1
- bne _0809A614
- ldr r0, _0809A618 @ =SpriteCallbackDummy
- str r0, [r2, 0x1C]
-_0809A614:
- pop {r0}
- bx r0
- .align 2, 0
-_0809A618: .4byte SpriteCallbackDummy
- thumb_func_end sub_809A5E8
-
- thumb_func_start sub_809A61C
-sub_809A61C: @ 809A61C
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x30]
- movs r3, 0x30
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _0809A630
- subs r0, r1, 0x1
- strh r0, [r2, 0x30]
- b _0809A64E
-_0809A630:
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- ldrh r1, [r2, 0x24]
- adds r0, r1
- strh r0, [r2, 0x32]
- subs r0, 0x40
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xC0
- bls _0809A64E
- adds r0, r2, 0
- bl DestroySprite
-_0809A64E:
- pop {r0}
- bx r0
- thumb_func_end sub_809A61C
-
- thumb_func_start sub_809A654
-sub_809A654: @ 809A654
- push {lr}
- bl get_preferred_box
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0809A690 @ =gPokemonStorage
- ldr r2, _0809A694 @ =0x000083c2
- adds r1, r2
- adds r0, r1
- ldrb r1, [r0]
- ldr r0, _0809A698 @ =gUnknown_083B6DB4
- ldr r2, [r0]
- ldr r3, _0809A69C @ =0x00000cca
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809A6A8
- lsls r0, r1, 2
- ldr r1, _0809A6A0 @ =gUnknown_083BB0A8
- adds r0, r1
- adds r3, 0x22
- adds r1, r2, r3
- ldrh r1, [r1]
- lsls r1, 1
- ldr r2, _0809A6A4 @ =gPlttBufferUnfaded
- adds r1, r2
- movs r2, 0x2
- bl CpuSet
- b _0809A6C0
- .align 2, 0
-_0809A690: .4byte gPokemonStorage
-_0809A694: .4byte 0x000083c2
-_0809A698: .4byte gUnknown_083B6DB4
-_0809A69C: .4byte 0x00000cca
-_0809A6A0: .4byte gUnknown_083BB0A8
-_0809A6A4: .4byte gPlttBufferUnfaded
-_0809A6A8:
- lsls r0, r1, 2
- ldr r1, _0809A6C4 @ =gUnknown_083BB0A8
- adds r0, r1
- ldr r3, _0809A6C8 @ =0x00000cee
- adds r1, r2, r3
- ldrh r1, [r1]
- lsls r1, 1
- ldr r2, _0809A6CC @ =gPlttBufferUnfaded
- adds r1, r2
- movs r2, 0x2
- bl CpuSet
-_0809A6C0:
- pop {r0}
- bx r0
- .align 2, 0
-_0809A6C4: .4byte gUnknown_083BB0A8
-_0809A6C8: .4byte 0x00000cee
-_0809A6CC: .4byte gPlttBufferUnfaded
- thumb_func_end sub_809A654
-
- thumb_func_start sub_809A6D0
-sub_809A6D0: @ 809A6D0
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 25
- movs r0, 0xB0
- subs r0, r1
- bx lr
- thumb_func_end sub_809A6D0
-
- thumb_func_start sub_809A6DC
-sub_809A6DC: @ 809A6DC
- push {r4,r5,lr}
- ldr r0, _0809A760 @ =gUnknown_083BB288
- bl LoadSpriteSheet
- ldr r0, _0809A764 @ =gUnknown_083BB290
- bl LoadSpritePalette
- movs r5, 0
-_0809A6EC:
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 19
- movs r0, 0xB8
- lsls r0, 15
- adds r1, r0
- asrs r1, 16
- ldr r0, _0809A768 @ =gSpriteTemplate_83BB2F0
- movs r2, 0x1C
- movs r3, 0x15
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _0809A73E
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809A76C @ =gSprites
- adds r4, r0, r1
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- movs r0, 0x1
- cmp r5, 0
- bne _0809A72C
- movs r1, 0x1
- negs r1, r1
- adds r0, r1, 0
-_0809A72C:
- strh r0, [r4, 0x34]
- ldr r0, _0809A770 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- lsls r1, r5, 2
- movs r2, 0xD0
- lsls r2, 4
- adds r0, r2
- adds r0, r1
- str r4, [r0]
-_0809A73E:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x1
- bls _0809A6EC
- bl sub_809BF2C
- lsls r0, 24
- cmp r0, 0
- beq _0809A758
- movs r0, 0x1
- bl sub_809A860
-_0809A758:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A760: .4byte gUnknown_083BB288
-_0809A764: .4byte gUnknown_083BB290
-_0809A768: .4byte gSpriteTemplate_83BB2F0
-_0809A76C: .4byte gSprites
-_0809A770: .4byte gUnknown_083B6DB4
- thumb_func_end sub_809A6DC
-
- thumb_func_start sub_809A774
-sub_809A774: @ 809A774
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- movs r2, 0
- ldr r7, _0809A7C4 @ =gUnknown_083B6DB4
- ldr r0, [r7]
- movs r1, 0xD0
- lsls r1, 4
- adds r3, r0, r1
- movs r5, 0
- movs r4, 0x2
-_0809A78A:
- lsls r1, r2, 2
- adds r1, r3, r1
- ldr r0, [r1]
- strh r5, [r0, 0x24]
- ldr r0, [r1]
- strh r4, [r0, 0x2E]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1
- bls _0809A78A
- lsls r0, r6, 24
- cmp r0, 0
- bge _0809A7CC
- ldr r1, [r7]
- movs r2, 0xD0
- lsls r2, 4
- adds r3, r1, r2
- ldr r2, [r3]
- movs r0, 0x1D
- strh r0, [r2, 0x30]
- ldr r0, _0809A7C8 @ =0x00000d04
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0x5
- strh r0, [r2, 0x30]
- ldr r0, [r3]
- movs r2, 0x48
- b _0809A7E8
- .align 2, 0
-_0809A7C4: .4byte gUnknown_083B6DB4
-_0809A7C8: .4byte 0x00000d04
-_0809A7CC:
- ldr r1, [r7]
- movs r2, 0xD0
- lsls r2, 4
- adds r3, r1, r2
- ldr r2, [r3]
- movs r0, 0x5
- strh r0, [r2, 0x30]
- ldr r0, _0809A80C @ =0x00000d04
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0x1D
- strh r0, [r2, 0x30]
- ldr r0, [r3]
- movs r2, 0xF8
-_0809A7E8:
- strh r2, [r0, 0x32]
- ldr r0, [r1]
- strh r2, [r0, 0x32]
- ldr r1, [r7]
- movs r2, 0xD0
- lsls r2, 4
- adds r0, r1, r2
- ldr r2, [r0]
- movs r0, 0
- strh r0, [r2, 0x3C]
- ldr r0, _0809A80C @ =0x00000d04
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x1
- strh r0, [r1, 0x3C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A80C: .4byte 0x00000d04
- thumb_func_end sub_809A774
-
- thumb_func_start sub_809A810
-sub_809A810: @ 809A810
- push {r4-r6,lr}
- movs r3, 0
- ldr r0, _0809A85C @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0xD0
- lsls r1, 4
- adds r4, r0, r1
- movs r5, 0
- movs r6, 0x5
- negs r6, r6
-_0809A824:
- lsls r1, r3, 2
- adds r1, r4, r1
- ldr r2, [r1]
- lsls r0, r3, 4
- adds r0, r3
- lsls r0, 3
- adds r0, 0x5C
- strh r0, [r2, 0x20]
- ldr r0, [r1]
- strh r5, [r0, 0x24]
- ldr r1, [r1]
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x1
- bls _0809A824
- movs r0, 0x1
- bl sub_809A860
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A85C: .4byte gUnknown_083B6DB4
- thumb_func_end sub_809A810
-
- thumb_func_start sub_809A860
-sub_809A860: @ 809A860
- push {r4,r5,lr}
- lsls r0, 24
- cmp r0, 0
- beq _0809A89C
- movs r2, 0
- ldr r0, _0809A898 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0xD0
- lsls r1, 4
- adds r4, r0, r1
- movs r3, 0
- movs r5, 0x1
-_0809A878:
- lsls r1, r2, 2
- adds r1, r4, r1
- ldr r0, [r1]
- strh r5, [r0, 0x2E]
- ldr r0, [r1]
- strh r3, [r0, 0x30]
- ldr r0, [r1]
- strh r3, [r0, 0x32]
- ldr r0, [r1]
- strh r3, [r0, 0x36]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1
- bls _0809A878
- b _0809A8BC
- .align 2, 0
-_0809A898: .4byte gUnknown_083B6DB4
-_0809A89C:
- movs r2, 0
- ldr r0, _0809A8C4 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r3, 0xD0
- lsls r3, 4
- adds r1, r0, r3
- movs r3, 0
-_0809A8AA:
- lsls r0, r2, 2
- adds r0, r1, r0
- ldr r0, [r0]
- strh r3, [r0, 0x2E]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x1
- bls _0809A8AA
-_0809A8BC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809A8C4: .4byte gUnknown_083B6DB4
- thumb_func_end sub_809A860
-
- thumb_func_start sub_809A8C8
-sub_809A8C8: @ 809A8C8
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x4
- bhi _0809A994
- lsls r0, 2
- ldr r1, _0809A8E0 @ =_0809A8E4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809A8E0: .4byte _0809A8E4
- .align 2, 0
-_0809A8E4:
- .4byte _0809A8F8
- .4byte _0809A8FE
- .4byte _0809A92C
- .4byte _0809A932
- .4byte _0809A984
-_0809A8F8:
- movs r0, 0
- strh r0, [r2, 0x24]
- b _0809A994
-_0809A8FE:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _0809A994
- strh r1, [r2, 0x30]
- ldrh r0, [r2, 0x34]
- ldrh r3, [r2, 0x24]
- adds r0, r3
- strh r0, [r2, 0x24]
- ldrh r0, [r2, 0x32]
- adds r0, 0x1
- strh r0, [r2, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _0809A994
- strh r1, [r2, 0x32]
- strh r1, [r2, 0x24]
- b _0809A994
-_0809A92C:
- movs r0, 0x3
- strh r0, [r2, 0x2E]
- b _0809A994
-_0809A932:
- ldr r0, _0809A97C @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r0, _0809A980 @ =0x000008b6
- adds r1, r0
- ldrh r0, [r2, 0x20]
- ldrh r1, [r1]
- subs r0, r1
- strh r0, [r2, 0x20]
- subs r0, 0x49
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAE
- bls _0809A958
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
-_0809A958:
- ldrh r0, [r2, 0x30]
- subs r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- cmp r0, 0
- bne _0809A994
- ldrh r0, [r2, 0x32]
- strh r0, [r2, 0x20]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- movs r0, 0x4
- strh r0, [r2, 0x2E]
- b _0809A994
- .align 2, 0
-_0809A97C: .4byte gUnknown_083B6DB4
-_0809A980: .4byte 0x000008b6
-_0809A984:
- ldr r0, _0809A998 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809A99C @ =0x000008b6
- adds r0, r1
- ldrh r1, [r2, 0x20]
- ldrh r0, [r0]
- subs r1, r0
- strh r1, [r2, 0x20]
-_0809A994:
- pop {r0}
- bx r0
- .align 2, 0
-_0809A998: .4byte gUnknown_083B6DB4
-_0809A99C: .4byte 0x000008b6
- thumb_func_end sub_809A8C8
-
- thumb_func_start sub_809A9A0
-sub_809A9A0: @ 809A9A0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r4, [sp, 0x18]
- lsls r2, 24
- lsrs r7, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0809AA0C @ =gSpriteTemplate_83BB2F0
- lsls r5, 16
- asrs r5, 16
- lsls r6, 16
- asrs r6, 16
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r4, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0809AA18
- movs r1, 0x1
- ands r1, r7
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r5, _0809AA10 @ =gSprites
- adds r6, r4, r5
- adds r0, r6, 0
- bl StartSpriteAnim
- movs r0, 0x3
- mov r1, r8
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r6, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6, 0x5]
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _0809AA14 @ =SpriteCallbackDummy
- str r0, [r4]
- adds r0, r6, 0
- b _0809AA1A
- .align 2, 0
-_0809AA0C: .4byte gSpriteTemplate_83BB2F0
-_0809AA10: .4byte gSprites
-_0809AA14: .4byte SpriteCallbackDummy
-_0809AA18:
- movs r0, 0
-_0809AA1A:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_809A9A0
-
- thumb_func_start sub_809AA24
-sub_809AA24: @ 809AA24
- push {lr}
- ldr r0, _0809AA38 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldrb r1, [r0, 0x5]
- cmp r1, 0x1
- beq _0809AA40
- ldr r1, _0809AA3C @ =gUnknown_020384E4
- movs r0, 0
- strb r0, [r1]
- b _0809AA44
- .align 2, 0
-_0809AA38: .4byte gUnknown_083B6DB4
-_0809AA3C: .4byte gUnknown_020384E4
-_0809AA40:
- ldr r0, _0809AA78 @ =gUnknown_020384E4
- strb r1, [r0]
-_0809AA44:
- ldr r0, _0809AA7C @ =gUnknown_020384E5
- movs r1, 0
- strb r1, [r0]
- ldr r0, _0809AA80 @ =gUnknown_020384E6
- strb r1, [r0]
- ldr r0, _0809AA84 @ =gUnknown_020384E7
- strb r1, [r0]
- ldr r0, _0809AA88 @ =gUnknown_020384E8
- strb r1, [r0]
- ldr r0, _0809AA8C @ =gUnknown_020384E9
- strb r1, [r0]
- bl sub_809B0D4
- bl sub_809CC04
- ldr r0, _0809AA90 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809AA94 @ =0x000011e2
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- bl sub_809BF74
- pop {r0}
- bx r0
- .align 2, 0
-_0809AA78: .4byte gUnknown_020384E4
-_0809AA7C: .4byte gUnknown_020384E5
-_0809AA80: .4byte gUnknown_020384E6
-_0809AA84: .4byte gUnknown_020384E7
-_0809AA88: .4byte gUnknown_020384E8
-_0809AA8C: .4byte gUnknown_020384E9
-_0809AA90: .4byte gUnknown_083B6DB4
-_0809AA94: .4byte 0x000011e2
- thumb_func_end sub_809AA24
-
- thumb_func_start sub_809AA98
-sub_809AA98: @ 809AA98
- push {lr}
- bl sub_809CC04
- bl sub_809C028
- ldr r0, _0809AAC0 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809AAC4 @ =0x000011e2
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _0809AAC8 @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809AABA
- bl sub_8098BF0
-_0809AABA:
- pop {r0}
- bx r0
- .align 2, 0
-_0809AAC0: .4byte gUnknown_083B6DB4
-_0809AAC4: .4byte 0x000011e2
-_0809AAC8: .4byte gUnknown_020384E6
- thumb_func_end sub_809AA98
-
- thumb_func_start sub_809AACC
-sub_809AACC: @ 809AACC
- push {r4-r6,lr}
- adds r4, r2, 0
- adds r6, r3, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- cmp r0, 0x4
- bhi _0809AB84
- lsls r0, 2
- ldr r1, _0809AAE8 @ =_0809AAEC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809AAE8: .4byte _0809AAEC
- .align 2, 0
-_0809AAEC:
- .4byte _0809AB00
- .4byte _0809AB2E
- .4byte _0809AB56
- .4byte _0809AB5E
- .4byte _0809AB7C
-_0809AB00:
- adds r0, r5, 0
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, 0x64
- strh r1, [r4]
- adds r0, r5, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r1, 0x20
- strh r1, [r6]
- b _0809AB84
-_0809AB2E:
- cmp r5, 0
- bne _0809AB3A
- movs r0, 0x68
- strh r0, [r4]
- movs r0, 0x34
- b _0809AB82
-_0809AB3A:
- cmp r5, 0x6
- bne _0809AB46
- movs r0, 0x98
- strh r0, [r4]
- movs r0, 0x84
- b _0809AB82
-_0809AB46:
- movs r0, 0x98
- strh r0, [r4]
- subs r1, r5, 0x1
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 3
- adds r0, 0x4
- b _0809AB82
-_0809AB56:
- movs r0, 0xA2
- strh r0, [r4]
- movs r0, 0xC
- b _0809AB82
-_0809AB5E:
- ldr r0, _0809AB78 @ =gUnknown_020384E6
- ldrb r0, [r0]
- movs r1, 0xE
- cmp r0, 0
- beq _0809AB6A
- movs r1, 0x8
-_0809AB6A:
- strh r1, [r6]
- movs r0, 0x58
- muls r0, r5
- adds r0, 0x78
- strh r0, [r4]
- b _0809AB84
- .align 2, 0
-_0809AB78: .4byte gUnknown_020384E6
-_0809AB7C:
- movs r0, 0xA0
- strh r0, [r4]
- movs r0, 0x60
-_0809AB82:
- strh r0, [r6]
-_0809AB84:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_809AACC
-
- thumb_func_start sub_809AB8C
-sub_809AB8C: @ 809AB8C
- push {lr}
- ldr r0, _0809ABB4 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _0809ABC0
- cmp r0, 0x1
- bne _0809ABF8
- ldr r0, _0809ABB8 @ =gUnknown_020384E5
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0809ABBC @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- b _0809ABEA
- .align 2, 0
-_0809ABB4: .4byte gUnknown_020384E4
-_0809ABB8: .4byte gUnknown_020384E5
-_0809ABBC: .4byte gPlayerParty
-_0809ABC0:
- bl get_preferred_box
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldr r1, _0809ABF0 @ =gUnknown_020384E5
- movs r2, 0
- ldrsb r2, [r1, r2]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- ldr r2, _0809ABF4 @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- movs r1, 0xB
- bl GetBoxMonData
-_0809ABEA:
- lsls r0, 16
- lsrs r0, 16
- b _0809ABFA
- .align 2, 0
-_0809ABF0: .4byte gUnknown_020384E5
-_0809ABF4: .4byte gPokemonStorage + 0x4
-_0809ABF8:
- movs r0, 0
-_0809ABFA:
- pop {r1}
- bx r1
- thumb_func_end sub_809AB8C
-
- thumb_func_start sub_809AC00
-sub_809AC00: @ 809AC00
- push {r4-r6,lr}
- ldr r0, _0809AC14 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- ldr r0, _0809AC18 @ =0x000011dc
- adds r1, r4, r0
- ldrh r0, [r1]
- cmp r0, 0
- bne _0809AC1C
- movs r0, 0
- b _0809AD2C
- .align 2, 0
-_0809AC14: .4byte gUnknown_083B6DB4
-_0809AC18: .4byte 0x000011dc
-_0809AC1C:
- subs r0, 0x1
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- beq _0809AD0C
- ldr r1, _0809ACF4 @ =0x000011c8
- adds r3, r4, r1
- ldr r2, _0809ACF8 @ =0x000011d0
- adds r1, r4, r2
- ldr r0, [r3]
- ldr r1, [r1]
- adds r0, r1
- str r0, [r3]
- ldr r6, _0809ACFC @ =0x000011cc
- adds r2, r4, r6
- ldr r0, _0809AD00 @ =0x000011d4
- adds r1, r4, r0
- ldr r0, [r2]
- ldr r1, [r1]
- adds r0, r1
- str r0, [r2]
- movs r1, 0x8E
- lsls r1, 5
- adds r5, r4, r1
- ldr r1, [r5]
- ldr r0, [r3]
- asrs r0, 8
- strh r0, [r1, 0x20]
- ldr r1, [r5]
- ldr r0, [r2]
- asrs r0, 8
- strh r0, [r1, 0x22]
- ldr r1, [r5]
- ldrh r2, [r1, 0x20]
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- movs r3, 0x80
- lsls r3, 1
- cmp r0, r3
- ble _0809AC78
- ldr r6, _0809AD04 @ =0xffffff00
- adds r0, r2, r6
- lsls r0, 16
- asrs r0, 16
- adds r0, 0x40
- strh r0, [r1, 0x20]
-_0809AC78:
- ldr r1, [r5]
- ldrh r2, [r1, 0x20]
- movs r6, 0x20
- ldrsh r0, [r1, r6]
- cmp r0, 0x3F
- bgt _0809AC90
- movs r0, 0x40
- subs r0, r2
- lsls r0, 16
- asrs r0, 16
- subs r0, r3, r0
- strh r0, [r1, 0x20]
-_0809AC90:
- ldr r1, [r5]
- ldrh r2, [r1, 0x22]
- movs r3, 0x22
- ldrsh r0, [r1, r3]
- cmp r0, 0xB0
- ble _0809ACA8
- adds r0, r2, 0
- subs r0, 0xB0
- lsls r0, 16
- asrs r0, 16
- subs r0, 0x10
- strh r0, [r1, 0x22]
-_0809ACA8:
- ldr r2, [r5]
- ldrh r3, [r2, 0x22]
- movs r6, 0x22
- ldrsh r0, [r2, r6]
- movs r1, 0x10
- negs r1, r1
- cmp r0, r1
- bge _0809ACC4
- subs r0, r1, r3
- movs r1, 0xB0
- lsls r0, 16
- asrs r0, 16
- subs r1, r0
- strh r1, [r2, 0x22]
-_0809ACC4:
- ldr r0, _0809AD08 @ =0x000011e3
- adds r1, r4, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _0809AD2A
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _0809AD2A
- ldr r2, [r5]
- adds r2, 0x3F
- ldrb r3, [r2]
- lsrs r1, r3, 1
- movs r0, 0x1
- eors r1, r0
- ands r1, r0
- lsls r1, 1
- movs r0, 0x3
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
- b _0809AD2A
- .align 2, 0
-_0809ACF4: .4byte 0x000011c8
-_0809ACF8: .4byte 0x000011d0
-_0809ACFC: .4byte 0x000011cc
-_0809AD00: .4byte 0x000011d4
-_0809AD04: .4byte 0xffffff00
-_0809AD08: .4byte 0x000011e3
-_0809AD0C:
- movs r1, 0x8E
- lsls r1, 5
- adds r2, r4, r1
- ldr r1, [r2]
- ldr r3, _0809AD34 @ =0x000011d8
- adds r0, r4, r3
- ldrh r0, [r0]
- strh r0, [r1, 0x20]
- ldr r1, [r2]
- ldr r6, _0809AD38 @ =0x000011da
- adds r0, r4, r6
- ldrh r0, [r0]
- strh r0, [r1, 0x22]
- bl sub_809AFB8
-_0809AD2A:
- movs r0, 0x1
-_0809AD2C:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0809AD34: .4byte 0x000011d8
-_0809AD38: .4byte 0x000011da
- thumb_func_end sub_809AC00
-
- thumb_func_start sub_809AD3C
-sub_809AD3C: @ 809AD3C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- mov r6, sp
- adds r6, 0x2
- adds r0, r4, 0
- adds r1, r5, 0
- mov r2, sp
- adds r3, r6, 0
- bl sub_809AACC
- ldr r0, _0809AD88 @ =gUnknown_083B6DB4
- ldr r1, [r0]
- movs r2, 0x8F
- lsls r2, 5
- adds r0, r1, r2
- strb r4, [r0]
- ldr r3, _0809AD8C @ =0x000011e1
- adds r0, r1, r3
- strb r5, [r0]
- mov r0, sp
- ldrh r2, [r0]
- subs r3, 0x9
- adds r0, r1, r3
- strh r2, [r0]
- ldrh r0, [r6]
- ldr r2, _0809AD90 @ =0x000011da
- adds r1, r2
- strh r0, [r1]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809AD88: .4byte gUnknown_083B6DB4
-_0809AD8C: .4byte 0x000011e1
-_0809AD90: .4byte 0x000011da
- thumb_func_end sub_809AD3C
-
- thumb_func_start sub_809AD94
-sub_809AD94: @ 809AD94
- push {r4-r7,lr}
- ldr r0, _0809ADB0 @ =gUnknown_083B6DB4
- ldr r2, [r0]
- ldr r3, _0809ADB4 @ =0x000011de
- adds r1, r2, r3
- ldrh r1, [r1]
- adds r4, r0, 0
- cmp r1, 0
- beq _0809ADBC
- ldr r0, _0809ADB8 @ =0x000011dc
- adds r1, r2, r0
- movs r0, 0xC
- b _0809ADC2
- .align 2, 0
-_0809ADB0: .4byte gUnknown_083B6DB4
-_0809ADB4: .4byte 0x000011de
-_0809ADB8: .4byte 0x000011dc
-_0809ADBC:
- ldr r3, _0809AE04 @ =0x000011dc
- adds r1, r2, r3
- movs r0, 0x6
-_0809ADC2:
- strh r0, [r1]
- ldr r2, [r4]
- ldr r0, _0809AE08 @ =0x000011e3
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _0809ADDA
- ldr r3, _0809AE04 @ =0x000011dc
- adds r0, r2, r3
- ldrh r0, [r0]
- lsrs r0, 1
- strb r0, [r1]
-_0809ADDA:
- ldr r1, _0809AE0C @ =0x000011de
- adds r0, r2, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0809AE14
- cmp r1, 0x1
- beq _0809AE30
- ldr r3, _0809AE10 @ =0x000011da
- adds r0, r2, r3
- movs r3, 0
- ldrsh r1, [r0, r3]
- movs r3, 0x8E
- lsls r3, 5
- adds r0, r2, r3
- ldr r0, [r0]
- movs r2, 0x22
- ldrsh r0, [r0, r2]
- b _0809AE46
- .align 2, 0
-_0809AE04: .4byte 0x000011dc
-_0809AE08: .4byte 0x000011e3
-_0809AE0C: .4byte 0x000011de
-_0809AE10: .4byte 0x000011da
-_0809AE14:
- ldr r3, _0809AE2C @ =0x000011da
- adds r0, r2, r3
- movs r3, 0
- ldrsh r1, [r0, r3]
- movs r3, 0x8E
- lsls r3, 5
- adds r0, r2, r3
- ldr r0, [r0]
- movs r2, 0x22
- ldrsh r0, [r0, r2]
- adds r0, 0xC0
- b _0809AE46
- .align 2, 0
-_0809AE2C: .4byte 0x000011da
-_0809AE30:
- ldr r3, _0809AE74 @ =0x000011da
- adds r0, r2, r3
- movs r3, 0
- ldrsh r1, [r0, r3]
- movs r3, 0x8E
- lsls r3, 5
- adds r0, r2, r3
- ldr r0, [r0]
- movs r2, 0x22
- ldrsh r0, [r0, r2]
- subs r0, 0xC0
-_0809AE46:
- subs r7, r1, r0
- ldr r2, [r4]
- ldr r3, _0809AE78 @ =0x000011df
- adds r0, r2, r3
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0809AE80
- cmp r1, 0x1
- beq _0809AE9C
- ldr r1, _0809AE7C @ =0x000011d8
- adds r0, r2, r1
- movs r3, 0
- ldrsh r1, [r0, r3]
- movs r3, 0x8E
- lsls r3, 5
- adds r0, r2, r3
- ldr r0, [r0]
- movs r2, 0x20
- ldrsh r0, [r0, r2]
- b _0809AEB2
- .align 2, 0
-_0809AE74: .4byte 0x000011da
-_0809AE78: .4byte 0x000011df
-_0809AE7C: .4byte 0x000011d8
-_0809AE80:
- ldr r3, _0809AE98 @ =0x000011d8
- adds r0, r2, r3
- movs r3, 0
- ldrsh r1, [r0, r3]
- movs r3, 0x8E
- lsls r3, 5
- adds r0, r2, r3
- ldr r0, [r0]
- movs r2, 0x20
- ldrsh r0, [r0, r2]
- adds r0, 0xC0
- b _0809AEB2
- .align 2, 0
-_0809AE98: .4byte 0x000011d8
-_0809AE9C:
- ldr r3, _0809AF00 @ =0x000011d8
- adds r0, r2, r3
- movs r3, 0
- ldrsh r1, [r0, r3]
- movs r3, 0x8E
- lsls r3, 5
- adds r0, r2, r3
- ldr r0, [r0]
- movs r2, 0x20
- ldrsh r0, [r0, r2]
- subs r0, 0xC0
-_0809AEB2:
- subs r0, r1, r0
- lsls r7, 8
- lsls r0, 8
- ldr r4, [r4]
- ldr r3, _0809AF04 @ =0x000011d0
- adds r6, r4, r3
- ldr r1, _0809AF08 @ =0x000011dc
- adds r5, r4, r1
- ldrh r1, [r5]
- bl __divsi3
- str r0, [r6]
- ldr r2, _0809AF0C @ =0x000011d4
- adds r6, r4, r2
- ldrh r1, [r5]
- adds r0, r7, 0
- bl __divsi3
- str r0, [r6]
- ldr r3, _0809AF10 @ =0x000011c8
- adds r2, r4, r3
- movs r0, 0x8E
- lsls r0, 5
- adds r1, r4, r0
- ldr r0, [r1]
- movs r3, 0x20
- ldrsh r0, [r0, r3]
- lsls r0, 8
- str r0, [r2]
- ldr r0, _0809AF14 @ =0x000011cc
- adds r4, r0
- ldr r0, [r1]
- movs r1, 0x22
- ldrsh r0, [r0, r1]
- lsls r0, 8
- str r0, [r4]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809AF00: .4byte 0x000011d8
-_0809AF04: .4byte 0x000011d0
-_0809AF08: .4byte 0x000011dc
-_0809AF0C: .4byte 0x000011d4
-_0809AF10: .4byte 0x000011c8
-_0809AF14: .4byte 0x000011cc
- thumb_func_end sub_809AD94
-
- thumb_func_start sub_809AF18
-sub_809AF18: @ 809AF18
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_809AD3C
- bl sub_809AD94
- ldr r0, _0809AFA4 @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809AF46
- ldr r0, _0809AFA8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x1
- bl StartSpriteAnim
-_0809AF46:
- cmp r4, 0x1
- bne _0809AF70
- ldr r0, _0809AFAC @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- beq _0809AF70
- ldr r0, _0809AFA8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r2, _0809AFB0 @ =0x000011e2
- adds r1, r0, r2
- strb r4, [r1]
- ldr r1, _0809AFB4 @ =0x000011c4
- adds r0, r1
- ldr r1, [r0]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
-_0809AF70:
- cmp r4, 0
- beq _0809AF9E
- cmp r4, 0
- blt _0809AF9E
- cmp r4, 0x3
- bgt _0809AF9E
- ldr r0, _0809AFA8 @ =gUnknown_083B6DB4
- ldr r2, [r0]
- ldr r0, _0809AFB4 @ =0x000011c4
- adds r2, r0
- ldr r1, [r2]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1]
- ldr r2, [r2]
- ldrb r1, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x5]
-_0809AF9E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809AFA4: .4byte gUnknown_020384E6
-_0809AFA8: .4byte gUnknown_083B6DB4
-_0809AFAC: .4byte gUnknown_020384E4
-_0809AFB0: .4byte 0x000011e2
-_0809AFB4: .4byte 0x000011c4
- thumb_func_end sub_809AF18
-
- thumb_func_start sub_809AFB8
-sub_809AFB8: @ 809AFB8
- push {r4,r5,lr}
- ldr r5, _0809B000 @ =gUnknown_020384E4
- ldr r0, _0809B004 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- movs r1, 0x8F
- lsls r1, 5
- adds r0, r4, r1
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r1, _0809B008 @ =gUnknown_020384E5
- ldr r2, _0809B00C @ =0x000011e1
- adds r0, r4, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _0809B010 @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809AFEA
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r4, r1
- ldr r0, [r0]
- movs r1, 0
- bl StartSpriteAnim
-_0809AFEA:
- bl sub_809BF74
- movs r0, 0
- ldrsb r0, [r5, r0]
- cmp r0, 0x1
- beq _0809B020
- cmp r0, 0x1
- bgt _0809B014
- cmp r0, 0
- beq _0809B034
- b _0809B05E
- .align 2, 0
-_0809B000: .4byte gUnknown_020384E4
-_0809B004: .4byte gUnknown_083B6DB4
-_0809B008: .4byte gUnknown_020384E5
-_0809B00C: .4byte 0x000011e1
-_0809B010: .4byte gUnknown_020384E6
-_0809B014:
- cmp r0, 0x2
- bne _0809B05E
- movs r0, 0x1
- bl sub_809A860
- b _0809B05E
-_0809B020:
- ldr r2, _0809B030 @ =0x000011c4
- adds r0, r4, r2
- ldr r0, [r0]
- adds r0, 0x43
- movs r1, 0xC
- strb r1, [r0]
- b _0809B05E
- .align 2, 0
-_0809B030: .4byte 0x000011c4
-_0809B034:
- ldr r0, _0809B064 @ =0x000011c4
- adds r2, r4, r0
- ldr r3, [r2]
- ldrb r1, [r3, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r0, [r2]
- adds r0, 0x43
- movs r1, 0x14
- strb r1, [r0]
- ldr r1, [r2]
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
-_0809B05E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809B064: .4byte 0x000011c4
- thumb_func_end sub_809AFB8
-
- thumb_func_start sub_809B068
-sub_809B068: @ 809B068
- push {lr}
- ldr r0, _0809B078 @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809B07C
- movs r3, 0
- b _0809B08A
- .align 2, 0
-_0809B078: .4byte gUnknown_020384E6
-_0809B07C:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x5
- bls _0809B08A
- movs r3, 0x5
-_0809B08A:
- ldr r0, _0809B0B8 @ =gUnknown_083B6DB4
- ldr r2, [r0]
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r2, r1
- ldr r0, [r0]
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809B0AA
- ldr r0, _0809B0BC @ =0x000011e3
- adds r1, r2, r0
- movs r0, 0x1
- strb r0, [r1]
-_0809B0AA:
- movs r0, 0x1
- adds r1, r3, 0
- bl sub_809AF18
- pop {r0}
- bx r0
- .align 2, 0
-_0809B0B8: .4byte gUnknown_083B6DB4
-_0809B0BC: .4byte 0x000011e3
- thumb_func_end sub_809B068
-
- thumb_func_start sub_809B0C0
-sub_809B0C0: @ 809B0C0
- push {lr}
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- bl sub_809AF18
- pop {r0}
- bx r0
- thumb_func_end sub_809B0C0
-
- thumb_func_start sub_809B0D4
-sub_809B0D4: @ 809B0D4
- ldr r1, _0809B0DC @ =gUnknown_020384EA
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0809B0DC: .4byte gUnknown_020384EA
- thumb_func_end sub_809B0D4
-
- thumb_func_start sub_809B0E0
-sub_809B0E0: @ 809B0E0
- ldr r0, _0809B0EC @ =gUnknown_020384EA
- ldr r1, _0809B0F0 @ =gUnknown_020384E5
- ldrb r1, [r1]
- strb r1, [r0]
- bx lr
- .align 2, 0
-_0809B0EC: .4byte gUnknown_020384EA
-_0809B0F0: .4byte gUnknown_020384E5
- thumb_func_end sub_809B0E0
-
- thumb_func_start sub_809B0F4
-sub_809B0F4: @ 809B0F4
- ldr r0, _0809B0FC @ =gUnknown_020384EA
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0809B0FC: .4byte gUnknown_020384EA
- thumb_func_end sub_809B0F4
-
- thumb_func_start sub_809B100
-sub_809B100: @ 809B100
- lsls r0, 24
- ldr r1, _0809B120 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- ldr r2, _0809B124 @ =0x000012a4
- adds r3, r1, r2
- ldr r2, _0809B128 @ =gUnknown_083BBBC8
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- str r0, [r3]
- ldr r0, _0809B12C @ =0x000012a8
- adds r1, r0
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0809B120: .4byte gUnknown_083B6DB4
-_0809B124: .4byte 0x000012a4
-_0809B128: .4byte gUnknown_083BBBC8
-_0809B12C: .4byte 0x000012a8
- thumb_func_end sub_809B100
-
- thumb_func_start sub_809B130
-sub_809B130: @ 809B130
- push {lr}
- ldr r0, _0809B148 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809B14C @ =0x000012a4
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0809B148: .4byte gUnknown_083B6DB4
-_0809B14C: .4byte 0x000012a4
- thumb_func_end sub_809B130
-
- thumb_func_start sub_809B150
-sub_809B150: @ 809B150
- push {r4,r5,lr}
- ldr r0, _0809B16C @ =gUnknown_083B6DB4
- ldr r5, [r0]
- ldr r0, _0809B170 @ =0x000012a8
- adds r4, r5, r0
- ldrb r0, [r4]
- cmp r0, 0x1
- beq _0809B1A0
- cmp r0, 0x1
- bgt _0809B174
- cmp r0, 0
- beq _0809B17E
- b _0809B1CE
- .align 2, 0
-_0809B16C: .4byte gUnknown_083B6DB4
-_0809B170: .4byte 0x000012a8
-_0809B174:
- cmp r0, 0x2
- beq _0809B1BE
- cmp r0, 0x3
- beq _0809B186
- b _0809B1CE
-_0809B17E:
- ldr r0, _0809B18C @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809B190
-_0809B186:
- movs r0, 0
- b _0809B1D0
- .align 2, 0
-_0809B18C: .4byte gUnknown_020384E6
-_0809B190:
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r5, r1
- ldr r0, [r0]
- movs r1, 0x2
- bl StartSpriteAnim
- b _0809B1C8
-_0809B1A0:
- bl sub_809B324
- lsls r0, 24
- cmp r0, 0
- bne _0809B1CE
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r5, r1
- ldr r0, [r0]
- movs r1, 0x3
- bl StartSpriteAnim
- bl sub_809B384
- b _0809B1C8
-_0809B1BE:
- bl sub_809B358
- lsls r0, 24
- cmp r0, 0
- bne _0809B1CE
-_0809B1C8:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_0809B1CE:
- movs r0, 0x1
-_0809B1D0:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809B150
-
- thumb_func_start sub_809B1D8
-sub_809B1D8: @ 809B1D8
- push {r4,r5,lr}
- ldr r0, _0809B1F4 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- ldr r0, _0809B1F8 @ =0x000012a8
- adds r5, r4, r0
- ldrb r0, [r5]
- cmp r0, 0x1
- beq _0809B220
- cmp r0, 0x1
- bgt _0809B1FC
- cmp r0, 0
- beq _0809B202
- b _0809B244
- .align 2, 0
-_0809B1F4: .4byte gUnknown_083B6DB4
-_0809B1F8: .4byte 0x000012a8
-_0809B1FC:
- cmp r0, 0x2
- beq _0809B240
- b _0809B244
-_0809B202:
- bl sub_809B324
- lsls r0, 24
- cmp r0, 0
- bne _0809B244
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r4, r1
- ldr r0, [r0]
- movs r1, 0x2
- bl StartSpriteAnim
- bl sub_809B3E0
- b _0809B238
-_0809B220:
- bl sub_809B358
- lsls r0, 24
- cmp r0, 0
- bne _0809B244
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r4, r1
- ldr r0, [r0]
- movs r1, 0
- bl StartSpriteAnim
-_0809B238:
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _0809B244
-_0809B240:
- movs r0, 0
- b _0809B246
-_0809B244:
- movs r0, 0x1
-_0809B246:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809B1D8
-
- thumb_func_start sub_809B24C
-sub_809B24C: @ 809B24C
- push {r4,r5,lr}
- ldr r0, _0809B268 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- ldr r0, _0809B26C @ =0x000012a8
- adds r5, r4, r0
- ldrb r0, [r5]
- cmp r0, 0x1
- beq _0809B2E0
- cmp r0, 0x1
- bgt _0809B270
- cmp r0, 0
- beq _0809B276
- b _0809B31C
- .align 2, 0
-_0809B268: .4byte gUnknown_083B6DB4
-_0809B26C: .4byte 0x000012a8
-_0809B270:
- cmp r0, 0x2
- beq _0809B318
- b _0809B31C
-_0809B276:
- ldr r0, _0809B290 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _0809B298
- cmp r0, 0x1
- bne _0809B318
- ldr r2, _0809B294 @ =0x000012a9
- adds r1, r4, r2
- movs r0, 0xE
- b _0809B2A0
- .align 2, 0
-_0809B290: .4byte gUnknown_020384E4
-_0809B294: .4byte 0x000012a9
-_0809B298:
- bl get_preferred_box
- ldr r2, _0809B2D0 @ =0x000012a9
- adds r1, r4, r2
-_0809B2A0:
- strb r0, [r1]
- ldr r0, _0809B2D4 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r4, r1
- ldr r0, [r0]
- movs r1, 0x2
- bl StartSpriteAnim
- ldr r2, _0809B2D0 @ =0x000012a9
- adds r0, r4, r2
- ldrb r0, [r0]
- ldr r1, _0809B2D8 @ =gUnknown_020384E5
- ldrb r1, [r1]
- bl sub_80996B0
- ldr r0, _0809B2DC @ =0x000012a8
- adds r4, r0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _0809B31C
- .align 2, 0
-_0809B2D0: .4byte 0x000012a9
-_0809B2D4: .4byte gUnknown_083B6DB4
-_0809B2D8: .4byte gUnknown_020384E5
-_0809B2DC: .4byte 0x000012a8
-_0809B2E0:
- bl sub_809971C
- lsls r0, 24
- cmp r0, 0
- bne _0809B31C
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r4, r1
- ldr r0, [r0]
- movs r1, 0x3
- bl StartSpriteAnim
- ldr r2, _0809B310 @ =0x000012a9
- adds r0, r4, r2
- ldrb r0, [r0]
- ldr r1, _0809B314 @ =gUnknown_020384E5
- ldrb r1, [r1]
- bl diegohint1
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _0809B31C
- .align 2, 0
-_0809B310: .4byte 0x000012a9
-_0809B314: .4byte gUnknown_020384E5
-_0809B318:
- movs r0, 0
- b _0809B31E
-_0809B31C:
- movs r0, 0x1
-_0809B31E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_809B24C
-
- thumb_func_start sub_809B324
-sub_809B324: @ 809B324
- push {lr}
- ldr r0, _0809B348 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r1
- ldr r1, [r0]
- movs r2, 0x26
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0809B33E
- cmp r0, 0x8
- beq _0809B34C
-_0809B33E:
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _0809B350
- .align 2, 0
-_0809B348: .4byte gUnknown_083B6DB4
-_0809B34C:
- movs r0, 0
- b _0809B352
-_0809B350:
- movs r0, 0x1
-_0809B352:
- pop {r1}
- bx r1
- thumb_func_end sub_809B324
-
- thumb_func_start sub_809B358
-sub_809B358: @ 809B358
- push {lr}
- ldr r0, _0809B378 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r1
- ldr r1, [r0]
- movs r2, 0x26
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _0809B37C
- ldrh r0, [r1, 0x26]
- subs r0, 0x1
- strh r0, [r1, 0x26]
- movs r0, 0x1
- b _0809B37E
- .align 2, 0
-_0809B378: .4byte gUnknown_083B6DB4
-_0809B37C:
- movs r0, 0
-_0809B37E:
- pop {r1}
- bx r1
- thumb_func_end sub_809B358
-
- thumb_func_start sub_809B384
-sub_809B384: @ 809B384
- push {r4,lr}
- ldr r0, _0809B3AC @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _0809B3B4
- cmp r0, 0x1
- bne _0809B3D2
- ldr r4, _0809B3B0 @ =gUnknown_020384E5
- ldrb r1, [r4]
- movs r0, 0xE
- bl sub_809B44C
- ldrb r1, [r4]
- movs r0, 0
- bl sub_8099584
- b _0809B3CC
- .align 2, 0
-_0809B3AC: .4byte gUnknown_020384E4
-_0809B3B0: .4byte gUnknown_020384E5
-_0809B3B4:
- bl get_preferred_box
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _0809B3D8 @ =gUnknown_020384E5
- ldrb r1, [r4]
- bl sub_809B44C
- ldrb r1, [r4]
- movs r0, 0x1
- bl sub_8099584
-_0809B3CC:
- ldr r1, _0809B3DC @ =gUnknown_020384E6
- movs r0, 0x1
- strb r0, [r1]
-_0809B3D2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809B3D8: .4byte gUnknown_020384E5
-_0809B3DC: .4byte gUnknown_020384E6
- thumb_func_end sub_809B384
-
- thumb_func_start sub_809B3E0
-sub_809B3E0: @ 809B3E0
- push {r4,r5,lr}
- ldr r0, _0809B408 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _0809B410
- cmp r0, 0x1
- bne _0809B432
- ldr r4, _0809B40C @ =gUnknown_020384E5
- ldrb r1, [r4]
- movs r0, 0xE
- bl diegohint2
- ldrb r1, [r4]
- movs r0, 0xE
- bl sub_809960C
- b _0809B42C
- .align 2, 0
-_0809B408: .4byte gUnknown_020384E4
-_0809B40C: .4byte gUnknown_020384E5
-_0809B410:
- bl get_preferred_box
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _0809B438 @ =gUnknown_020384E5
- ldrb r1, [r5]
- adds r0, r4, 0
- bl diegohint2
- ldrb r1, [r5]
- adds r0, r4, 0
- bl sub_809960C
-_0809B42C:
- ldr r1, _0809B43C @ =gUnknown_020384E6
- movs r0, 0
- strb r0, [r1]
-_0809B432:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809B438: .4byte gUnknown_020384E5
-_0809B43C: .4byte gUnknown_020384E6
- thumb_func_end sub_809B3E0
-
- thumb_func_start sub_809B440
-sub_809B440: @ 809B440
- push {lr}
- bl sub_809BF74
- pop {r0}
- bx r0
- thumb_func_end sub_809B440
-
- thumb_func_start sub_809B44C
-sub_809B44C: @ 809B44C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- cmp r4, 0xE
- bne _0809B488
- ldr r0, _0809B478 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809B47C @ =0x000025b4
- adds r0, r1
- ldr r3, _0809B480 @ =gPlayerParty
- ldr r1, _0809B484 @ =gUnknown_020384E5
- movs r2, 0
- ldrsb r2, [r1, r2]
- movs r1, 0x64
- muls r1, r2
- adds r1, r3
- movs r2, 0x64
- bl memcpy
- b _0809B4AA
- .align 2, 0
-_0809B478: .4byte gUnknown_083B6DB4
-_0809B47C: .4byte 0x000025b4
-_0809B480: .4byte gPlayerParty
-_0809B484: .4byte gUnknown_020384E5
-_0809B488:
- lsls r1, r4, 2
- adds r1, r4
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 4
- ldr r2, _0809B4C0 @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- ldr r1, _0809B4C4 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- ldr r2, _0809B4C8 @ =0x000025b4
- adds r1, r2
- bl sub_803B4B4
-_0809B4AA:
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_809B548
- ldr r0, _0809B4CC @ =gUnknown_020384E7
- strb r4, [r0]
- ldr r0, _0809B4D0 @ =gUnknown_020384E8
- strb r5, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809B4C0: .4byte gPokemonStorage + 0x4
-_0809B4C4: .4byte gUnknown_083B6DB4
-_0809B4C8: .4byte 0x000025b4
-_0809B4CC: .4byte gUnknown_020384E7
-_0809B4D0: .4byte gUnknown_020384E8
- thumb_func_end sub_809B44C
-
- thumb_func_start diegohint2
-diegohint2: @ 809B4D4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- cmp r6, 0xE
- bne _0809B508
- ldr r1, _0809B4FC @ =gPlayerParty
- movs r0, 0x64
- muls r0, r5
- adds r0, r1
- ldr r1, _0809B500 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- ldr r2, _0809B504 @ =0x000025b4
- adds r1, r2
- movs r2, 0x64
- bl memcpy
- b _0809B536
- .align 2, 0
-_0809B4FC: .4byte gPlayerParty
-_0809B500: .4byte gUnknown_083B6DB4
-_0809B504: .4byte 0x000025b4
-_0809B508:
- ldr r0, _0809B53C @ =gUnknown_083B6DB4
- ldr r4, [r0]
- ldr r0, _0809B540 @ =0x000025b4
- adds r4, r0
- adds r0, r4, 0
- bl BoxMonRestorePP
- ldr r3, _0809B544 @ =gPokemonStorage
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 4
- lsls r2, r6, 2
- adds r2, r6
- lsls r1, r2, 4
- subs r1, r2
- lsls r1, 5
- adds r0, r1
- adds r0, r3
- adds r0, 0x4
- adds r1, r4, 0
- movs r2, 0x50
- bl memcpy
-_0809B536:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809B53C: .4byte gUnknown_083B6DB4
-_0809B540: .4byte 0x000025b4
-_0809B544: .4byte gPokemonStorage
- thumb_func_end diegohint2
-
- thumb_func_start sub_809B548
-sub_809B548: @ 809B548
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r2, r1, 24
- cmp r0, 0xE
- bne _0809B568
- movs r0, 0x64
- muls r0, r2
- ldr r1, _0809B564 @ =gPlayerParty
- adds r0, r1
- bl ZeroMonData
- b _0809B582
- .align 2, 0
-_0809B564: .4byte gPlayerParty
-_0809B568:
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- ldr r2, _0809B588 @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- bl ZeroBoxMonData
-_0809B582:
- pop {r0}
- bx r0
- .align 2, 0
-_0809B588: .4byte gPokemonStorage + 0x4
- thumb_func_end sub_809B548
-
- thumb_func_start diegohint1
-diegohint1: @ 809B58C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r6, r1, 24
- cmp r5, 0xE
- bne _0809B5C0
- ldr r0, _0809B5B4 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809B5B8 @ =0x00002618
- adds r0, r1
- ldr r2, _0809B5BC @ =gPlayerParty
- movs r1, 0x64
- muls r1, r6
- adds r1, r2
- movs r2, 0x64
- bl memcpy
- b _0809B5E2
- .align 2, 0
-_0809B5B4: .4byte gUnknown_083B6DB4
-_0809B5B8: .4byte 0x00002618
-_0809B5BC: .4byte gPlayerParty
-_0809B5C0:
- lsls r1, r5, 2
- adds r1, r5
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 4
- ldr r2, _0809B614 @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- ldr r1, _0809B618 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- ldr r2, _0809B61C @ =0x00002618
- adds r1, r2
- bl sub_803B4B4
-_0809B5E2:
- adds r0, r5, 0
- adds r1, r6, 0
- bl diegohint2
- ldr r0, _0809B618 @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r0, _0809B620 @ =0x000025b4
- adds r4, r1, r0
- ldr r2, _0809B61C @ =0x00002618
- adds r1, r2
- adds r0, r4, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r4, 0
- movs r1, 0
- bl sub_809C04C
- ldr r0, _0809B624 @ =gUnknown_020384E7
- strb r5, [r0]
- ldr r0, _0809B628 @ =gUnknown_020384E8
- strb r6, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809B614: .4byte gPokemonStorage + 0x4
-_0809B618: .4byte gUnknown_083B6DB4
-_0809B61C: .4byte 0x00002618
-_0809B620: .4byte 0x000025b4
-_0809B624: .4byte gUnknown_020384E7
-_0809B628: .4byte gUnknown_020384E8
- thumb_func_end diegohint1
-
- thumb_func_start sub_809B62C
-sub_809B62C: @ 809B62C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r6, 0
- bl sub_8095B24
- lsls r0, 16
- lsrs r4, r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0809B64A
- movs r0, 0
- b _0809B6AC
-_0809B64A:
- ldr r5, _0809B668 @ =gUnknown_020384E6
- ldrb r0, [r5]
- cmp r0, 0
- beq _0809B66C
- lsls r4, 24
- lsrs r1, r4, 24
- adds r0, r6, 0
- bl diegohint2
- bl sub_8099480
- movs r0, 0
- strb r0, [r5]
- b _0809B686
- .align 2, 0
-_0809B668: .4byte gUnknown_020384E6
-_0809B66C:
- ldr r5, _0809B6B4 @ =gUnknown_020384E5
- ldrb r1, [r5]
- movs r0, 0xE
- bl sub_809B44C
- lsls r4, 24
- lsrs r1, r4, 24
- adds r0, r6, 0
- bl diegohint2
- ldrb r0, [r5]
- bl sub_8099520
-_0809B686:
- bl get_preferred_box
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- bne _0809B698
- lsrs r0, r4, 24
- bl sub_8098D20
-_0809B698:
- ldr r0, _0809B6B8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0x1
-_0809B6AC:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0809B6B4: .4byte gUnknown_020384E5
-_0809B6B8: .4byte gUnknown_083B6DB4
- thumb_func_end sub_809B62C
-
- thumb_func_start sub_809B6BC
-sub_809B6BC: @ 809B6BC
- push {lr}
- ldr r0, _0809B6D8 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl StartSpriteAnim
- bl sub_809BF74
- pop {r0}
- bx r0
- .align 2, 0
-_0809B6D8: .4byte gUnknown_083B6DB4
- thumb_func_end sub_809B6BC
-
- thumb_func_start sub_809B6DC
-sub_809B6DC: @ 809B6DC
- push {lr}
- ldr r0, _0809B6EC @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809B6F0
- movs r2, 0x2
- b _0809B700
- .align 2, 0
-_0809B6EC: .4byte gUnknown_020384E6
-_0809B6F0:
- ldr r0, _0809B720 @ =gUnknown_020384E4
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r2, 0x1
- eors r1, r2
- negs r0, r1
- orrs r0, r1
- lsrs r2, r0, 31
-_0809B700:
- ldr r0, _0809B724 @ =gUnknown_020384E5
- ldrb r1, [r0]
- adds r0, r2, 0
- bl sub_809981C
- ldr r0, _0809B728 @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r2, _0809B72C @ =0x000026e4
- adds r0, r1, r2
- ldr r2, _0809B730 @ =0x000011fa
- adds r1, r2
- bl StringCopy
- pop {r0}
- bx r0
- .align 2, 0
-_0809B720: .4byte gUnknown_020384E4
-_0809B724: .4byte gUnknown_020384E5
-_0809B728: .4byte gUnknown_083B6DB4
-_0809B72C: .4byte 0x000026e4
-_0809B730: .4byte 0x000011fa
- thumb_func_end sub_809B6DC
-
- thumb_func_start sub_809B734
-sub_809B734: @ 809B734
- push {lr}
- bl sub_80998D8
- lsls r0, 24
- cmp r0, 0
- beq _0809B744
- movs r0, 0x1
- b _0809B758
-_0809B744:
- ldr r0, _0809B75C @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0
-_0809B758:
- pop {r1}
- bx r1
- .align 2, 0
-_0809B75C: .4byte gUnknown_083B6DB4
- thumb_func_end sub_809B734
-
- thumb_func_start sub_809B760
-sub_809B760: @ 809B760
- push {lr}
- bl sub_8099920
- ldr r1, _0809B774 @ =gUnknown_020384E6
- ldrb r0, [r1]
- cmp r0, 0
- beq _0809B778
- movs r0, 0
- strb r0, [r1]
- b _0809B79E
- .align 2, 0
-_0809B774: .4byte gUnknown_020384E6
-_0809B778:
- ldr r0, _0809B788 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0809B78C
- movs r2, 0xE
- b _0809B794
- .align 2, 0
-_0809B788: .4byte gUnknown_020384E4
-_0809B78C:
- bl get_preferred_box
- lsls r0, 24
- lsrs r2, r0, 24
-_0809B794:
- ldr r0, _0809B7A8 @ =gUnknown_020384E5
- ldrb r1, [r0]
- adds r0, r2, 0
- bl sub_809B548
-_0809B79E:
- bl sub_809BF74
- pop {r0}
- bx r0
- .align 2, 0
-_0809B7A8: .4byte gUnknown_020384E5
- thumb_func_end sub_809B760
-
- thumb_func_start sub_809B7AC
-sub_809B7AC: @ 809B7AC
- push {lr}
- ldr r0, _0809B7CC @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809B7C8
- ldr r0, _0809B7D0 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- movs r1, 0x8E
- lsls r1, 5
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x3
- bl StartSpriteAnim
-_0809B7C8:
- pop {r0}
- bx r0
- .align 2, 0
-_0809B7CC: .4byte gUnknown_020384E6
-_0809B7D0: .4byte gUnknown_083B6DB4
- thumb_func_end sub_809B7AC
-
- thumb_func_start sub_809B7D4
-sub_809B7D4: @ 809B7D4
- push {r4-r6,lr}
- ldr r0, _0809B804 @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809B81C
- ldr r0, _0809B808 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- ldr r1, _0809B80C @ =0x00002618
- adds r0, r4, r1
- ldr r2, _0809B810 @ =0x000025b4
- adds r1, r4, r2
- movs r2, 0x64
- bl memcpy
- ldr r0, _0809B814 @ =0x00002682
- adds r1, r4, r0
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _0809B818 @ =0x00002683
- adds r4, r1
- movs r0, 0x1
- negs r0, r0
- strb r0, [r4]
- b _0809B8A6
- .align 2, 0
-_0809B804: .4byte gUnknown_020384E6
-_0809B808: .4byte gUnknown_083B6DB4
-_0809B80C: .4byte 0x00002618
-_0809B810: .4byte 0x000025b4
-_0809B814: .4byte 0x00002682
-_0809B818: .4byte 0x00002683
-_0809B81C:
- ldr r0, _0809B84C @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0809B864
- ldr r0, _0809B850 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- ldr r2, _0809B854 @ =0x00002618
- adds r0, r4, r2
- ldr r3, _0809B858 @ =gPlayerParty
- ldr r1, _0809B85C @ =gUnknown_020384E5
- movs r2, 0
- ldrsb r2, [r1, r2]
- movs r1, 0x64
- muls r1, r2
- adds r1, r3
- movs r2, 0x64
- bl memcpy
- ldr r0, _0809B860 @ =0x00002682
- adds r4, r0
- movs r0, 0xE
- b _0809B896
- .align 2, 0
-_0809B84C: .4byte gUnknown_020384E4
-_0809B850: .4byte gUnknown_083B6DB4
-_0809B854: .4byte 0x00002618
-_0809B858: .4byte gPlayerParty
-_0809B85C: .4byte gUnknown_020384E5
-_0809B860: .4byte 0x00002682
-_0809B864:
- ldr r5, _0809B8FC @ =gPokemonStorage
- ldrb r0, [r5]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldr r1, _0809B900 @ =gUnknown_020384E5
- movs r2, 0
- ldrsb r2, [r1, r2]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- adds r2, r5, 0x4
- adds r1, r2
- adds r0, r1
- ldr r1, _0809B904 @ =gUnknown_083B6DB4
- ldr r4, [r1]
- ldr r2, _0809B908 @ =0x00002618
- adds r1, r4, r2
- bl sub_803B4B4
- ldrb r0, [r5]
- ldr r1, _0809B90C @ =0x00002682
- adds r4, r1
-_0809B896:
- strb r0, [r4]
- ldr r0, _0809B904 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809B900 @ =gUnknown_020384E5
- ldrb r1, [r1]
- ldr r2, _0809B910 @ =0x00002683
- adds r0, r2
- strb r1, [r0]
-_0809B8A6:
- ldr r0, _0809B904 @ =gUnknown_083B6DB4
- ldr r6, [r0]
- ldr r0, _0809B914 @ =0x0000267e
- adds r4, r6, r0
- movs r0, 0
- strb r0, [r4]
- ldr r1, _0809B918 @ =0x0000267f
- adds r5, r6, r1
- strb r0, [r5]
- ldr r0, _0809B91C @ =0x00002686
- adds r2, r6, r0
- movs r0, 0x39
- strh r0, [r2]
- ldr r0, _0809B920 @ =0x00002688
- adds r1, r6, r0
- ldr r0, _0809B924 @ =0x00000123
- strh r0, [r1]
- ldr r0, _0809B928 @ =0x0000268a
- adds r1, r6, r0
- ldr r0, _0809B92C @ =0x00000163
- strh r0, [r1]
- ldr r1, _0809B908 @ =0x00002618
- adds r0, r6, r1
- movs r1, 0x50
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- movs r2, 0x1
- ands r1, r2
- strb r1, [r4]
- lsrs r0, 17
- movs r1, 0x1
- ands r0, r1
- strb r0, [r5]
- ldrh r0, [r4]
- cmp r0, 0
- beq _0809B934
- ldr r2, _0809B930 @ =0x0000267d
- adds r1, r6, r2
- movs r0, 0
- strb r0, [r1]
- b _0809B940
- .align 2, 0
-_0809B8FC: .4byte gPokemonStorage
-_0809B900: .4byte gUnknown_020384E5
-_0809B904: .4byte gUnknown_083B6DB4
-_0809B908: .4byte 0x00002618
-_0809B90C: .4byte 0x00002682
-_0809B910: .4byte 0x00002683
-_0809B914: .4byte 0x0000267e
-_0809B918: .4byte 0x0000267f
-_0809B91C: .4byte 0x00002686
-_0809B920: .4byte 0x00002688
-_0809B924: .4byte 0x00000123
-_0809B928: .4byte 0x0000268a
-_0809B92C: .4byte 0x00000163
-_0809B930: .4byte 0x0000267d
-_0809B934:
- ldr r2, _0809B954 @ =0x0000267d
- adds r0, r6, r2
- strb r1, [r0]
- subs r2, 0x1
- adds r0, r6, r2
- strb r1, [r0]
-_0809B940:
- ldr r0, _0809B958 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809B95C @ =0x00002684
- adds r0, r1
- movs r1, 0
- strh r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0809B954: .4byte 0x0000267d
-_0809B958: .4byte gUnknown_083B6DB4
-_0809B95C: .4byte 0x00002684
- thumb_func_end sub_809B7D4
-
- thumb_func_start sub_809B960
-sub_809B960: @ 809B960
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _0809B988 @ =gUnknown_083B6DB4
- ldr r2, [r0]
- ldr r3, _0809B98C @ =0x0000267d
- adds r1, r2, r3
- ldrb r1, [r1]
- mov r12, r0
- cmp r1, 0
- beq _0809B994
- ldr r7, _0809B990 @ =0x0000267c
- adds r0, r2, r7
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- b _0809BB5C
- .align 2, 0
-_0809B988: .4byte gUnknown_083B6DB4
-_0809B98C: .4byte 0x0000267d
-_0809B990: .4byte 0x0000267c
-_0809B994:
- ldr r1, _0809B9A4 @ =0x00002684
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _0809B9A8
- cmp r0, 0x1
- beq _0809BA84
- b _0809BB58
- .align 2, 0
-_0809B9A4: .4byte 0x00002684
-_0809B9A8:
- movs r5, 0
- movs r6, 0
-_0809B9AC:
- mov r2, r12
- ldr r4, [r2]
- ldr r3, _0809BA28 @ =0x00002682
- adds r0, r4, r3
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0xE
- bne _0809B9CC
- ldr r7, _0809BA2C @ =0x00002683
- adds r0, r4, r7
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, r5
- beq _0809BA02
-_0809B9CC:
- movs r0, 0x64
- muls r0, r5
- ldr r1, _0809BA30 @ =gPlayerParty
- adds r0, r1
- ldr r1, _0809BA34 @ =0x00002686
- adds r2, r4, r1
- movs r1, 0x50
- bl GetMonData
- lsls r0, 16
- lsrs r3, r0, 16
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _0809B9F0
- ldr r2, _0809BA38 @ =0x0000267e
- adds r0, r4, r2
- strb r6, [r0]
-_0809B9F0:
- movs r0, 0x2
- ands r3, r0
- ldr r7, _0809BA3C @ =gUnknown_083B6DB4
- mov r12, r7
- cmp r3, 0
- beq _0809BA02
- ldr r1, _0809BA40 @ =0x0000267f
- adds r0, r4, r1
- strb r6, [r0]
-_0809BA02:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _0809B9AC
- mov r3, r12
- ldr r2, [r3]
- ldr r7, _0809BA38 @ =0x0000267e
- adds r0, r2, r7
- ldrh r0, [r0]
- cmp r0, 0
- bne _0809BA4C
- ldr r1, _0809BA44 @ =0x0000267d
- adds r0, r2, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r3, _0809BA48 @ =0x0000267c
- b _0809BB54
- .align 2, 0
-_0809BA28: .4byte 0x00002682
-_0809BA2C: .4byte 0x00002683
-_0809BA30: .4byte gPlayerParty
-_0809BA34: .4byte 0x00002686
-_0809BA38: .4byte 0x0000267e
-_0809BA3C: .4byte gUnknown_083B6DB4
-_0809BA40: .4byte 0x0000267f
-_0809BA44: .4byte 0x0000267d
-_0809BA48: .4byte 0x0000267c
-_0809BA4C:
- movs r7, 0x9A
- lsls r7, 6
- adds r0, r2, r7
- movs r1, 0
- strb r1, [r0]
- ldr r3, _0809BA68 @ =0x00002681
- adds r0, r2, r3
- strb r1, [r0]
- adds r7, 0x4
- adds r1, r2, r7
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0809BB58
- .align 2, 0
-_0809BA68: .4byte 0x00002681
-_0809BA6C:
- ldr r1, _0809BA7C @ =0x0000267d
- adds r0, r2, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r7, _0809BA80 @ =0x0000267c
- adds r0, r2, r7
- strb r3, [r0]
- b _0809BB3C
- .align 2, 0
-_0809BA7C: .4byte 0x0000267d
-_0809BA80: .4byte 0x0000267c
-_0809BA84:
- movs r5, 0
- mov r9, r12
- adds r4, r2, 0
- movs r0, 0x9A
- lsls r0, 6
- adds r6, r4, r0
- ldr r1, _0809BB6C @ =0x0000267f
- adds r1, r4
- mov r8, r1
- ldr r2, _0809BB70 @ =0x0000ffff
- mov r10, r2
-_0809BA9A:
- movs r0, 0
- ldrsb r0, [r6, r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldr r3, _0809BB74 @ =0x00002681
- adds r1, r4, r3
- movs r2, 0
- ldrsb r2, [r1, r2]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- ldr r2, _0809BB78 @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- movs r1, 0x50
- ldr r7, _0809BB7C @ =0x00002686
- adds r2, r4, r7
- bl GetBoxMonData
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0
- beq _0809BB00
- ldr r1, _0809BB80 @ =0x00002682
- adds r0, r4, r1
- ldrh r0, [r0]
- ldrh r2, [r6]
- mov r1, r10
- ands r1, r0
- mov r0, r10
- ands r0, r2
- cmp r1, r0
- beq _0809BB00
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _0809BAF2
- ldr r2, _0809BB84 @ =0x0000267e
- adds r1, r4, r2
- movs r0, 0
- strb r0, [r1]
-_0809BAF2:
- movs r0, 0x2
- ands r3, r0
- cmp r3, 0
- beq _0809BB00
- movs r0, 0
- mov r3, r8
- strb r0, [r3]
-_0809BB00:
- mov r7, r9
- ldr r2, [r7]
- ldr r0, _0809BB74 @ =0x00002681
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- movs r3, 0
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- ldr r7, _0809BB88 @ =gUnknown_083B6DB4
- mov r12, r7
- cmp r0, 0x1D
- ble _0809BB32
- strb r3, [r1]
- movs r0, 0x9A
- lsls r0, 6
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0xD
- bgt _0809BA6C
-_0809BB32:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x4
- bls _0809BA9A
-_0809BB3C:
- mov r1, r12
- ldr r2, [r1]
- ldr r3, _0809BB84 @ =0x0000267e
- adds r0, r2, r3
- ldrh r0, [r0]
- cmp r0, 0
- bne _0809BB58
- ldr r7, _0809BB8C @ =0x0000267d
- adds r0, r2, r7
- movs r1, 0x1
- strb r1, [r0]
- subs r3, 0x2
-_0809BB54:
- adds r0, r2, r3
- strb r1, [r0]
-_0809BB58:
- movs r0, 0x1
- negs r0, r0
-_0809BB5C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0809BB6C: .4byte 0x0000267f
-_0809BB70: .4byte 0x0000ffff
-_0809BB74: .4byte 0x00002681
-_0809BB78: .4byte gPokemonStorage + 0x4
-_0809BB7C: .4byte 0x00002686
-_0809BB80: .4byte 0x00002682
-_0809BB84: .4byte 0x0000267e
-_0809BB88: .4byte gUnknown_083B6DB4
-_0809BB8C: .4byte 0x0000267d
- thumb_func_end sub_809B960
-
- thumb_func_start sub_809BB90
-sub_809BB90: @ 809BB90
- push {lr}
- ldr r0, _0809BBB0 @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809BBAA
- ldr r0, _0809BBB4 @ =gUnknown_02038480
- ldr r1, _0809BBB8 @ =gUnknown_083B6DB4
- ldr r1, [r1]
- ldr r2, _0809BBBC @ =0x000025b4
- adds r1, r2
- movs r2, 0x64
- bl memcpy
-_0809BBAA:
- pop {r0}
- bx r0
- .align 2, 0
-_0809BBB0: .4byte gUnknown_020384E6
-_0809BBB4: .4byte gUnknown_02038480
-_0809BBB8: .4byte gUnknown_083B6DB4
-_0809BBBC: .4byte 0x000025b4
- thumb_func_end sub_809BB90
-
- thumb_func_start sub_809BBC0
-sub_809BBC0: @ 809BBC0
- push {lr}
- ldr r0, _0809BBE4 @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809BC08
- ldr r0, _0809BBE8 @ =gUnknown_020384E7
- ldrb r0, [r0]
- cmp r0, 0xE
- bne _0809BBF8
- ldr r0, _0809BBEC @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809BBF0 @ =0x000025b4
- adds r0, r1
- ldr r1, _0809BBF4 @ =gUnknown_02038480
- movs r2, 0x64
- bl memcpy
- b _0809BC08
- .align 2, 0
-_0809BBE4: .4byte gUnknown_020384E6
-_0809BBE8: .4byte gUnknown_020384E7
-_0809BBEC: .4byte gUnknown_083B6DB4
-_0809BBF0: .4byte 0x000025b4
-_0809BBF4: .4byte gUnknown_02038480
-_0809BBF8:
- ldr r0, _0809BC0C @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldr r1, _0809BC10 @ =0x000025b4
- adds r0, r1
- ldr r1, _0809BC14 @ =gUnknown_02038480
- movs r2, 0x50
- bl memcpy
-_0809BC08:
- pop {r0}
- bx r0
- .align 2, 0
-_0809BC0C: .4byte gUnknown_083B6DB4
-_0809BC10: .4byte 0x000025b4
-_0809BC14: .4byte gUnknown_02038480
- thumb_func_end sub_809BBC0
-
- thumb_func_start sub_809BC18
-sub_809BC18: @ 809BC18
- push {r4,r5,lr}
- ldr r0, _0809BC48 @ =gUnknown_020384E6
- ldrb r5, [r0]
- cmp r5, 0
- beq _0809BC64
- bl sub_809BB90
- ldr r0, _0809BC4C @ =gUnknown_083B6DB4
- ldr r2, [r0]
- ldr r0, _0809BC50 @ =0x00002690
- adds r1, r2, r0
- ldr r0, _0809BC54 @ =gUnknown_02038480
- str r0, [r1]
- ldr r1, _0809BC58 @ =0x0000268d
- adds r0, r2, r1
- movs r1, 0
- strb r1, [r0]
- ldr r3, _0809BC5C @ =0x0000268c
- adds r0, r2, r3
- strb r1, [r0]
- ldr r0, _0809BC60 @ =0x0000268e
- adds r2, r0
- strb r1, [r2]
- b _0809BCF2
- .align 2, 0
-_0809BC48: .4byte gUnknown_020384E6
-_0809BC4C: .4byte gUnknown_083B6DB4
-_0809BC50: .4byte 0x00002690
-_0809BC54: .4byte gUnknown_02038480
-_0809BC58: .4byte 0x0000268d
-_0809BC5C: .4byte 0x0000268c
-_0809BC60: .4byte 0x0000268e
-_0809BC64:
- ldr r0, _0809BC9C @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0809BCBC
- ldr r0, _0809BCA0 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- ldr r2, _0809BCA4 @ =0x00002690
- adds r1, r4, r2
- ldr r0, _0809BCA8 @ =gPlayerParty
- str r0, [r1]
- ldr r0, _0809BCAC @ =gUnknown_020384E5
- ldrb r1, [r0]
- ldr r3, _0809BCB0 @ =0x0000268d
- adds r0, r4, r3
- strb r1, [r0]
- bl StorageSystemGetPartySize
- subs r0, 0x1
- ldr r2, _0809BCB4 @ =0x0000268c
- adds r1, r4, r2
- strb r0, [r1]
- ldr r3, _0809BCB8 @ =0x0000268e
- adds r4, r3
- strb r5, [r4]
- b _0809BCF2
- .align 2, 0
-_0809BC9C: .4byte gUnknown_020384E4
-_0809BCA0: .4byte gUnknown_083B6DB4
-_0809BCA4: .4byte 0x00002690
-_0809BCA8: .4byte gPlayerParty
-_0809BCAC: .4byte gUnknown_020384E5
-_0809BCB0: .4byte 0x0000268d
-_0809BCB4: .4byte 0x0000268c
-_0809BCB8: .4byte 0x0000268e
-_0809BCBC:
- ldr r0, _0809BCF8 @ =gUnknown_083B6DB4
- ldr r3, [r0]
- ldr r0, _0809BCFC @ =0x00002690
- adds r4, r3, r0
- ldr r2, _0809BD00 @ =gPokemonStorage
- ldrb r0, [r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- adds r2, 0x4
- adds r0, r2
- str r0, [r4]
- ldr r0, _0809BD04 @ =gUnknown_020384E5
- ldrb r1, [r0]
- ldr r2, _0809BD08 @ =0x0000268d
- adds r0, r3, r2
- strb r1, [r0]
- ldr r0, _0809BD0C @ =0x0000268c
- adds r1, r3, r0
- movs r0, 0x1D
- strb r0, [r1]
- ldr r1, _0809BD10 @ =0x0000268e
- adds r3, r1
- movs r0, 0x5
- strb r0, [r3]
-_0809BCF2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809BCF8: .4byte gUnknown_083B6DB4
-_0809BCFC: .4byte 0x00002690
-_0809BD00: .4byte gPokemonStorage
-_0809BD04: .4byte gUnknown_020384E5
-_0809BD08: .4byte 0x0000268d
-_0809BD0C: .4byte 0x0000268c
-_0809BD10: .4byte 0x0000268e
- thumb_func_end sub_809BC18
-
- thumb_func_start sub_809BD14
-sub_809BD14: @ 809BD14
- push {lr}
- ldr r0, _0809BD24 @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809BD28
- bl sub_809BBC0
- b _0809BD30
- .align 2, 0
-_0809BD24: .4byte gUnknown_020384E6
-_0809BD28:
- ldr r0, _0809BD34 @ =gUnknown_020384E5
- ldr r1, _0809BD38 @ =gSharedMem + 0x18000
- ldrb r1, [r1, 0x9]
- strb r1, [r0]
-_0809BD30:
- pop {r0}
- bx r0
- .align 2, 0
-_0809BD34: .4byte gUnknown_020384E5
-_0809BD38: .4byte gSharedMem + 0x18000
- thumb_func_end sub_809BD14
-
- thumb_func_start party_compaction
-party_compaction: @ 809BD3C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r7, _0809BD88 @ =0x0000ffff
- movs r6, 0
- movs r5, 0
- movs r0, 0x64
- mov r9, r0
- ldr r1, _0809BD8C @ =gPlayerParty
- mov r8, r1
- subs r0, 0x65
- mov r10, r0
-_0809BD58:
- mov r0, r9
- muls r0, r6
- mov r1, r8
- adds r4, r0, r1
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- cmp r0, 0
- beq _0809BD90
- cmp r6, r5
- beq _0809BD80
- mov r0, r9
- muls r0, r5
- add r0, r8
- adds r1, r4, 0
- movs r2, 0x64
- bl memcpy
-_0809BD80:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- b _0809BD9A
- .align 2, 0
-_0809BD88: .4byte 0x0000ffff
-_0809BD8C: .4byte gPlayerParty
-_0809BD90:
- lsls r0, r7, 16
- asrs r0, 16
- cmp r0, r10
- bne _0809BD9A
- adds r7, r6, 0
-_0809BD9A:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x5
- bls _0809BD58
- lsls r7, 16
- cmp r5, 0x5
- bhi _0809BDC2
- movs r6, 0x64
- ldr r4, _0809BDD4 @ =gPlayerParty
-_0809BDAE:
- adds r0, r5, 0
- muls r0, r6
- adds r0, r4
- bl ZeroMonData
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _0809BDAE
-_0809BDC2:
- asrs r0, r7, 16
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0809BDD4: .4byte gPlayerParty
- thumb_func_end party_compaction
-
- thumb_func_start sub_809BDD8
-sub_809BDD8: @ 809BDD8
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- strb r0, [r1]
- ldr r1, _0809BE04 @ =gUnknown_083B6DB4
- ldr r2, [r1]
- ldr r3, _0809BE08 @ =0x000011f7
- adds r1, r2, r3
- strb r0, [r1]
- ldr r0, _0809BE0C @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809BE14
- ldr r1, _0809BE10 @ =0x000025b4
- adds r0, r2, r1
- movs r1, 0x8
- mov r2, sp
- bl SetMonData
- b _0809BE68
- .align 2, 0
-_0809BE04: .4byte gUnknown_083B6DB4
-_0809BE08: .4byte 0x000011f7
-_0809BE0C: .4byte gUnknown_020384E6
-_0809BE10: .4byte 0x000025b4
-_0809BE14:
- ldr r4, _0809BE70 @ =gUnknown_020384E4
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0x1
- bne _0809BE34
- ldr r0, _0809BE74 @ =gUnknown_020384E5
- movs r1, 0
- ldrsb r1, [r0, r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0809BE78 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x8
- mov r2, sp
- bl SetMonData
-_0809BE34:
- movs r0, 0
- ldrsb r0, [r4, r0]
- cmp r0, 0
- bne _0809BE68
- bl get_preferred_box
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldr r1, _0809BE74 @ =gUnknown_020384E5
- movs r2, 0
- ldrsb r2, [r1, r2]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- ldr r2, _0809BE7C @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- movs r1, 0x8
- mov r2, sp
- bl SetBoxMonData
-_0809BE68:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809BE70: .4byte gUnknown_020384E4
-_0809BE74: .4byte gUnknown_020384E5
-_0809BE78: .4byte gPlayerParty
-_0809BE7C: .4byte gPokemonStorage + 0x4
- thumb_func_end sub_809BDD8
-
- thumb_func_start sub_809BE80
-sub_809BE80: @ 809BE80
- push {lr}
- ldr r0, _0809BEA8 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0809BEB4
- ldr r0, _0809BEAC @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809BEB4
- ldr r0, _0809BEB0 @ =gUnknown_020384E5
- ldrb r0, [r0]
- bl CountAlivePartyMonsExceptOne
- lsls r0, 24
- cmp r0, 0
- bne _0809BEB4
- movs r0, 0x1
- b _0809BEB6
- .align 2, 0
-_0809BEA8: .4byte gUnknown_020384E4
-_0809BEAC: .4byte gUnknown_020384E6
-_0809BEB0: .4byte gUnknown_020384E5
-_0809BEB4:
- movs r0, 0
-_0809BEB6:
- pop {r1}
- bx r1
- thumb_func_end sub_809BE80
-
- thumb_func_start sub_809BEBC
-sub_809BEBC: @ 809BEBC
- push {lr}
- ldr r0, _0809BF00 @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809BF18
- ldr r0, _0809BF04 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0809BEFC
- ldr r0, _0809BF08 @ =gUnknown_020384E5
- ldrb r0, [r0]
- bl CountAlivePartyMonsExceptOne
- lsls r0, 24
- cmp r0, 0
- bne _0809BEFC
- ldr r0, _0809BF0C @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r2, _0809BF10 @ =0x000011f9
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809BF18
- ldr r2, _0809BF14 @ =0x000025b4
- adds r0, r1, r2
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0809BF18
-_0809BEFC:
- movs r0, 0x1
- b _0809BF1A
- .align 2, 0
-_0809BF00: .4byte gUnknown_020384E6
-_0809BF04: .4byte gUnknown_020384E4
-_0809BF08: .4byte gUnknown_020384E5
-_0809BF0C: .4byte gUnknown_083B6DB4
-_0809BF10: .4byte 0x000011f9
-_0809BF14: .4byte 0x000025b4
-_0809BF18:
- movs r0, 0
-_0809BF1A:
- pop {r1}
- bx r1
- thumb_func_end sub_809BEBC
-
- thumb_func_start sub_809BF20
-sub_809BF20: @ 809BF20
- ldr r0, _0809BF28 @ =gUnknown_020384E6
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_0809BF28: .4byte gUnknown_020384E6
- thumb_func_end sub_809BF20
-
- thumb_func_start sub_809BF2C
-sub_809BF2C: @ 809BF2C
- push {lr}
- movs r1, 0
- ldr r0, _0809BF44 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x2
- bne _0809BF3E
- movs r1, 0x1
-_0809BF3E:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809BF44: .4byte gUnknown_020384E4
- thumb_func_end sub_809BF2C
-
- thumb_func_start sub_809BF48
-sub_809BF48: @ 809BF48
- push {lr}
- movs r1, 0
- ldr r0, _0809BF6C @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x3
- bne _0809BF66
- ldr r0, _0809BF70 @ =gUnknown_020384E5
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- bne _0809BF66
- movs r1, 0x1
-_0809BF66:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0809BF6C: .4byte gUnknown_020384E4
-_0809BF70: .4byte gUnknown_020384E5
- thumb_func_end sub_809BF48
-
- thumb_func_start sub_809BF74
-sub_809BF74: @ 809BF74
- push {r4,lr}
- ldr r0, _0809BFA8 @ =gUnknown_083B6DB4
- ldr r1, [r0]
- movs r2, 0
- ldr r3, _0809BFAC @ =gUnknown_020384E6
- ldrb r0, [r3]
- cmp r0, 0
- bne _0809BF86
- movs r2, 0x1
-_0809BF86:
- ldr r4, _0809BFB0 @ =0x000011f6
- adds r0, r1, r4
- strb r2, [r0]
- ldrb r0, [r3]
- cmp r0, 0
- bne _0809C018
- ldr r0, _0809BFB4 @ =gUnknown_020384E4
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x1
- beq _0809BFBE
- cmp r0, 0x1
- bgt _0809BFB8
- cmp r0, 0
- beq _0809BFEE
- b _0809C018
- .align 2, 0
-_0809BFA8: .4byte gUnknown_083B6DB4
-_0809BFAC: .4byte gUnknown_020384E6
-_0809BFB0: .4byte 0x000011f6
-_0809BFB4: .4byte gUnknown_020384E4
-_0809BFB8:
- cmp r0, 0x3
- bgt _0809C018
- b _0809BFE4
-_0809BFBE:
- ldr r1, _0809BFDC @ =gUnknown_020384E5
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, 0x5
- bgt _0809BFE4
- adds r1, r0, 0
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0809BFE0 @ =gPlayerParty
- adds r0, r1
- movs r1, 0
- bl sub_809C04C
- b _0809C018
- .align 2, 0
-_0809BFDC: .4byte gUnknown_020384E5
-_0809BFE0: .4byte gPlayerParty
-_0809BFE4:
- movs r0, 0
- movs r1, 0x2
- bl sub_809C04C
- b _0809C018
-_0809BFEE:
- bl get_preferred_box
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 4
- subs r0, r1
- lsls r0, 5
- ldr r1, _0809C020 @ =gUnknown_020384E5
- movs r2, 0
- ldrsb r2, [r1, r2]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 4
- ldr r2, _0809C024 @ =gPokemonStorage + 0x4
- adds r1, r2
- adds r0, r1
- movs r1, 0x1
- bl sub_809C04C
-_0809C018:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0809C020: .4byte gUnknown_020384E5
-_0809C024: .4byte gPokemonStorage + 0x4
- thumb_func_end sub_809BF74
-
- thumb_func_start sub_809C028
-sub_809C028: @ 809C028
- push {lr}
- ldr r0, _0809C03C @ =gUnknown_020384E6
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809C044
- ldr r0, _0809C040 @ =gUnknown_02038480
- movs r1, 0
- bl sub_809C04C
- b _0809C048
- .align 2, 0
-_0809C03C: .4byte gUnknown_020384E6
-_0809C040: .4byte gUnknown_02038480
-_0809C044:
- bl sub_809BF74
-_0809C048:
- pop {r0}
- bx r0
- thumb_func_end sub_809C028
-
- thumb_func_start sub_809C04C
-sub_809C04C: @ 809C04C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0
- str r0, [sp]
- ldr r0, _0809C0FC @ =gUnknown_083B6DB4
- ldr r6, [r0]
- ldr r2, _0809C100 @ =0x000011f2
- adds r2, r6
- mov r8, r2
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r2]
- cmp r1, 0
- bne _0809C120
- adds r0, r7, 0
- movs r1, 0x41
- bl GetMonData
- ldr r2, _0809C104 @ =0x000011f0
- adds r1, r6, r2
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bne _0809C08C
- b _0809C1EC
-_0809C08C:
- adds r0, r7, 0
- movs r1, 0x2D
- bl GetMonData
- ldr r2, _0809C108 @ =0x000011f9
- adds r1, r6, r2
- strb r0, [r1]
- ldr r0, _0809C10C @ =0x000011fa
- adds r4, r6, r0
- adds r0, r7, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl GetMonData
- adds r0, r4, 0
- bl StringGetEnd10
- adds r0, r7, 0
- movs r1, 0x38
- bl GetMonData
- ldr r2, _0809C110 @ =0x000011f8
- adds r1, r6, r2
- strb r0, [r1]
- adds r0, r7, 0
- movs r1, 0x8
- bl GetMonData
- ldr r2, _0809C114 @ =0x000011f7
- adds r1, r6, r2
- strb r0, [r1]
- adds r0, r7, 0
- movs r1, 0
- bl GetMonData
- ldr r2, _0809C118 @ =0x000011ec
- adds r1, r6, r2
- str r0, [r1]
- adds r0, r7, 0
- bl GetMonSpritePal
- ldr r2, _0809C11C @ =0x000011e8
- adds r1, r6, r2
- str r0, [r1]
- adds r0, r7, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- adds r0, r7, 0
- movs r1, 0xC
- bl GetMonData
- b _0809C1B2
- .align 2, 0
-_0809C0FC: .4byte gUnknown_083B6DB4
-_0809C100: .4byte 0x000011f2
-_0809C104: .4byte 0x000011f0
-_0809C108: .4byte 0x000011f9
-_0809C10C: .4byte 0x000011fa
-_0809C110: .4byte 0x000011f8
-_0809C114: .4byte 0x000011f7
-_0809C118: .4byte 0x000011ec
-_0809C11C: .4byte 0x000011e8
-_0809C120:
- cmp r1, 0x1
- bne _0809C1D4
- adds r0, r7, 0
- movs r1, 0x41
- bl GetBoxMonData
- ldr r2, _0809C1B8 @ =0x000011f0
- adds r5, r6, r2
- strh r0, [r5]
- lsls r0, 16
- cmp r0, 0
- beq _0809C1EC
- adds r0, r7, 0
- movs r1, 0x1
- bl GetBoxMonData
- mov r9, r0
- adds r0, r7, 0
- movs r1, 0x2D
- bl GetBoxMonData
- ldr r2, _0809C1BC @ =0x000011f9
- adds r1, r6, r2
- strb r0, [r1]
- ldr r0, _0809C1C0 @ =0x000011fa
- adds r4, r6, r0
- adds r0, r7, 0
- movs r1, 0x2
- adds r2, r4, 0
- bl GetBoxMonData
- adds r0, r4, 0
- bl StringGetEnd10
- adds r0, r7, 0
- bl GetLevelFromBoxMonExp
- ldr r2, _0809C1C4 @ =0x000011f8
- adds r1, r6, r2
- strb r0, [r1]
- adds r0, r7, 0
- movs r1, 0x8
- bl GetBoxMonData
- ldr r2, _0809C1C8 @ =0x000011f7
- adds r1, r6, r2
- strb r0, [r1]
- adds r0, r7, 0
- movs r1, 0
- bl GetBoxMonData
- adds r2, r0, 0
- ldr r0, _0809C1CC @ =0x000011ec
- adds r4, r6, r0
- str r2, [r4]
- ldrh r0, [r5]
- mov r1, r9
- bl GetMonSpritePalFromOtIdPersonality
- ldr r2, _0809C1D0 @ =0x000011e8
- adds r1, r6, r2
- str r0, [r1]
- ldrh r0, [r5]
- ldr r1, [r4]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- adds r0, r7, 0
- movs r1, 0xC
- bl GetBoxMonData
-_0809C1B2:
- mov r1, r8
- strh r0, [r1]
- b _0809C1DE
- .align 2, 0
-_0809C1B8: .4byte 0x000011f0
-_0809C1BC: .4byte 0x000011f9
-_0809C1C0: .4byte 0x000011fa
-_0809C1C4: .4byte 0x000011f8
-_0809C1C8: .4byte 0x000011f7
-_0809C1CC: .4byte 0x000011ec
-_0809C1D0: .4byte 0x000011e8
-_0809C1D4:
- ldr r2, _0809C220 @ =0x000011f0
- adds r0, r6, r2
- mov r1, sp
- ldrh r1, [r1]
- strh r1, [r0]
-_0809C1DE:
- ldr r0, _0809C224 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- ldr r2, _0809C220 @ =0x000011f0
- adds r0, r4, r2
- ldrh r1, [r0]
- cmp r1, 0
- bne _0809C23C
-_0809C1EC:
- ldr r0, _0809C224 @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r0, _0809C228 @ =0x000011fa
- adds r2, r1, r0
- movs r0, 0xFF
- strb r0, [r2]
- ldr r0, _0809C22C @ =0x0000120f
- adds r2, r1, r0
- movs r0, 0x1
- negs r0, r0
- strb r0, [r2]
- ldr r0, _0809C230 @ =0x00001234
- adds r2, r1, r0
- movs r0, 0x1
- negs r0, r0
- strb r0, [r2]
- ldr r0, _0809C234 @ =0x00001259
- adds r2, r1, r0
- movs r0, 0x1
- negs r0, r0
- strb r0, [r2]
- ldr r2, _0809C238 @ =0x0000127a
- adds r1, r2
- strb r0, [r1]
- b _0809C43E
- .align 2, 0
-_0809C220: .4byte 0x000011f0
-_0809C224: .4byte gUnknown_083B6DB4
-_0809C228: .4byte 0x000011fa
-_0809C22C: .4byte 0x0000120f
-_0809C230: .4byte 0x00001234
-_0809C234: .4byte 0x00001259
-_0809C238: .4byte 0x0000127a
-_0809C23C:
- ldr r2, _0809C28C @ =0x000011f9
- adds r0, r4, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0809C2A4
- ldr r0, _0809C290 @ =0x0000120f
- adds r7, r4, r0
- movs r0, 0xFC
- strb r0, [r7]
- movs r0, 0x4
- strb r0, [r7, 0x1]
- movs r0, 0xF
- strb r0, [r7, 0x2]
- movs r0, 0
- strb r0, [r7, 0x3]
- movs r0, 0x1
- strb r0, [r7, 0x4]
- ldr r1, _0809C294 @ =0x00001214
- adds r7, r4, r1
- adds r2, 0x1
- adds r1, r4, r2
- adds r0, r7, 0
- bl StringCopy
- ldr r0, _0809C298 @ =0x00001234
- adds r1, r4, r0
- movs r0, 0xFF
- strb r0, [r1]
- ldr r2, _0809C29C @ =0x00001259
- adds r1, r4, r2
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1]
- ldr r0, _0809C2A0 @ =0x0000127a
- adds r1, r4, r0
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1]
- b _0809C43E
- .align 2, 0
-_0809C28C: .4byte 0x000011f9
-_0809C290: .4byte 0x0000120f
-_0809C294: .4byte 0x00001214
-_0809C298: .4byte 0x00001234
-_0809C29C: .4byte 0x00001259
-_0809C2A0: .4byte 0x0000127a
-_0809C2A4:
- cmp r1, 0x20
- beq _0809C2AC
- cmp r1, 0x1D
- bne _0809C2B0
-_0809C2AC:
- movs r1, 0xFF
- str r1, [sp]
-_0809C2B0:
- ldr r0, _0809C388 @ =gUnknown_083B6DB4
- ldr r4, [r0]
- ldr r2, _0809C38C @ =0x0000120f
- adds r7, r4, r2
- movs r0, 0xFC
- mov r9, r0
- strb r0, [r7]
- movs r1, 0x4
- mov r8, r1
- strb r1, [r7, 0x1]
- movs r2, 0xF
- strb r2, [r7, 0x2]
- movs r0, 0
- strb r0, [r7, 0x3]
- movs r6, 0x1
- strb r6, [r7, 0x4]
- ldr r1, _0809C390 @ =0x00001214
- adds r7, r4, r1
- ldr r2, _0809C394 @ =0x000011fa
- adds r1, r4, r2
- adds r0, r7, 0
- bl StringCopy
- ldr r0, _0809C398 @ =0x00001234
- adds r7, r4, r0
- mov r1, r9
- strb r1, [r7]
- mov r2, r8
- strb r2, [r7, 0x1]
- movs r0, 0xF
- strb r0, [r7, 0x2]
- movs r1, 0
- strb r1, [r7, 0x3]
- strb r6, [r7, 0x4]
- mov r2, r9
- strb r2, [r7, 0x5]
- movs r0, 0x13
- mov r10, r0
- strb r0, [r7, 0x6]
- movs r1, 0x7
- strb r1, [r7, 0x7]
- movs r0, 0xBA
- strb r0, [r7, 0x8]
- ldr r2, _0809C39C @ =0x0000123d
- adds r7, r4, r2
- ldr r1, _0809C3A0 @ =0x000011f0
- adds r0, r4, r1
- ldrh r1, [r0]
- movs r0, 0xB
- muls r1, r0
- ldr r0, _0809C3A4 @ =gSpeciesNames
- adds r1, r0
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- mov r2, r9
- strb r2, [r7]
- mov r0, r10
- strb r0, [r7, 0x1]
- movs r0, 0x50
- strb r0, [r7, 0x2]
- movs r0, 0xFF
- strb r0, [r7, 0x3]
- ldr r1, _0809C3A8 @ =0x00001259
- adds r7, r4, r1
- strb r2, [r7]
- mov r2, r8
- strb r2, [r7, 0x1]
- movs r0, 0xF
- strb r0, [r7, 0x2]
- movs r1, 0
- strb r1, [r7, 0x3]
- strb r6, [r7, 0x4]
- mov r2, r9
- strb r2, [r7, 0x5]
- mov r0, r10
- strb r0, [r7, 0x6]
- movs r6, 0x8
- strb r6, [r7, 0x7]
- ldr r1, _0809C3AC @ =0x00001261
- adds r7, r4, r1
- movs r0, 0x34
- strb r0, [r7]
- ldr r2, _0809C3B0 @ =0x00001262
- adds r7, r4, r2
- ldr r0, _0809C3B4 @ =0x000011f8
- adds r4, r0
- ldrb r1, [r4]
- adds r0, r7, 0
- movs r2, 0x22
- movs r3, 0x1
- bl sub_8072C14
- adds r7, r0, 0
- mov r1, r9
- strb r1, [r7]
- movs r0, 0x11
- strb r0, [r7, 0x1]
- strb r6, [r7, 0x2]
- adds r7, 0x3
- ldr r2, [sp]
- cmp r2, 0
- beq _0809C3B8
- cmp r2, 0xFE
- beq _0809C3D0
- b _0809C3EA
- .align 2, 0
-_0809C388: .4byte gUnknown_083B6DB4
-_0809C38C: .4byte 0x0000120f
-_0809C390: .4byte 0x00001214
-_0809C394: .4byte 0x000011fa
-_0809C398: .4byte 0x00001234
-_0809C39C: .4byte 0x0000123d
-_0809C3A0: .4byte 0x000011f0
-_0809C3A4: .4byte gSpeciesNames
-_0809C3A8: .4byte 0x00001259
-_0809C3AC: .4byte 0x00001261
-_0809C3B0: .4byte 0x00001262
-_0809C3B4: .4byte 0x000011f8
-_0809C3B8:
- mov r0, r9
- strb r0, [r7]
- mov r1, r8
- strb r1, [r7, 0x1]
- strb r1, [r7, 0x2]
- mov r2, sp
- ldrb r2, [r2]
- strb r2, [r7, 0x3]
- movs r0, 0x5
- strb r0, [r7, 0x4]
- movs r0, 0xB5
- b _0809C3E6
-_0809C3D0:
- mov r0, r9
- strb r0, [r7]
- mov r1, r8
- strb r1, [r7, 0x1]
- movs r0, 0x6
- strb r0, [r7, 0x2]
- movs r2, 0
- strb r2, [r7, 0x3]
- movs r0, 0x7
- strb r0, [r7, 0x4]
- movs r0, 0xB6
-_0809C3E6:
- strb r0, [r7, 0x5]
- adds r7, 0x6
-_0809C3EA:
- movs r5, 0xFF
- strb r5, [r7]
- ldr r0, _0809C450 @ =gUnknown_083B6DB4
- ldr r2, [r0]
- ldr r1, _0809C454 @ =0x0000127a
- adds r7, r2, r1
- ldr r0, _0809C458 @ =0x000011f2
- adds r3, r2, r0
- ldrh r0, [r3]
- cmp r0, 0
- beq _0809C43C
- movs r4, 0xFC
- strb r4, [r7]
- movs r1, 0x4
- strb r1, [r7, 0x1]
- movs r0, 0xF
- strb r0, [r7, 0x2]
- movs r0, 0
- strb r0, [r7, 0x3]
- movs r0, 0x1
- strb r0, [r7, 0x4]
- ldr r0, _0809C45C @ =0x0000127f
- adds r7, r2, r0
- strb r4, [r7]
- movs r0, 0x6
- strb r0, [r7, 0x1]
- strb r1, [r7, 0x2]
- ldr r1, _0809C460 @ =0x00001282
- adds r7, r2, r1
- ldrh r0, [r3]
- bl ItemId_GetItem
- adds r1, r0, 0
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- strb r4, [r7]
- movs r0, 0x7
- strb r0, [r7, 0x1]
- adds r7, 0x2
-_0809C43C:
- strb r5, [r7]
-_0809C43E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809C450: .4byte gUnknown_083B6DB4
-_0809C454: .4byte 0x0000127a
-_0809C458: .4byte 0x000011f2
-_0809C45C: .4byte 0x0000127f
-_0809C460: .4byte 0x00001282
- thumb_func_end sub_809C04C
-
- thumb_func_start sub_809C464
-sub_809C464: @ 809C464
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _0809C4D8 @ =gUnknown_020384E4
- ldrb r0, [r0]
- mov r8, r0
- ldr r2, _0809C4DC @ =gUnknown_020384E5
- ldrb r4, [r2]
- ldr r0, _0809C4E0 @ =gUnknown_083B6DB4
- ldr r1, [r0]
- ldr r0, _0809C4E4 @ =0x000011de
- adds r7, r1, r0
- movs r0, 0
- strb r0, [r7]
- ldr r3, _0809C4E8 @ =0x000011df
- adds r5, r1, r3
- strb r0, [r5]
- adds r3, 0x4
- adds r6, r1, r3
- strb r0, [r6]
- ldr r0, _0809C4EC @ =gMain
- mov r12, r0
- ldrh r1, [r0, 0x30]
- movs r0, 0x40
- ands r0, r1
- adds r3, r2, 0
- cmp r0, 0
- beq _0809C4A0
- b _0809C62A
-_0809C4A0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0809C4F0
- movs r1, 0x1
- mov r9, r1
- lsls r0, r4, 24
- movs r3, 0xC0
- lsls r3, 19
- adds r0, r3
- lsrs r4, r0, 24
- asrs r0, 24
- cmp r0, 0x1D
- bgt _0809C4BE
- b _0809C648
-_0809C4BE:
- movs r1, 0x3
- mov r8, r1
- subs r0, 0x1E
- lsls r0, 24
- asrs r0, 24
- bl __divsi3
- lsls r0, 24
- lsrs r4, r0, 24
- mov r3, r9
- strb r3, [r7]
- strb r3, [r6]
- b _0809C648
- .align 2, 0
-_0809C4D8: .4byte gUnknown_020384E4
-_0809C4DC: .4byte gUnknown_020384E5
-_0809C4E0: .4byte gUnknown_083B6DB4
-_0809C4E4: .4byte 0x000011de
-_0809C4E8: .4byte 0x000011df
-_0809C4EC: .4byte gMain
-_0809C4F0:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0809C524
- movs r0, 0x1
- mov r9, r0
- movs r0, 0
- ldrsb r0, [r3, r0]
- movs r1, 0x6
- bl __modsi3
- lsls r0, 24
- cmp r0, 0
- beq _0809C514
- lsls r0, r4, 24
- movs r1, 0xFF
- lsls r1, 24
- b _0809C63C
-_0809C514:
- movs r0, 0xFF
- strb r0, [r5]
- lsls r0, r4, 24
- movs r3, 0xA0
- lsls r3, 19
- adds r0, r3
- lsrs r4, r0, 24
- b _0809C648
-_0809C524:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0809C554
- movs r0, 0x1
- mov r9, r0
- movs r0, 0
- ldrsb r0, [r3, r0]
- adds r0, 0x1
- movs r1, 0x6
- bl __modsi3
- cmp r0, 0
- beq _0809C548
- lsls r0, r4, 24
- movs r1, 0x80
- lsls r1, 17
- b _0809C63C
-_0809C548:
- mov r3, r9
- strb r3, [r5]
- lsls r0, r4, 24
- movs r1, 0xFB
- lsls r1, 24
- b _0809C63C
-_0809C554:
- mov r3, r12
- ldrh r1, [r3, 0x2E]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0809C56A
- movs r0, 0x1
- mov r9, r0
- movs r1, 0x2
- mov r8, r1
- b _0809C646
-_0809C56A:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809C5D4
- bl sub_809CAB0
- lsls r0, 24
- cmp r0, 0
- beq _0809C5D4
- ldr r0, _0809C588 @ =gUnknown_020384E9
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809C58C
- movs r0, 0x8
- b _0809C658
- .align 2, 0
-_0809C588: .4byte gUnknown_020384E9
-_0809C58C:
- movs r0, 0
- bl sub_809CE4C
- subs r0, 0x1
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x4
- bhi _0809C5D4
- lsls r0, 2
- ldr r1, _0809C5A8 @ =_0809C5AC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809C5A8: .4byte _0809C5AC
- .align 2, 0
-_0809C5AC:
- .4byte _0809C5C0
- .4byte _0809C5C4
- .4byte _0809C5C8
- .4byte _0809C5CC
- .4byte _0809C5D0
-_0809C5C0:
- movs r0, 0xB
- b _0809C658
-_0809C5C4:
- movs r0, 0xC
- b _0809C658
-_0809C5C8:
- movs r0, 0xD
- b _0809C658
-_0809C5CC:
- movs r0, 0xE
- b _0809C658
-_0809C5D0:
- movs r0, 0xF
- b _0809C658
-_0809C5D4:
- ldr r2, _0809C5E4 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809C5E8
- movs r0, 0x10
- b _0809C658
- .align 2, 0
-_0809C5E4: .4byte gMain
-_0809C5E8:
- ldr r0, _0809C600 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0809C612
- ldrh r1, [r2, 0x2C]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0809C604
- movs r0, 0xA
- b _0809C658
- .align 2, 0
-_0809C600: .4byte gSaveBlock2
-_0809C604:
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0809C612
- movs r0, 0x9
- b _0809C658
-_0809C612:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0809C624
- bl sub_809CD88
- movs r0, 0
- b _0809C658
-_0809C624:
- movs r3, 0
- mov r9, r3
- b _0809C656
-_0809C62A:
- movs r0, 0x1
- mov r9, r0
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0x5
- ble _0809C642
- lsls r0, r4, 24
- movs r1, 0xFA
- lsls r1, 24
-_0809C63C:
- adds r0, r1
- lsrs r4, r0, 24
- b _0809C648
-_0809C642:
- movs r3, 0x2
- mov r8, r3
-_0809C646:
- movs r4, 0
-_0809C648:
- mov r0, r9
- cmp r0, 0
- beq _0809C656
- mov r0, r8
- adds r1, r4, 0
- bl sub_809AF18
-_0809C656:
- mov r0, r9
-_0809C658:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_809C464
-
- thumb_func_start sub_809C664
-sub_809C664: @ 809C664
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _0809C6D8 @ =gUnknown_020384E4
- ldrb r0, [r0]
- mov r10, r0
- ldr r7, _0809C6DC @ =gUnknown_020384E5
- ldrb r4, [r7]
- ldr r2, _0809C6E0 @ =gUnknown_083B6DB4
- ldr r5, [r2]
- ldr r1, _0809C6E4 @ =0x000011df
- adds r0, r5, r1
- movs r1, 0
- strb r1, [r0]
- ldr r3, _0809C6E8 @ =0x000011de
- adds r0, r5, r3
- strb r1, [r0]
- adds r3, 0x5
- adds r0, r5, r3
- strb r1, [r0]
- mov r9, r1
- mov r8, r1
- ldr r1, _0809C6EC @ =gMain
- ldrh r3, [r1, 0x30]
- movs r0, 0x40
- ands r0, r3
- adds r6, r7, 0
- mov r12, r2
- adds r2, r1, 0
- cmp r0, 0
- beq _0809C6A8
- b _0809C81C
-_0809C6A8:
- movs r0, 0x80
- ands r0, r3
- cmp r0, 0
- beq _0809C6F0
- lsls r0, r4, 24
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r4, r0, 24
- asrs r0, 24
- cmp r0, 0x6
- ble _0809C6C2
- movs r4, 0
-_0809C6C2:
- lsls r0, r4, 24
- asrs r0, 24
- movs r1, 0
- ldrsb r1, [r6, r1]
- cmp r0, r1
- bne _0809C6D0
- b _0809C83C
-_0809C6D0:
- movs r2, 0x1
- mov r8, r2
- b _0809C842
- .align 2, 0
-_0809C6D8: .4byte gUnknown_020384E4
-_0809C6DC: .4byte gUnknown_020384E5
-_0809C6E0: .4byte gUnknown_083B6DB4
-_0809C6E4: .4byte 0x000011df
-_0809C6E8: .4byte 0x000011de
-_0809C6EC: .4byte gMain
-_0809C6F0:
- movs r0, 0x20
- ands r0, r3
- cmp r0, 0
- beq _0809C714
- ldrb r1, [r6]
- movs r0, 0
- ldrsb r0, [r6, r0]
- cmp r0, 0
- beq _0809C714
- movs r3, 0x1
- mov r8, r3
- ldr r2, _0809C710 @ =0x000011e2
- adds r0, r5, r2
- strb r1, [r0]
- movs r4, 0
- b _0809C83C
- .align 2, 0
-_0809C710: .4byte 0x000011e2
-_0809C714:
- ldrh r1, [r2, 0x30]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0809C748
- movs r0, 0
- ldrsb r0, [r6, r0]
- cmp r0, 0
- bne _0809C73C
- movs r3, 0x1
- mov r8, r3
- mov r1, r12
- ldr r0, [r1]
- ldr r2, _0809C738 @ =0x000011e2
- adds r0, r2
- ldrb r4, [r0]
- b _0809C83C
- .align 2, 0
-_0809C738: .4byte 0x000011e2
-_0809C73C:
- movs r3, 0x6
- mov r8, r3
- movs r0, 0
- mov r10, r0
- movs r4, 0
- b _0809C83C
-_0809C748:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0809C7D0
- movs r0, 0
- ldrsb r0, [r6, r0]
- cmp r0, 0x6
- bne _0809C76E
- mov r1, r12
- ldr r0, [r1]
- ldrb r0, [r0, 0x5]
- cmp r0, 0x1
- bne _0809C768
- movs r0, 0x4
- b _0809C84C
-_0809C768:
- movs r2, 0x1
- mov r9, r2
- b _0809C7D0
-_0809C76E:
- bl sub_809CAB0
- lsls r0, 24
- cmp r0, 0
- beq _0809C7D0
- ldr r0, _0809C784 @ =gUnknown_020384E9
- ldrb r0, [r0]
- cmp r0, 0
- bne _0809C788
- movs r0, 0x8
- b _0809C84C
- .align 2, 0
-_0809C784: .4byte gUnknown_020384E9
-_0809C788:
- movs r0, 0
- bl sub_809CE4C
- subs r0, 0x1
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x4
- bhi _0809C7D0
- lsls r0, 2
- ldr r1, _0809C7A4 @ =_0809C7A8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0809C7A4: .4byte _0809C7A8
- .align 2, 0
-_0809C7A8:
- .4byte _0809C7BC
- .4byte _0809C7C0
- .4byte _0809C7C4
- .4byte _0809C7C8
- .4byte _0809C7CC
-_0809C7BC:
- movs r0, 0xB
- b _0809C84C
-_0809C7C0:
- movs r0, 0xC
- b _0809C84C
-_0809C7C4:
- movs r0, 0xD
- b _0809C84C
-_0809C7C8:
- movs r0, 0xE
- b _0809C84C
-_0809C7CC:
- movs r0, 0xF
- b _0809C84C
-_0809C7D0:
- ldr r2, _0809C7EC @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0809C7F8
- ldr r0, _0809C7F0 @ =gUnknown_083B6DB4
- ldr r0, [r0]
- ldrb r0, [r0, 0x5]
- cmp r0, 0x1
- bne _0809C7F4
- movs r0, 0x10
- b _0809C84C
- .align 2, 0
-_0809C7EC: .4byte gMain
-_0809C7F0: .4byte gUnknown_083B6DB4
-_0809C7F4:
- movs r3, 0x1
- mov r9, r3
-_0809C7F8:
- mov r0, r9
- cmp r0, 0
- beq _0809C80A
- movs r1, 0x6
- mov r8, r1
- movs r2, 0
- mov r10, r2
- movs r4, 0
- b _0809C83C
-_0809C80A:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0809C83C
- bl sub_809CD88
- movs r0, 0
- b _0809C84C
-_0809C81C:
- lsls r0, r4, 24
- movs r3, 0xFF
- lsls r3, 24
- adds r0, r3
- lsrs r4, r0, 24
- cmp r0, 0
- bge _0809C82C
- movs r4, 0x6
-_0809C82C:
- lsls r0, r4, 24
- asrs r0, 24
- movs r1, 0
- ldrsb r1, [r7, r1]
- cmp r0, r1
- beq _0809C83C
- movs r0, 0x1
- mov r8, r0
-_0809C83C:
- mov r1, r8
- cmp r1, 0
- beq _0809C84A
-_0809C842:
- mov r0, r10
- adds r1, r4, 0
- bl sub_809AF18
-_0809C84A:
- mov r0, r8
-_0809C84C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_809C664
-
thumb_func_start sub_809C85C
+@ u8 sub_809C85C(void)
sub_809C85C: @ 809C85C
push {r4-r6,lr}
- ldr r0, _0809C894 @ =gUnknown_083B6DB4
+ ldr r0, _0809C894 @ =gPokemonStorageSystemPtr
ldr r2, [r0]
ldr r1, _0809C898 @ =0x000011df
adds r0, r2, r1
@@ -13677,7 +36,7 @@ sub_809C85C: @ 809C85C
movs r5, 0x2
b _0809C922
.align 2, 0
-_0809C894: .4byte gUnknown_083B6DB4
+_0809C894: .4byte gPokemonStorageSystemPtr
_0809C898: .4byte 0x000011df
_0809C89C: .4byte 0x000011de
_0809C8A0: .4byte 0x000011e3
@@ -13771,6 +130,7 @@ _0809C93E:
thumb_func_end sub_809C85C
thumb_func_start sub_809C944
+@ u8 sub_809C944(void)
sub_809C944: @ 809C944
push {r4-r7,lr}
ldr r0, _0809C988 @ =gUnknown_020384E4
@@ -13778,7 +138,7 @@ sub_809C944: @ 809C944
mov r12, r0
ldr r7, _0809C98C @ =gUnknown_020384E5
ldrb r3, [r7]
- ldr r0, _0809C990 @ =gUnknown_083B6DB4
+ ldr r0, _0809C990 @ =gPokemonStorageSystemPtr
ldr r1, [r0]
ldr r0, _0809C994 @ =0x000011df
adds r5, r1, r0
@@ -13808,7 +168,7 @@ sub_809C944: @ 809C944
.align 2, 0
_0809C988: .4byte gUnknown_020384E4
_0809C98C: .4byte gUnknown_020384E5
-_0809C990: .4byte gUnknown_083B6DB4
+_0809C990: .4byte gPokemonStorageSystemPtr
_0809C994: .4byte 0x000011df
_0809C998: .4byte 0x000011de
_0809C99C: .4byte gMain
@@ -13963,6 +323,149 @@ sub_809CA8C: @ 809CA8C
bx r0
thumb_func_end sub_809CA8C
+.if DEBUG
+ thumb_func_start debug_sub_80AA40C
+debug_sub_80AA40C:
+.syntax divided
+ push {lr}
+ bl sub_809AB8C
+ lsl r0, r0, #0x10
+ cmp r0, #0
+ beq ._2084 @cond_branch
+ bl sub_809CDCC
+ mov r0, #0x20
+ bl sub_809CDEC
+ mov r0, #0x6
+ bl sub_809CDEC
+ mov r0, #0x1
+ b ._2085
+._2084:
+ mov r0, #0x0
+._2085:
+ pop {r1}
+ bx r1
+.syntax unified
+ thumb_func_end debug_sub_80AA40C
+.endif
+
+.if DEBUG
+ thumb_func_start sub_809CAB0
+sub_809CAB0:
+.syntax divided
+ push {lr}
+ ldr r0, ._2088 @ unk_2038790
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._2086 @cond_branch
+ bl debug_sub_80AA40C
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._2110
+._2089:
+ .align 2, 0
+._2088:
+ .word unk_2038790
+._2086:
+ bl sub_809CDCC
+ bl sub_809AB8C
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ ldr r0, ._2094 @ gPokemonStorageSystemPtr
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x5]
+ cmp r0, #0x1
+ beq ._2090 @cond_branch
+ cmp r0, #0x1
+ bgt ._2091 @cond_branch
+ cmp r0, #0
+ beq ._2092 @cond_branch
+ b ._2108
+._2095:
+ .align 2, 0
+._2094:
+ .word gPokemonStorageSystemPtr
+._2091:
+ cmp r0, #0x2
+ beq ._2096 @cond_branch
+ b ._2108
+._2090:
+ cmp r1, #0
+ beq ._2108 @cond_branch
+ mov r0, #0x1
+ bl sub_809CDEC
+ b ._2109
+._2092:
+ cmp r1, #0
+ beq ._2108 @cond_branch
+ mov r0, #0x2
+ bl sub_809CDEC
+ b ._2109
+._2096:
+ ldr r0, ._2105 @ gUnknown_020384E6
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._2102 @cond_branch
+ cmp r1, #0
+ beq ._2103 @cond_branch
+ mov r0, #0x4
+ bl sub_809CDEC
+ b ._2109
+._2106:
+ .align 2, 0
+._2105:
+ .word gUnknown_020384E6
+._2103:
+ mov r0, #0x5
+ bl sub_809CDEC
+ b ._2109
+._2102:
+ cmp r1, #0
+ beq ._2108 @cond_branch
+ mov r0, #0x3
+ bl sub_809CDEC
+ b ._2109
+._2108:
+ mov r0, #0x0
+ b ._2110
+._2109:
+ mov r0, #0x6
+ bl sub_809CDEC
+ ldr r0, ._2114 @ gPokemonStorageSystemPtr
+ ldr r0, [r0]
+ ldrb r0, [r0, #0x5]
+ cmp r0, #0x2
+ bne ._2113 @cond_branch
+ ldr r0, ._2114 + 4 @ gUnknown_020384E4
+ ldrb r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0
+ bne ._2112 @cond_branch
+ mov r0, #0x2
+ bl sub_809CDEC
+ b ._2113
+._2115:
+ .align 2, 0
+._2114:
+ .word gPokemonStorageSystemPtr
+ .word gUnknown_020384E4
+._2112:
+ mov r0, #0x1
+ bl sub_809CDEC
+._2113:
+ mov r0, #0x8
+ bl sub_809CDEC
+ mov r0, #0x7
+ bl sub_809CDEC
+ mov r0, #0x0
+ bl sub_809CDEC
+ mov r0, #0x1
+._2110:
+ pop {r1}
+ bx r1
+.syntax unified
+ thumb_func_end sub_809CAB0
+.else
thumb_func_start sub_809CAB0
sub_809CAB0: @ 809CAB0
push {lr}
@@ -13970,7 +473,7 @@ sub_809CAB0: @ 809CAB0
bl sub_809AB8C
lsls r0, 16
lsrs r1, r0, 16
- ldr r0, _0809CAD4 @ =gUnknown_083B6DB4
+ ldr r0, _0809CAD4 @ =gPokemonStorageSystemPtr
ldr r0, [r0]
ldrb r0, [r0, 0x5]
cmp r0, 0x1
@@ -13981,7 +484,7 @@ sub_809CAB0: @ 809CAB0
beq _0809CAEA
b _0809CB24
.align 2, 0
-_0809CAD4: .4byte gUnknown_083B6DB4
+_0809CAD4: .4byte gPokemonStorageSystemPtr
_0809CAD8:
cmp r0, 0x2
beq _0809CAF6
@@ -14026,7 +529,7 @@ _0809CB24:
_0809CB28:
movs r0, 0x6
bl sub_809CDEC
- ldr r0, _0809CB4C @ =gUnknown_083B6DB4
+ ldr r0, _0809CB4C @ =gPokemonStorageSystemPtr
ldr r0, [r0]
ldrb r0, [r0, 0x5]
cmp r0, 0x2
@@ -14041,7 +544,7 @@ _0809CB28:
bl sub_809CDEC
b _0809CB5A
.align 2, 0
-_0809CB4C: .4byte gUnknown_083B6DB4
+_0809CB4C: .4byte gPokemonStorageSystemPtr
_0809CB50: .4byte gUnknown_020384E4
_0809CB54:
movs r0, 0x1
@@ -14058,10 +561,11 @@ _0809CB6E:
pop {r1}
bx r1
thumb_func_end sub_809CAB0
+.endif
thumb_func_start sub_809CB74
sub_809CB74: @ 809CB74
- ldr r1, _0809CB90 @ =gUnknown_083B6DB4
+ ldr r1, _0809CB90 @ =gPokemonStorageSystemPtr
ldr r1, [r1]
movs r2, 0x8E
lsls r2, 5
@@ -14075,7 +579,7 @@ sub_809CB74: @ 809CB74
strh r1, [r0, 0x22]
bx lr
.align 2, 0
-_0809CB90: .4byte gUnknown_083B6DB4
+_0809CB90: .4byte gPokemonStorageSystemPtr
thumb_func_end sub_809CB74
thumb_func_start unref_sub_809CB94
@@ -14157,7 +661,7 @@ sub_809CC04: @ 809CC04
bl LoadSpritePalettes
ldr r0, _0809CCB8 @ =0x0000dac6
bl IndexOfSpritePaletteTag
- ldr r1, _0809CCBC @ =gUnknown_083B6DB4
+ ldr r1, _0809CCBC @ =gPokemonStorageSystemPtr
ldr r6, [r1]
ldr r4, _0809CCC0 @ =0x000011e4
adds r7, r6, r4
@@ -14219,7 +723,7 @@ sub_809CC04: @ 809CC04
_0809CCB0: .4byte gHandCursorSpriteSheets
_0809CCB4: .4byte gHandCursorSpritePalettes
_0809CCB8: .4byte 0x0000dac6
-_0809CCBC: .4byte gUnknown_083B6DB4
+_0809CCBC: .4byte gPokemonStorageSystemPtr
_0809CCC0: .4byte 0x000011e4
_0809CCC4: .4byte 0x0000dad1
_0809CCC8: .4byte 0x000011e5
@@ -14259,7 +763,7 @@ _0809CD08:
lsrs r2, r0, 24
cmp r2, 0x40
beq _0809CD6C
- ldr r0, _0809CD5C @ =gUnknown_083B6DB4
+ ldr r0, _0809CD5C @ =gPokemonStorageSystemPtr
ldr r0, [r0]
ldr r1, _0809CD60 @ =0x000011c4
adds r4, r0, r1
@@ -14291,12 +795,12 @@ _0809CD08:
b _0809CD78
.align 2, 0
_0809CD58: .4byte gSpriteTemplate_83BBC88
-_0809CD5C: .4byte gUnknown_083B6DB4
+_0809CD5C: .4byte gPokemonStorageSystemPtr
_0809CD60: .4byte 0x000011c4
_0809CD64: .4byte gSprites
_0809CD68: .4byte gUnknown_020384E4
_0809CD6C:
- ldr r0, _0809CD80 @ =gUnknown_083B6DB4
+ ldr r0, _0809CD80 @ =gPokemonStorageSystemPtr
ldr r0, [r0]
ldr r2, _0809CD84 @ =0x000011c4
adds r0, r2
@@ -14308,7 +812,7 @@ _0809CD78:
pop {r0}
bx r0
.align 2, 0
-_0809CD80: .4byte gUnknown_083B6DB4
+_0809CD80: .4byte gPokemonStorageSystemPtr
_0809CD84: .4byte 0x000011c4
thumb_func_end sub_809CC04
@@ -14323,7 +827,7 @@ sub_809CD88: @ 809CD88
movs r1, 0x1
_0809CD96:
strb r1, [r2]
- ldr r0, _0809CDC4 @ =gUnknown_083B6DB4
+ ldr r0, _0809CDC4 @ =gPokemonStorageSystemPtr
ldr r0, [r0]
movs r3, 0x8E
lsls r3, 5
@@ -14344,13 +848,15 @@ _0809CD96:
bx r0
.align 2, 0
_0809CDC0: .4byte gUnknown_020384E9
-_0809CDC4: .4byte gUnknown_083B6DB4
+_0809CDC4: .4byte gPokemonStorageSystemPtr
_0809CDC8: .4byte 0x000011e4
thumb_func_end sub_809CD88
+// file boundary here
+
thumb_func_start sub_809CDCC
sub_809CDCC: @ 809CDCC
- ldr r0, _0809CDE0 @ =gUnknown_083B6DB4
+ ldr r0, _0809CDE0 @ =gPokemonStorageSystemPtr
ldr r0, [r0]
ldr r2, _0809CDE4 @ =0x000011b8
adds r1, r0, r2
@@ -14361,7 +867,7 @@ sub_809CDCC: @ 809CDCC
strb r2, [r0]
bx lr
.align 2, 0
-_0809CDE0: .4byte gUnknown_083B6DB4
+_0809CDE0: .4byte gPokemonStorageSystemPtr
_0809CDE4: .4byte 0x000011b8
_0809CDE8: .4byte 0x000011b9
thumb_func_end sub_809CDCC
@@ -14371,7 +877,7 @@ sub_809CDEC: @ 809CDEC
push {r4,r5,lr}
lsls r0, 24
lsrs r3, r0, 24
- ldr r0, _0809CE3C @ =gUnknown_083B6DB4
+ ldr r0, _0809CE3C @ =gPokemonStorageSystemPtr
ldr r5, [r0]
ldr r0, _0809CE40 @ =0x000011b8
adds r4, r5, r0
@@ -14410,7 +916,7 @@ _0809CE36:
pop {r0}
bx r0
.align 2, 0
-_0809CE3C: .4byte gUnknown_083B6DB4
+_0809CE3C: .4byte gPokemonStorageSystemPtr
_0809CE40: .4byte 0x000011b8
_0809CE44: .4byte gUnknown_083BBCA0
_0809CE48: .4byte 0x000011b9
@@ -14421,7 +927,7 @@ sub_809CE4C: @ 809CE4C
push {lr}
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, _0809CE70 @ =gUnknown_083B6DB4
+ ldr r0, _0809CE70 @ =gPokemonStorageSystemPtr
ldr r1, [r0]
ldr r3, _0809CE74 @ =0x000011b8
adds r0, r1, r3
@@ -14436,7 +942,7 @@ sub_809CE4C: @ 809CE4C
ldrsb r0, [r1, r0]
b _0809CE80
.align 2, 0
-_0809CE70: .4byte gUnknown_083B6DB4
+_0809CE70: .4byte gPokemonStorageSystemPtr
_0809CE74: .4byte 0x000011b8
_0809CE78: .4byte 0x00001184
_0809CE7C:
@@ -14455,7 +961,7 @@ sub_809CE84: @ 809CE84
mov r4, r8
push {r4-r6}
sub sp, 0x8
- ldr r0, _0809CF20 @ =gUnknown_083B6DB4
+ ldr r0, _0809CF20 @ =gPokemonStorageSystemPtr
ldr r4, [r0]
ldr r0, _0809CF24 @ =0x000011b8
adds r0, r4
@@ -14525,7 +1031,7 @@ sub_809CE84: @ 809CE84
pop {r0}
bx r0
.align 2, 0
-_0809CF20: .4byte gUnknown_083B6DB4
+_0809CF20: .4byte gPokemonStorageSystemPtr
_0809CF24: .4byte 0x000011b8
_0809CF28: .4byte 0x000011bc
_0809CF2C: .4byte 0x000011b9
@@ -14583,7 +1089,7 @@ _0809CF8E:
cmp r5, r0
beq _0809CFB2
bl Menu_DestroyCursor
- ldr r0, _0809CFD0 @ =gUnknown_083B6DB4
+ ldr r0, _0809CFD0 @ =gPokemonStorageSystemPtr
ldr r1, [r0]
ldr r2, _0809CFD4 @ =0x000011ba
adds r0, r1, r2
@@ -14597,7 +1103,7 @@ _0809CF8E:
_0809CFB2:
cmp r5, 0
blt _0809CFC4
- ldr r0, _0809CFD0 @ =gUnknown_083B6DB4
+ ldr r0, _0809CFD0 @ =gPokemonStorageSystemPtr
ldr r0, [r0]
lsls r1, r5, 3
ldr r2, _0809CFD8 @ =0x00001184
@@ -14611,7 +1117,7 @@ _0809CFC4:
pop {r1}
bx r1
.align 2, 0
-_0809CFD0: .4byte gUnknown_083B6DB4
+_0809CFD0: .4byte gPokemonStorageSystemPtr
_0809CFD4: .4byte 0x000011ba
_0809CFD8: .4byte 0x00001184
thumb_func_end sub_809CF30
diff --git a/asm/psychic.s b/asm/psychic.s
deleted file mode 100644
index f91ce950e..000000000
--- a/asm/psychic.s
+++ /dev/null
@@ -1,2183 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- @ psychic
-
- thumb_func_start sub_80DB74C
-sub_80DB74C: @ 80DB74C
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r0, _080DB804 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DB768
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DB77E
-_080DB768:
- ldrb r1, [r6, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r6, 0x5]
- adds r1, r6, 0
- adds r1, 0x43
- movs r0, 0xC8
- strb r0, [r1]
-_080DB77E:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080DB7DA
- movs r0, 0x1
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r4, r0, 24
- adds r7, r4, 0
- adds r0, r4, 0
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- eors r0, r1
- negs r1, r0
- orrs r1, r0
- lsrs r5, r1, 31
- adds r0, r4, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080DB7BC
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8076034
-_080DB7BC:
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r7
- adds r0, r4, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080DB7DA
- movs r0, 0x1
- eors r5, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8076034
-_080DB7DA:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080DB810
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080DB810
- ldr r0, _080DB804 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080DB808
- movs r0, 0x48
- strh r0, [r6, 0x20]
- movs r0, 0x50
- b _080DB84A
- .align 2, 0
-_080DB804: .4byte gAnimBankAttacker
-_080DB808:
- movs r0, 0xB0
- strh r0, [r6, 0x20]
- movs r0, 0x28
- b _080DB84A
-_080DB810:
- ldr r5, _080DB880 @ =gAnimBankAttacker
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DB826
- ldr r1, _080DB884 @ =gBattleAnimArgs
- ldrh r0, [r1]
- negs r0, r0
- strh r0, [r1]
-_080DB826:
- ldrb r0, [r5]
- movs r1, 0
- bl GetBankPosition
- lsls r0, 24
- ldr r4, _080DB884 @ =gBattleAnimArgs
- lsrs r0, 24
- ldrh r1, [r4]
- adds r0, r1
- strh r0, [r6, 0x20]
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldrh r4, [r4, 0x2]
- adds r0, r4
-_080DB84A:
- strh r0, [r6, 0x22]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DB85C
- ldrh r0, [r6, 0x22]
- adds r0, 0x9
- strh r0, [r6, 0x22]
-_080DB85C:
- ldr r0, _080DB884 @ =gBattleAnimArgs
- ldrh r0, [r0, 0x4]
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r0, 20
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r6, 0x2E]
- ldr r1, _080DB888 @ =sub_80DB88C
- str r1, [r6, 0x1C]
- adds r0, r6, 0
- bl _call_via_r1
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DB880: .4byte gAnimBankAttacker
-_080DB884: .4byte gBattleAnimArgs
-_080DB888: .4byte sub_80DB88C
- thumb_func_end sub_80DB74C
-
- thumb_func_start sub_80DB88C
-sub_80DB88C: @ 80DB88C
- push {lr}
- adds r3, r0, 0
- ldr r2, _080DB8B0 @ =REG_BLDALPHA
- ldrh r1, [r3, 0x34]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r0, r1
- strh r0, [r2]
- ldrh r1, [r3, 0x34]
- movs r2, 0x34
- ldrsh r0, [r3, r2]
- cmp r0, 0xD
- bne _080DB8B8
- ldr r0, _080DB8B4 @ =sub_80DB8C0
- str r0, [r3, 0x1C]
- b _080DB8BC
- .align 2, 0
-_080DB8B0: .4byte REG_BLDALPHA
-_080DB8B4: .4byte sub_80DB8C0
-_080DB8B8:
- adds r0, r1, 0x1
- strh r0, [r3, 0x34]
-_080DB8BC:
- pop {r0}
- bx r0
- thumb_func_end sub_80DB88C
-
- thumb_func_start sub_80DB8C0
-sub_80DB8C0: @ 80DB8C0
- push {r4-r7,lr}
- adds r3, r0, 0
- ldrh r0, [r3, 0x30]
- adds r0, 0x1
- strh r0, [r3, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _080DB91E
- movs r0, 0
- strh r0, [r3, 0x30]
- ldrh r4, [r3, 0x2E]
- ldr r1, _080DB924 @ =gPlttBufferFaded
- adds r0, r4, 0
- adds r0, 0x8
- lsls r0, 1
- adds r0, r1
- ldrh r7, [r0]
- movs r5, 0x8
- adds r6, r1, 0
- adds r1, r4, 0x7
- lsls r0, r4, 1
- adds r0, r6
- adds r2, r0, 0
- adds r2, 0x10
- lsls r1, 1
- adds r1, r6
-_080DB8F6:
- ldrh r0, [r1]
- strh r0, [r2]
- subs r1, 0x2
- subs r2, 0x2
- subs r5, 0x1
- cmp r5, 0
- bgt _080DB8F6
- adds r0, r4, 0x1
- lsls r0, 1
- adds r0, r6
- strh r7, [r0]
- ldrh r0, [r3, 0x32]
- adds r0, 0x1
- strh r0, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- bne _080DB91E
- ldr r0, _080DB928 @ =sub_80DB92C
- str r0, [r3, 0x1C]
-_080DB91E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DB924: .4byte gPlttBufferFaded
-_080DB928: .4byte sub_80DB92C
- thumb_func_end sub_80DB8C0
-
- thumb_func_start sub_80DB92C
-sub_80DB92C: @ 80DB92C
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r2, _080DB9D4 @ =REG_BLDALPHA
- ldrh r1, [r5, 0x34]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r5, 0x34]
- subs r0, 0x1
- strh r0, [r5, 0x34]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080DB9CC
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080DB9BC
- movs r0, 0x1
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r4, r0, 24
- adds r6, r4, 0
- adds r0, r4, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080DB98E
- ldr r2, _080DB9D8 @ =gSprites
- ldr r0, _080DB9DC @ =gObjectBankIDs
- 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]
-_080DB98E:
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r6
- adds r0, r4, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080DB9BC
- ldr r2, _080DB9D8 @ =gSprites
- ldr r0, _080DB9DC @ =gObjectBankIDs
- 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]
-_080DB9BC:
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _080DB9E0 @ =sub_80DB9E4
- str r0, [r5, 0x1C]
-_080DB9CC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DB9D4: .4byte REG_BLDALPHA
-_080DB9D8: .4byte gSprites
-_080DB9DC: .4byte gObjectBankIDs
-_080DB9E0: .4byte sub_80DB9E4
- thumb_func_end sub_80DB92C
-
- thumb_func_start sub_80DB9E4
-sub_80DB9E4: @ 80DB9E4
- push {r4-r6,lr}
- adds r6, r0, 0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080DBA3C
- movs r0, 0x1
- bl GetBankByIdentity
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x1
- eors r0, r1
- negs r1, r0
- orrs r1, r0
- lsrs r5, r1, 31
- adds r0, r4, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080DBA22
- adds r0, r5, 0
- bl sub_8076464
-_080DBA22:
- movs r0, 0x2
- eors r4, r0
- adds r0, r4, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- beq _080DBA3C
- movs r0, 0x1
- eors r5, r0
- adds r0, r5, 0
- bl sub_8076464
-_080DBA3C:
- ldr r0, _080DBA48 @ =DestroyAnimSprite
- str r0, [r6, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DBA48: .4byte DestroyAnimSprite
- thumb_func_end sub_80DB9E4
-
- thumb_func_start sub_80DBA4C
-sub_80DBA4C: @ 80DBA4C
- push {r4-r6,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080DBAD8
- ldr r5, _080DBA98 @ =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r5, r1]
- movs r6, 0
- cmp r0, 0
- bne _080DBA66
- movs r6, 0x1
-_080DBA66:
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080DBAAE
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080DBAAE
- ldr r0, _080DBA9C @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080DBAA0
- ldrh r0, [r5]
- movs r1, 0x48
- subs r1, r0
- strh r1, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- adds r0, 0x50
- strh r0, [r4, 0x22]
- b _080DBAD0
- .align 2, 0
-_080DBA98: .4byte gBattleAnimArgs
-_080DBA9C: .4byte gAnimBankAttacker
-_080DBAA0:
- ldrh r0, [r5]
- adds r0, 0xB0
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x2]
- adds r0, 0x28
- strh r0, [r4, 0x22]
- b _080DBAD0
-_080DBAAE:
- ldr r0, _080DBAC4 @ =gBattleAnimArgs
- movs r1, 0x4
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080DBAC8
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_80787B0
- b _080DBAD0
- .align 2, 0
-_080DBAC4: .4byte gBattleAnimArgs
-_080DBAC8:
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8078764
-_080DBAD0:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080DBAEC
-_080DBAD8:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- beq _080DBAEC
- adds r0, r4, 0
- bl move_anim_8074EE0
-_080DBAEC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80DBA4C
-
- thumb_func_start sub_80DBAF4
-sub_80DBAF4: @ 80DBAF4
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080DBB3C @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DBB44
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
- ldrh r0, [r5, 0x20]
- subs r0, 0x28
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- adds r0, 0xA
- strh r0, [r5, 0x22]
- ldr r0, _080DBB40 @ =0x0000ffff
- b _080DBB52
- .align 2, 0
-_080DBB3C: .4byte gAnimBankAttacker
-_080DBB40: .4byte 0x0000ffff
-_080DBB44:
- ldrh r0, [r5, 0x20]
- adds r0, 0x28
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- subs r0, 0xA
- strh r0, [r5, 0x22]
- movs r0, 0x1
-_080DBB52:
- strh r0, [r5, 0x30]
- ldr r1, _080DBB68 @ =DestroyAnimSprite
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080DBB6C @ =sub_8078600
- str r0, [r5, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DBB68: .4byte DestroyAnimSprite
-_080DBB6C: .4byte sub_8078600
- thumb_func_end sub_80DBAF4
-
- thumb_func_start sub_80DBB70
-sub_80DBB70: @ 80DBB70
- push {r4-r7,lr}
- adds r5, r0, 0
- ldr r6, _080DBBF4 @ =gAnimBankAttacker
- ldrb r0, [r6]
- movs r1, 0x1
- bl sub_807A100
- lsls r0, 16
- asrs r1, r0, 16
- lsrs r0, 31
- adds r1, r0
- lsls r1, 15
- lsrs r4, r1, 16
- ldrb r0, [r6]
- movs r1, 0
- bl sub_807A100
- lsls r0, 16
- asrs r1, r0, 16
- lsrs r0, 31
- adds r1, r0
- asrs r1, 1
- negs r1, r1
- lsls r1, 16
- lsrs r7, r1, 16
- ldrb r0, [r6]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DBBB6
- lsls r0, r4, 16
- negs r0, r0
- lsrs r4, r0, 16
-_080DBBB6:
- ldrb r0, [r6]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- adds r0, r4
- strh r0, [r5, 0x20]
- ldrb r0, [r6]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- adds r0, r7
- strh r0, [r5, 0x22]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bgt _080DBBE2
- movs r0, 0x10
- strh r0, [r5, 0x22]
-_080DBBE2:
- ldr r1, _080DBBF8 @ =sub_80DBC00
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- ldr r0, _080DBBFC @ =sub_8078600
- str r0, [r5, 0x1C]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DBBF4: .4byte gAnimBankAttacker
-_080DBBF8: .4byte sub_80DBC00
-_080DBBFC: .4byte sub_8078600
- thumb_func_end sub_80DBB70
-
- thumb_func_start sub_80DBC00
-sub_80DBC00: @ 80DBC00
- push {r4,lr}
- adds r4, r0, 0
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldr r0, _080DBC2C @ =gUnknown_083DA888
- str r0, [r4, 0x10]
- movs r0, 0
- strh r0, [r4, 0x2E]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- ldr r0, _080DBC30 @ =sub_80DBC34
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DBC2C: .4byte gUnknown_083DA888
-_080DBC30: .4byte sub_80DBC34
- thumb_func_end sub_80DBC00
-
- thumb_func_start sub_80DBC34
-sub_80DBC34: @ 80DBC34
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080DBC46
- cmp r0, 0x1
- beq _080DBC74
- b _080DBC8C
-_080DBC46:
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080DBC8C
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x1]
- movs r0, 0x12
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _080DBC8C
-_080DBC74:
- ldrh r0, [r4, 0x30]
- subs r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080DBC8C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DBC8C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DBC34
-
- thumb_func_start sub_80DBC94
-sub_80DBC94: @ 80DBC94
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _080DBCC4 @ =gTasks
- adds r4, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- strh r1, [r4, 0x8]
- ldr r2, _080DBCC8 @ =gUnknown_083DA8A4
- adds r0, r4, 0
- bl sub_80798F4
- ldr r0, _080DBCCC @ =sub_80DBCD0
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DBCC4: .4byte gTasks
-_080DBCC8: .4byte gUnknown_083DA8A4
-_080DBCCC: .4byte sub_80DBCD0
- thumb_func_end sub_80DBC94
-
- thumb_func_start sub_80DBCD0
-sub_80DBCD0: @ 80DBCD0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080DBCF8 @ =gTasks
- adds r0, r1
- bl sub_807992C
- lsls r0, 24
- cmp r0, 0
- bne _080DBCF0
- adds r0, r4, 0
- bl DestroyAnimVisualTask
-_080DBCF0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DBCF8: .4byte gTasks
- thumb_func_end sub_80DBCD0
-
- thumb_func_start sub_80DBCFC
-sub_80DBCFC: @ 80DBCFC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080DBD48 @ =gTasks
- adds r4, r1, r0
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- strh r1, [r4, 0xC]
- ldr r0, _080DBD4C @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- movs r1, 0x8
- cmp r0, 0
- beq _080DBD30
- movs r1, 0x4
-_080DBD30:
- strh r1, [r4, 0xE]
- ldrb r1, [r4, 0x8]
- ldr r2, _080DBD50 @ =gUnknown_083DA8C4
- adds r0, r4, 0
- bl sub_80798F4
- ldr r0, _080DBD54 @ =sub_80DBD58
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DBD48: .4byte gTasks
-_080DBD4C: .4byte gAnimBankAttacker
-_080DBD50: .4byte gUnknown_083DA8C4
-_080DBD54: .4byte sub_80DBD58
- thumb_func_end sub_80DBCFC
-
- thumb_func_start sub_80DBD58
-sub_80DBD58: @ 80DBD58
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080DBD78 @ =gTasks
- adds r4, r0, r1
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080DBD7C
- cmp r0, 0x1
- beq _080DBD98
- b _080DBDF6
- .align 2, 0
-_080DBD78: .4byte gTasks
-_080DBD7C:
- adds r0, r4, 0
- bl sub_807992C
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _080DBDF6
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- b _080DBDF6
-_080DBD98:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _080DBDC0
- ldr r2, _080DBDBC @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- subs r1, 0x8
- strh r1, [r0, 0x26]
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _080DBDF6
- .align 2, 0
-_080DBDBC: .4byte gSprites
-_080DBDC0:
- ldr r3, _080DBDFC @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0x88
- lsls r1, 1
- strh r1, [r0, 0x20]
- ldrb r0, [r4, 0x8]
- bl sub_8078F40
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DBDF6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DBDFC: .4byte gSprites
- thumb_func_end sub_80DBD58
-
- thumb_func_start sub_80DBE00
-sub_80DBE00: @ 80DBE00
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080DBE84 @ =gTasks
- adds r5, r1, r0
- movs r0, 0
- movs r7, 0x10
- strh r7, [r5, 0xE]
- strh r0, [r5, 0x10]
- ldr r4, _080DBE88 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x24]
- ldrb r0, [r4]
- movs r1, 0x1
- bl sub_807A100
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- lsrs r6, r0, 16
- ldrb r0, [r4]
- movs r1, 0
- bl sub_807A100
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x3
- bl __divsi3
- lsls r0, 16
- lsrs r0, 16
- adds r1, r0, 0
- cmp r0, r6
- bcs _080DBE6A
- adds r1, r6, 0
-_080DBE6A:
- strh r1, [r5, 0x20]
- ldr r1, _080DBE8C @ =REG_BLDCNT
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _080DBE90 @ =REG_BLDALPHA
- strh r7, [r0]
- ldr r0, _080DBE94 @ =sub_80DBE98
- str r0, [r5]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DBE84: .4byte gTasks
-_080DBE88: .4byte gAnimBankAttacker
-_080DBE8C: .4byte REG_BLDCNT
-_080DBE90: .4byte REG_BLDALPHA
-_080DBE94: .4byte sub_80DBE98
- thumb_func_end sub_80DBE00
-
- thumb_func_start sub_80DBE98
-sub_80DBE98: @ 80DBE98
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080DBEBC @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r1, [r4, r0]
- cmp r1, 0x1
- beq _080DBF98
- cmp r1, 0x1
- bgt _080DBEC0
- cmp r1, 0
- beq _080DBECE
- b _080DC014
- .align 2, 0
-_080DBEBC: .4byte gTasks
-_080DBEC0:
- cmp r1, 0x2
- bne _080DBEC6
- b _080DBFF4
-_080DBEC6:
- cmp r1, 0x3
- bne _080DBECC
- b _080DC004
-_080DBECC:
- b _080DC014
-_080DBECE:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- bgt _080DBEDE
- b _080DC014
-_080DBEDE:
- strh r1, [r4, 0xA]
- ldr r0, _080DBF1C @ =gSpriteTemplate_83DA8DC
- movs r2, 0x22
- ldrsh r1, [r4, r2]
- movs r3, 0x24
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- adds r1, 0x8
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0x8
- adds r0, r1
- strh r2, [r0]
- cmp r2, 0x40
- beq _080DBF82
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080DBF3C
- cmp r0, 0x1
- bgt _080DBF20
- cmp r0, 0
- beq _080DBF2A
- b _080DBF82
- .align 2, 0
-_080DBF1C: .4byte gSpriteTemplate_83DA8DC
-_080DBF20:
- cmp r0, 0x2
- beq _080DBF54
- cmp r0, 0x3
- beq _080DBF6C
- b _080DBF82
-_080DBF2A:
- ldr r0, _080DBF38 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r4, 0x20]
- b _080DBF7A
- .align 2, 0
-_080DBF38: .4byte gSprites
-_080DBF3C:
- ldr r0, _080DBF50 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r4, 0x20]
- negs r0, r0
- strh r0, [r1, 0x24]
- ldrh r0, [r4, 0x20]
- b _080DBF80
- .align 2, 0
-_080DBF50: .4byte gSprites
-_080DBF54:
- ldr r1, _080DBF68 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r4, 0x20]
- strh r1, [r0, 0x24]
- ldrh r1, [r4, 0x20]
- strh r1, [r0, 0x26]
- b _080DBF82
- .align 2, 0
-_080DBF68: .4byte gSprites
-_080DBF6C:
- ldr r0, _080DBF94 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrh r0, [r4, 0x20]
- negs r0, r0
-_080DBF7A:
- strh r0, [r1, 0x24]
- ldrh r0, [r4, 0x20]
- negs r0, r0
-_080DBF80:
- strh r0, [r1, 0x26]
-_080DBF82:
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _080DC014
- b _080DBFF4
- .align 2, 0
-_080DBF94: .4byte gSprites
-_080DBF98:
- ldrh r0, [r4, 0xA]
- ands r1, r0
- cmp r1, 0
- beq _080DBFA8
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- b _080DBFAE
-_080DBFA8:
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
-_080DBFAE:
- ldr r2, _080DBFFC @ =REG_BLDALPHA
- ldrh r0, [r4, 0x10]
- lsls r0, 8
- ldrh r1, [r4, 0xE]
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x20
- bne _080DC014
- movs r5, 0x8
- adds r6, r4, 0
- adds r6, 0x8
-_080DBFCE:
- lsls r0, r5, 1
- adds r1, r6, r0
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x40
- beq _080DBFEA
- adds r1, r0, 0
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080DC000 @ =gSprites
- adds r0, r1
- bl DestroySprite
-_080DBFEA:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0xC
- bls _080DBFCE
-_080DBFF4:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DC014
- .align 2, 0
-_080DBFFC: .4byte REG_BLDALPHA
-_080DC000: .4byte gSprites
-_080DC004:
- ldr r0, _080DC01C @ =REG_BLDALPHA
- movs r1, 0
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080DC014:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DC01C: .4byte REG_BLDALPHA
- thumb_func_end sub_80DBE98
-
- thumb_func_start sub_80DC020
-sub_80DC020: @ 80DC020
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- subs r0, 0xA
- cmp r1, r0
- ble _080DC04A
- ldrh r0, [r4, 0x30]
- movs r1, 0x1
- ands r1, r0
- adds r3, r4, 0
- adds r3, 0x3E
- lsls r1, 2
- ldrb r2, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_080DC04A:
- movs r0, 0x30
- ldrsh r1, [r4, r0]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _080DC05C
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DC05C:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DC020
-
- thumb_func_start sub_80DC068
-sub_80DC068: @ 80DC068
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080DC0A4 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _080DC094
- ldr r4, _080DC0A8 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x3
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
-_080DC094:
- ldrh r0, [r6, 0x2]
- strh r0, [r5, 0x2E]
- ldr r0, _080DC0AC @ =sub_80DC020
- str r0, [r5, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DC0A4: .4byte gBattleAnimArgs
-_080DC0A8: .4byte gAnimBankAttacker
-_080DC0AC: .4byte sub_80DC020
- thumb_func_end sub_80DC068
-
- thumb_func_start sub_80DC0B0
-sub_80DC0B0: @ 80DC0B0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080DC10C @ =gTasks
- adds r5, r1, r0
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DC154
- ldr r0, _080DC110 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _080DC120
- ldr r0, _080DC114 @ =0x0000fff6
- strh r0, [r5, 0x1C]
- ldr r4, _080DC118 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_807A100
- subs r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_807A100
- adds r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080DC11C @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_807A100
- subs r0, 0x8
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_807A100
- adds r0, 0x8
- b _080DC1DE
- .align 2, 0
-_080DC10C: .4byte gTasks
-_080DC110: .4byte gBattleAnimArgs
-_080DC114: .4byte 0x0000fff6
-_080DC118: .4byte gAnimBankTarget
-_080DC11C: .4byte gAnimBankAttacker
-_080DC120:
- movs r0, 0xA
- strh r0, [r5, 0x1C]
- ldr r4, _080DC14C @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_807A100
- adds r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_807A100
- subs r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080DC150 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_807A100
- adds r0, 0x8
- b _080DC1D2
- .align 2, 0
-_080DC14C: .4byte gAnimBankAttacker
-_080DC150: .4byte gAnimBankTarget
-_080DC154:
- ldr r0, _080DC198 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0x1
- bne _080DC1A8
- ldr r0, _080DC19C @ =0x0000fff6
- strh r0, [r5, 0x1C]
- ldr r4, _080DC1A0 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_807A100
- adds r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_807A100
- adds r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080DC1A4 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x4
- bl sub_807A100
- adds r0, 0x8
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_807A100
- adds r0, 0x8
- b _080DC1DE
- .align 2, 0
-_080DC198: .4byte gBattleAnimArgs
-_080DC19C: .4byte 0x0000fff6
-_080DC1A0: .4byte gAnimBankTarget
-_080DC1A4: .4byte gAnimBankAttacker
-_080DC1A8:
- movs r0, 0xA
- strh r0, [r5, 0x1C]
- ldr r4, _080DC1F0 @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_807A100
- subs r0, 0x8
- strh r0, [r5, 0x1E]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_807A100
- subs r0, 0x8
- strh r0, [r5, 0x20]
- ldr r4, _080DC1F4 @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x5
- bl sub_807A100
- subs r0, 0x8
-_080DC1D2:
- strh r0, [r5, 0x22]
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_807A100
- subs r0, 0x8
-_080DC1DE:
- strh r0, [r5, 0x24]
- movs r0, 0x6
- strh r0, [r5, 0xA]
- ldr r0, _080DC1F8 @ =sub_80DC1FC
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DC1F0: .4byte gAnimBankAttacker
-_080DC1F4: .4byte gAnimBankTarget
-_080DC1F8: .4byte sub_80DC1FC
- thumb_func_end sub_80DC0B0
-
- thumb_func_start sub_80DC1FC
-sub_80DC1FC: @ 80DC1FC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080DC21C @ =gTasks
- adds r5, r0, r1
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- cmp r1, 0
- beq _080DC220
- cmp r1, 0x1
- beq _080DC294
- b _080DC2A8
- .align 2, 0
-_080DC21C: .4byte gTasks
-_080DC220:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080DC2A8
- strh r1, [r5, 0xA]
- ldr r0, _080DC28C @ =gSpriteTemplate_83DA9AC
- movs r2, 0x1E
- ldrsh r1, [r5, r2]
- movs r3, 0x20
- ldrsh r2, [r5, r3]
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _080DC274
- ldr r0, _080DC290 @ =gSprites
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r4, r0
- movs r0, 0x10
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x22]
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0x24]
- strh r0, [r4, 0x36]
- ldrh r0, [r5, 0x1C]
- strh r0, [r4, 0x38]
- adds r0, r4, 0
- bl sub_80786EC
- ldrb r0, [r5, 0xC]
- movs r1, 0x3
- ands r1, r0
- adds r0, r4, 0
- bl StartSpriteAffineAnim
-_080DC274:
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- strh r0, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _080DC2A8
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080DC2A8
- .align 2, 0
-_080DC28C: .4byte gSpriteTemplate_83DA9AC
-_080DC290: .4byte gSprites
-_080DC294:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x11
- ble _080DC2A8
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080DC2A8:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DC1FC
-
- thumb_func_start sub_80DC2B0
-sub_80DC2B0: @ 80DC2B0
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078718
- lsls r0, 24
- cmp r0, 0
- beq _080DC2CE
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- adds r0, r4, 0
- bl DestroySprite
-_080DC2CE:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DC2B0
-
- thumb_func_start sub_80DC2D4
-sub_80DC2D4: @ 80DC2D4
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080DC30C @ =gTasks
- adds r4, r1, r0
- ldr r0, _080DC310 @ =gAnimBankTarget
- ldrb r0, [r0]
- bl sub_8077FC0
- lsls r0, 24
- lsrs r1, r0, 24
- adds r0, r1, 0
- subs r0, 0x20
- strh r0, [r4, 0x24]
- ldr r0, _080DC314 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0x1
- beq _080DC32A
- cmp r0, 0x1
- bgt _080DC318
- cmp r0, 0
- beq _080DC31E
- b _080DC346
- .align 2, 0
-_080DC30C: .4byte gTasks
-_080DC310: .4byte gAnimBankTarget
-_080DC314: .4byte gBattleAnimArgs
-_080DC318:
- cmp r0, 0x2
- beq _080DC336
- b _080DC346
-_080DC31E:
- movs r0, 0x2
- strh r0, [r4, 0x1E]
- movs r0, 0x5
- strh r0, [r4, 0x20]
- movs r0, 0x40
- b _080DC33E
-_080DC32A:
- movs r0, 0x2
- strh r0, [r4, 0x1E]
- movs r0, 0x5
- strh r0, [r4, 0x20]
- movs r0, 0xC0
- b _080DC33E
-_080DC336:
- movs r0, 0x4
- strh r0, [r4, 0x1E]
- strh r0, [r4, 0x20]
- movs r0, 0
-_080DC33E:
- strh r0, [r4, 0x22]
- adds r0, r1, 0
- adds r0, 0x20
- strh r0, [r4, 0x26]
-_080DC346:
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _080DC352
- movs r0, 0
- strh r0, [r4, 0x24]
-_080DC352:
- ldr r0, _080DC36C @ =gAnimBankTarget
- ldrb r0, [r0]
- bl GetBankIdentity_permutated
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DC378
- ldr r0, _080DC370 @ =gBattle_BG1_X
- ldrh r0, [r0]
- strh r0, [r4, 0x1C]
- ldr r0, _080DC374 @ =REG_BG1HOFS
- b _080DC380
- .align 2, 0
-_080DC36C: .4byte gAnimBankTarget
-_080DC370: .4byte gBattle_BG1_X
-_080DC374: .4byte REG_BG1HOFS
-_080DC378:
- ldr r0, _080DC3E0 @ =gBattle_BG2_X
- ldrh r0, [r0]
- strh r0, [r4, 0x1C]
- ldr r0, _080DC3E4 @ =REG_BG2HOFS
-_080DC380:
- str r0, [sp]
- ldrh r1, [r4, 0x24]
- lsls r3, r1, 16
- asrs r1, r3, 16
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- adds r0, 0x40
- cmp r1, r0
- bgt _080DC3BA
- ldr r5, _080DC3E8 @ =gScanlineEffectRegBuffers
- movs r0, 0xF0
- lsls r0, 3
- adds r6, r5, r0
-_080DC39A:
- asrs r3, 16
- lsls r1, r3, 1
- adds r2, r1, r5
- ldrh r0, [r4, 0x1C]
- strh r0, [r2]
- adds r1, r6
- ldrh r0, [r4, 0x1C]
- strh r0, [r1]
- adds r3, 0x1
- lsls r3, 16
- asrs r1, r3, 16
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- adds r0, 0x40
- cmp r1, r0
- ble _080DC39A
-_080DC3BA:
- ldr r0, _080DC3EC @ =0xa2600001
- str r0, [sp, 0x4]
- mov r1, sp
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1, 0x8]
- mov r0, sp
- strb r2, [r0, 0x9]
- ldr r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, [sp, 0x8]
- bl ScanlineEffect_SetParams
- ldr r0, _080DC3F0 @ =sub_80DC3F4
- str r0, [r4]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DC3E0: .4byte gBattle_BG2_X
-_080DC3E4: .4byte REG_BG2HOFS
-_080DC3E8: .4byte gScanlineEffectRegBuffers
-_080DC3EC: .4byte 0xa2600001
-_080DC3F0: .4byte sub_80DC3F4
- thumb_func_end sub_80DC2D4
-
- thumb_func_start sub_80DC3F4
-sub_80DC3F4: @ 80DC3F4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080DC41C @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080DC4CE
- cmp r0, 0x1
- bgt _080DC420
- cmp r0, 0
- beq _080DC426
- b _080DC4E6
- .align 2, 0
-_080DC41C: .4byte gTasks
-_080DC420:
- cmp r0, 0x2
- beq _080DC4E0
- b _080DC4E6
-_080DC426:
- ldrh r3, [r5, 0x22]
- ldrh r4, [r5, 0x24]
- movs r2, 0x24
- ldrsh r1, [r5, r2]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- cmp r1, r0
- bgt _080DC4BE
- ldr r0, _080DC470 @ =gSineTable
- mov r9, r0
- movs r7, 0x3
- ldr r1, _080DC474 @ =gScanlineEffectRegBuffers
- mov r12, r1
- movs r2, 0xF0
- lsls r2, 3
- add r2, r12
- mov r8, r2
-_080DC448:
- lsls r2, r3, 16
- asrs r0, r2, 15
- add r0, r9
- movs r3, 0
- ldrsh r0, [r0, r3]
- movs r3, 0x20
- ldrsh r1, [r5, r3]
- asrs r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- asrs r3, r0, 16
- adds r6, r2, 0
- cmp r3, 0
- ble _080DC478
- ldrh r1, [r5, 0xA]
- adds r0, r7, 0
- ands r0, r1
- adds r0, r3, r0
- b _080DC484
- .align 2, 0
-_080DC470: .4byte gSineTable
-_080DC474: .4byte gScanlineEffectRegBuffers
-_080DC478:
- cmp r3, 0
- bge _080DC488
- ldrh r1, [r5, 0xA]
- adds r0, r7, 0
- ands r0, r1
- subs r0, r3, r0
-_080DC484:
- lsls r0, 16
- lsrs r1, r0, 16
-_080DC488:
- lsls r2, r4, 16
- asrs r2, 16
- lsls r3, r2, 1
- mov r0, r12
- adds r4, r3, r0
- ldrh r0, [r5, 0x1C]
- lsls r1, 16
- asrs r1, 16
- adds r0, r1, r0
- strh r0, [r4]
- add r3, r8
- ldrh r0, [r5, 0x1C]
- adds r1, r0
- strh r1, [r3]
- asrs r0, r6, 16
- ldrh r1, [r5, 0x1E]
- adds r0, r1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r2, 0x1
- lsls r2, 16
- lsrs r4, r2, 16
- asrs r2, 16
- movs r1, 0x26
- ldrsh r0, [r5, r1]
- cmp r2, r0
- ble _080DC448
-_080DC4BE:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x17
- ble _080DC4E6
- b _080DC4D4
-_080DC4CE:
- ldr r1, _080DC4DC @ =gScanlineEffect
- movs r0, 0x3
- strb r0, [r1, 0x15]
-_080DC4D4:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- b _080DC4E6
- .align 2, 0
-_080DC4DC: .4byte gScanlineEffect
-_080DC4E0:
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080DC4E6:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80DC3F4
-
- thumb_func_start sub_80DC4F4
-sub_80DC4F4: @ 80DC4F4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- mov r8, r4
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080DC528 @ =gTasks
- adds r7, r0, r1
- bl AllocOamMatrix
- lsls r0, 24
- lsrs r5, r0, 24
- mov r10, r5
- adds r6, r5, 0
- cmp r6, 0xFF
- bne _080DC52C
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _080DC5D6
- .align 2, 0
-_080DC528: .4byte gTasks
-_080DC52C:
- ldr r1, _080DC550 @ =gBattleAnimArgs
- ldrb r0, [r1]
- bl duplicate_obj_of_side_rel2move_in_transparent_mode
- lsls r0, 16
- lsrs r1, r0, 16
- mov r9, r1
- asrs r0, 16
- cmp r0, 0
- bge _080DC554
- adds r0, r5, 0
- bl FreeOamMatrix
- mov r0, r8
- bl DestroyAnimVisualTask
- b _080DC5D6
- .align 2, 0
-_080DC550: .4byte gBattleAnimArgs
-_080DC554:
- ldr r2, _080DC5E4 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r0, r2, 0
- adds r0, 0x1C
- adds r0, r4, r0
- ldr r1, _080DC5E8 @ =SpriteCallbackDummy
- str r1, [r0]
- adds r4, r2
- ldrb r0, [r4, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r4, 0x1]
- movs r0, 0x1F
- ands r6, r0
- lsls r2, r6, 1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x3]
- adds r2, r4, 0
- adds r2, 0x2C
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- adds r1, r4, 0
- adds r1, 0x43
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r1, r9
- lsls r0, r1, 24
- lsrs r0, 24
- movs r2, 0x80
- lsls r2, 1
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrb r3, [r4, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r4, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- adds r0, r4, 0
- bl CalcCenterToCornerVec
- ldr r1, _080DC5EC @ =gBattleAnimArgs
- ldrb r0, [r1]
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x22]
- mov r0, r10
- strh r0, [r7, 0x24]
- mov r1, r9
- strh r1, [r7, 0x26]
- ldr r0, _080DC5F0 @ =sub_80DC5F4
- str r0, [r7]
-_080DC5D6:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DC5E4: .4byte gSprites
-_080DC5E8: .4byte SpriteCallbackDummy
-_080DC5EC: .4byte gBattleAnimArgs
-_080DC5F0: .4byte sub_80DC5F4
- thumb_func_end sub_80DC4F4
-
- thumb_func_start sub_80DC5F4
-sub_80DC5F4: @ 80DC5F4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080DC618 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _080DC678
- cmp r0, 0x1
- bgt _080DC61C
- cmp r0, 0
- beq _080DC626
- b _080DC6F8
- .align 2, 0
-_080DC618: .4byte gTasks
-_080DC61C:
- cmp r0, 0x2
- beq _080DC6C8
- cmp r0, 0x3
- beq _080DC6E8
- b _080DC6F8
-_080DC626:
- ldrh r0, [r4, 0xA]
- adds r0, 0x4
- strh r0, [r4, 0xA]
- ldr r1, _080DC674 @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 16
- asrs r1, 17
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- lsls r1, 24
- lsrs r1, 24
- bl sub_8079AB8
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0x30
- bne _080DC6F8
- b _080DC6DA
- .align 2, 0
-_080DC674: .4byte gSineTable
-_080DC678:
- ldrh r0, [r4, 0xA]
- subs r0, 0x4
- strh r0, [r4, 0xA]
- ldr r1, _080DC6C4 @ =gSineTable
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- lsls r1, 16
- asrs r1, 17
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- subs r0, r1
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- adds r1, r2, 0
- movs r3, 0
- bl obj_id_set_rotscale
- ldrh r0, [r4, 0x26]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x22]
- lsls r1, 24
- lsrs r1, 24
- bl sub_8079AB8
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _080DC6F8
- b _080DC6DA
- .align 2, 0
-_080DC6C4: .4byte gSineTable
-_080DC6C8:
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _080DC6E4 @ =gSprites
- adds r0, r1
- bl obj_delete_but_dont_free_vram
-_080DC6DA:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DC6F8
- .align 2, 0
-_080DC6E4: .4byte gSprites
-_080DC6E8:
- ldrh r0, [r4, 0x24]
- lsls r0, 24
- lsrs r0, 24
- bl FreeOamMatrix
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DC6F8:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80DC5F4
-
- thumb_func_start sub_80DC700
-sub_80DC700: @ 80DC700
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080DC778
- cmp r0, 0x1
- bgt _080DC716
- cmp r0, 0
- beq _080DC720
- b _080DC818
-_080DC716:
- cmp r0, 0x2
- beq _080DC7AA
- cmp r0, 0x3
- beq _080DC808
- b _080DC818
-_080DC720:
- ldr r4, _080DC76C @ =gAnimBankAttacker
- ldrb r0, [r4]
- movs r1, 0
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x20]
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r5, 0x22]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DC74E
- ldrh r0, [r5, 0x22]
- adds r0, 0xC
- strh r0, [r5, 0x22]
-_080DC74E:
- movs r0, 0x8
- strh r0, [r5, 0x30]
- ldr r1, _080DC770 @ =REG_BLDCNT
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- ldr r2, _080DC774 @ =REG_BLDALPHA
- ldrh r1, [r5, 0x30]
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r0, r1
- strh r0, [r2]
- b _080DC7A2
- .align 2, 0
-_080DC76C: .4byte gAnimBankAttacker
-_080DC770: .4byte REG_BLDCNT
-_080DC774: .4byte REG_BLDALPHA
-_080DC778:
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080DC818
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r1, r0, 0
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xCB
- bl PlaySE12WithPanning
- adds r0, r5, 0
- movs r1, 0x1
- bl ChangeSpriteAffineAnim
-_080DC7A2:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080DC818
-_080DC7AA:
- ldrh r0, [r5, 0x32]
- adds r1, r0, 0x1
- strh r1, [r5, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1
- ble _080DC7E8
- movs r0, 0
- strh r0, [r5, 0x32]
- ldrh r1, [r5, 0x30]
- subs r1, 0x1
- strh r1, [r5, 0x30]
- ldr r2, _080DC804 @ =REG_BLDALPHA
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
- movs r1, 0x30
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080DC7E8
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
-_080DC7E8:
- movs r0, 0xE0
- lsls r0, 2
- adds r2, r0, 0
- ldrh r1, [r5, 0x34]
- adds r2, r1
- lsls r1, r2, 16
- asrs r1, 24
- ldrh r0, [r5, 0x26]
- subs r0, r1
- strh r0, [r5, 0x26]
- movs r0, 0xFF
- ands r2, r0
- strh r2, [r5, 0x34]
- b _080DC818
- .align 2, 0
-_080DC804: .4byte REG_BLDALPHA
-_080DC808:
- ldr r0, _080DC820 @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, r5, 0
- bl DestroyAnimSprite
-_080DC818:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DC820: .4byte REG_BLDCNT
- thumb_func_end sub_80DC700
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/rock.s b/asm/rock.s
deleted file mode 100644
index 98afb53e6..000000000
--- a/asm/rock.s
+++ /dev/null
@@ -1,1643 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- @ rock
-
- thumb_func_start sub_80DCE9C
-sub_80DCE9C: @ 80DCE9C
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r6, _080DCF08 @ =gBattleAnimArgs
- movs r1, 0x6
- ldrsh r0, [r6, r1]
- cmp r0, 0
- beq _080DCEBC
- ldr r0, _080DCF0C @ =gAnimBankTarget
- ldrb r0, [r0]
- adds r2, r5, 0
- adds r2, 0x20
- adds r3, r5, 0
- adds r3, 0x22
- movs r1, 0
- bl sub_807A3FC
-_080DCEBC:
- ldrh r0, [r6]
- ldrh r1, [r5, 0x20]
- adds r0, r1
- movs r4, 0
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x22]
- adds r0, 0xE
- strh r0, [r5, 0x22]
- ldrb r1, [r6, 0x2]
- adds r0, r5, 0
- bl StartSpriteAnim
- adds r0, r5, 0
- bl AnimateSprite
- strh r4, [r5, 0x2E]
- strh r4, [r5, 0x30]
- movs r0, 0x4
- strh r0, [r5, 0x32]
- movs r0, 0x10
- strh r0, [r5, 0x34]
- ldr r0, _080DCF10 @ =0x0000ffba
- strh r0, [r5, 0x36]
- ldrh r0, [r6, 0x4]
- strh r0, [r5, 0x38]
- ldr r1, _080DCF14 @ =sub_80DCF1C
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- ldr r1, _080DCF18 @ =sub_8078278
- str r1, [r5, 0x1C]
- adds r0, r5, 0
- bl _call_via_r1
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCF08: .4byte gBattleAnimArgs
-_080DCF0C: .4byte gAnimBankTarget
-_080DCF10: .4byte 0x0000ffba
-_080DCF14: .4byte sub_80DCF1C
-_080DCF18: .4byte sub_8078278
- thumb_func_end sub_80DCE9C
-
- thumb_func_start sub_80DCF1C
-sub_80DCF1C: @ 80DCF1C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x38]
- ldrh r2, [r4, 0x20]
- adds r0, r1, r2
- strh r0, [r4, 0x20]
- movs r0, 0xC0
- strh r0, [r4, 0x2E]
- strh r1, [r4, 0x30]
- movs r0, 0x4
- strh r0, [r4, 0x32]
- movs r0, 0x20
- strh r0, [r4, 0x34]
- ldr r0, _080DCF54 @ =0x0000ffe8
- strh r0, [r4, 0x36]
- ldr r1, _080DCF58 @ =move_anim_8074EE0
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- ldr r1, _080DCF5C @ =sub_8078278
- str r1, [r4, 0x1C]
- adds r0, r4, 0
- bl _call_via_r1
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCF54: .4byte 0x0000ffe8
-_080DCF58: .4byte move_anim_8074EE0
-_080DCF5C: .4byte sub_8078278
- thumb_func_end sub_80DCF1C
-
- thumb_func_start sub_80DCF60
-sub_80DCF60: @ 80DCF60
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _080DCF88 @ =gBattleAnimArgs
- ldrb r1, [r4, 0xA]
- bl StartSpriteAnim
- adds r0, r5, 0
- bl AnimateSprite
- ldr r0, _080DCF8C @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DCF90
- ldrh r0, [r5, 0x20]
- ldrh r1, [r4]
- subs r0, r1
- b _080DCF96
- .align 2, 0
-_080DCF88: .4byte gBattleAnimArgs
-_080DCF8C: .4byte gAnimBankAttacker
-_080DCF90:
- ldrh r0, [r4]
- ldrh r1, [r5, 0x20]
- adds r0, r1
-_080DCF96:
- strh r0, [r5, 0x20]
- ldr r3, _080DCFD8 @ =gBattleAnimArgs
- ldrh r2, [r3, 0x2]
- ldrh r0, [r5, 0x22]
- adds r2, r0
- movs r4, 0
- strh r2, [r5, 0x22]
- ldrh r0, [r3, 0x8]
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x20]
- strh r0, [r5, 0x30]
- ldrh r1, [r3, 0x4]
- adds r0, r1
- strh r0, [r5, 0x32]
- strh r2, [r5, 0x34]
- ldrh r0, [r3, 0x6]
- adds r2, r0
- strh r2, [r5, 0x36]
- adds r0, r5, 0
- bl sub_8078A5C
- strh r4, [r5, 0x34]
- strh r4, [r5, 0x36]
- ldr r0, _080DCFDC @ =sub_8078394
- str r0, [r5, 0x1C]
- ldr r1, _080DCFE0 @ =move_anim_8074EE0
- adds r0, r5, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DCFD8: .4byte gBattleAnimArgs
-_080DCFDC: .4byte sub_8078394
-_080DCFE0: .4byte move_anim_8074EE0
- thumb_func_end sub_80DCF60
-
- thumb_func_start sub_80DCFE4
-sub_80DCFE4: @ 80DCFE4
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080DCFFC @ =gBattleAnimArgs
- movs r1, 0xC
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _080DD000
- adds r0, r4, 0
- movs r1, 0
- bl sub_80787B0
- b _080DD008
- .align 2, 0
-_080DCFFC: .4byte gBattleAnimArgs
-_080DD000:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8078764
-_080DD008:
- ldr r1, _080DD024 @ =gBattleAnimArgs
- ldrh r0, [r1, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r1, 0x4]
- strh r0, [r4, 0x30]
- ldrh r0, [r1, 0x8]
- strh r0, [r4, 0x32]
- ldrh r0, [r1, 0xA]
- strh r0, [r4, 0x34]
- ldr r0, _080DD028 @ =sub_80DD02C
- str r0, [r4, 0x1C]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD024: .4byte gBattleAnimArgs
-_080DD028: .4byte sub_80DD02C
- thumb_func_end sub_80DCFE4
-
- thumb_func_start sub_80DD02C
-sub_80DD02C: @ 80DD02C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x36]
- adds r0, r1
- strh r0, [r4, 0x36]
- lsls r0, 16
- asrs r0, 24
- negs r0, r0
- strh r0, [r4, 0x26]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- movs r2, 0x34
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x32]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x2E]
- subs r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _080DD072
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DD072:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD02C
-
- thumb_func_start do_boulder_dust
-do_boulder_dust: @ 80DD078
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r1, _080DD154 @ =REG_BLDCNT
- ldr r2, _080DD158 @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r2, 0x80
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r4, _080DD15C @ =REG_BG1CNT
- ldrb r1, [r4]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4]
- ldrb r1, [r4, 0x1]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r4, 0x1]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080DD0C4
- ldrb r0, [r4]
- movs r1, 0xD
- negs r1, r1
- ands r1, r0
- movs r0, 0x4
- orrs r1, r0
- strb r1, [r4]
-_080DD0C4:
- ldr r0, _080DD160 @ =gBattle_BG1_X
- strh r5, [r0]
- ldr r0, _080DD164 @ =gBattle_BG1_Y
- strh r5, [r0]
- ldr r0, _080DD168 @ =REG_BG1HOFS
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- mov r0, sp
- bl sub_8078914
- ldr r1, [sp, 0x4]
- str r5, [sp, 0xC]
- ldr r2, _080DD16C @ =0x040000d4
- add r0, sp, 0xC
- str r0, [r2]
- str r1, [r2, 0x4]
- ldr r0, _080DD170 @ =0x85000400
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- ldr r0, _080DD174 @ =gBattleAnimBackgroundTilemap_SandstormBrew
- bl LZDecompressVram
- ldr r0, _080DD178 @ =gBattleAnimBackgroundImage_SandstormBrew
- ldr r1, [sp]
- bl LZDecompressVram
- ldr r0, _080DD17C @ =gBattleAnimSpritePalette_261
- mov r1, sp
- ldrb r1, [r1, 0x8]
- lsls r1, 4
- movs r2, 0x20
- bl LoadCompressedPalette
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _080DD120
- mov r0, sp
- ldrb r0, [r0, 0x8]
- ldr r1, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_80763FC
-_080DD120:
- ldr r0, _080DD180 @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _080DD13A
- ldr r0, _080DD184 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DD13A
- movs r5, 0x1
-_080DD13A:
- ldr r0, _080DD188 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- strh r5, [r1, 0x8]
- ldr r0, _080DD18C @ =sub_80DD190
- str r0, [r1]
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD154: .4byte REG_BLDCNT
-_080DD158: .4byte 0x00003f42
-_080DD15C: .4byte REG_BG1CNT
-_080DD160: .4byte gBattle_BG1_X
-_080DD164: .4byte gBattle_BG1_Y
-_080DD168: .4byte REG_BG1HOFS
-_080DD16C: .4byte 0x040000d4
-_080DD170: .4byte 0x85000400
-_080DD174: .4byte gBattleAnimBackgroundTilemap_SandstormBrew
-_080DD178: .4byte gBattleAnimBackgroundImage_SandstormBrew
-_080DD17C: .4byte gBattleAnimSpritePalette_261
-_080DD180: .4byte gBattleAnimArgs
-_080DD184: .4byte gAnimBankAttacker
-_080DD188: .4byte gTasks
-_080DD18C: .4byte sub_80DD190
- thumb_func_end do_boulder_dust
-
- thumb_func_start sub_80DD190
-sub_80DD190: @ 80DD190
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080DD1C0 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r3, r1, 0
- cmp r0, 0
- bne _080DD1CC
- ldr r1, _080DD1C4 @ =gBattle_BG1_X
- ldr r5, _080DD1C8 @ =0x0000fffa
- adds r0, r5, 0
- ldrh r2, [r1]
- adds r0, r2
- b _080DD1D2
- .align 2, 0
-_080DD1C0: .4byte gTasks
-_080DD1C4: .4byte gBattle_BG1_X
-_080DD1C8: .4byte 0x0000fffa
-_080DD1CC:
- ldr r1, _080DD204 @ =gBattle_BG1_X
- ldrh r0, [r1]
- adds r0, 0x6
-_080DD1D2:
- strh r0, [r1]
- adds r4, r1, 0
- ldr r1, _080DD208 @ =gBattle_BG1_Y
- ldr r5, _080DD20C @ =0x0000ffff
- adds r0, r5, 0
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- lsls r2, r7, 2
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r3
- movs r5, 0x20
- ldrsh r0, [r0, r5]
- mov r8, r2
- adds r2, r1, 0
- cmp r0, 0x4
- bls _080DD1F8
- b _080DD37C
-_080DD1F8:
- lsls r0, 2
- ldr r1, _080DD210 @ =_080DD214
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DD204: .4byte gBattle_BG1_X
-_080DD208: .4byte gBattle_BG1_Y
-_080DD20C: .4byte 0x0000ffff
-_080DD210: .4byte _080DD214
- .align 2, 0
-_080DD214:
- .4byte _080DD228
- .4byte _080DD270
- .4byte _080DD292
- .4byte _080DD2D4
- .4byte _080DD358
-_080DD228:
- mov r1, r8
- adds r0, r1, r7
- lsls r0, 3
- adds r3, r0, r3
- ldrh r0, [r3, 0x1C]
- adds r0, 0x1
- movs r4, 0
- strh r0, [r3, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- beq _080DD242
- b _080DD37C
-_080DD242:
- strh r4, [r3, 0x1C]
- ldrh r1, [r3, 0x1E]
- adds r1, 0x1
- strh r1, [r3, 0x1E]
- ldr r2, _080DD26C @ =REG_BLDALPHA
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
- movs r2, 0x1E
- ldrsh r0, [r3, r2]
- cmp r0, 0x7
- beq _080DD260
- b _080DD37C
-_080DD260:
- ldrh r0, [r3, 0x20]
- adds r0, 0x1
- strh r0, [r3, 0x20]
- strh r4, [r3, 0x1E]
- b _080DD37C
- .align 2, 0
-_080DD26C: .4byte REG_BLDALPHA
-_080DD270:
- mov r5, r8
- adds r0, r5, r7
- lsls r0, 3
- adds r1, r0, r3
- ldrh r0, [r1, 0x1E]
- adds r0, 0x1
- strh r0, [r1, 0x1E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x65
- bne _080DD37C
- movs r0, 0x7
- strh r0, [r1, 0x1E]
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- b _080DD37C
-_080DD292:
- mov r1, r8
- adds r0, r1, r7
- lsls r0, 3
- adds r3, r0, r3
- ldrh r0, [r3, 0x1C]
- adds r0, 0x1
- strh r0, [r3, 0x1C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bne _080DD37C
- movs r0, 0
- strh r0, [r3, 0x1C]
- ldrh r1, [r3, 0x1E]
- subs r1, 0x1
- strh r1, [r3, 0x1E]
- ldr r2, _080DD2D0 @ =REG_BLDALPHA
- movs r0, 0x10
- subs r0, r1
- lsls r0, 8
- orrs r1, r0
- strh r1, [r2]
- movs r2, 0x1E
- ldrsh r1, [r3, r2]
- cmp r1, 0
- bne _080DD37C
- ldrh r0, [r3, 0x20]
- adds r0, 0x1
- strh r0, [r3, 0x20]
- strh r1, [r3, 0x1E]
- b _080DD37C
- .align 2, 0
-_080DD2D0: .4byte REG_BLDALPHA
-_080DD2D4:
- mov r0, sp
- bl sub_8078914
- ldr r2, [sp]
- movs r3, 0x80
- lsls r3, 6
- add r5, sp, 0xC
- movs r6, 0
- ldr r1, _080DD38C @ =0x040000d4
- movs r4, 0x80
- lsls r4, 5
- mov r9, r5
- ldr r0, _080DD390 @ =0x85000400
- mov r12, r0
- movs r0, 0x85
- lsls r0, 24
- mov r10, r0
-_080DD2F6:
- str r6, [sp, 0xC]
- mov r0, r9
- str r0, [r1]
- str r2, [r1, 0x4]
- mov r0, r12
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r4
- subs r3, r4
- cmp r3, r4
- bhi _080DD2F6
- str r6, [sp, 0xC]
- str r5, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 2
- mov r2, r10
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0xC]
- ldr r0, _080DD38C @ =0x040000d4
- str r5, [r0]
- str r1, [r0, 0x4]
- ldr r1, _080DD394 @ =0x85000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- bne _080DD344
- ldr r2, _080DD398 @ =REG_BG1CNT
- ldrb r1, [r2]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
-_080DD344:
- ldr r0, _080DD39C @ =gTasks
- mov r5, r8
- adds r1, r5, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x20]
- adds r0, 0x1
- strh r0, [r1, 0x20]
- ldr r4, _080DD3A0 @ =gBattle_BG1_X
- ldr r2, _080DD3A4 @ =gBattle_BG1_Y
-_080DD358:
- movs r1, 0
- strh r1, [r4]
- strh r1, [r2]
- ldr r0, _080DD3A8 @ =REG_BLDCNT
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- ldr r2, _080DD398 @ =REG_BG1CNT
- ldrb r1, [r2]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- adds r0, r7, 0
- bl DestroyAnimVisualTask
-_080DD37C:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD38C: .4byte 0x040000d4
-_080DD390: .4byte 0x85000400
-_080DD394: .4byte 0x85000200
-_080DD398: .4byte REG_BG1CNT
-_080DD39C: .4byte gTasks
-_080DD3A0: .4byte gBattle_BG1_X
-_080DD3A4: .4byte gBattle_BG1_Y
-_080DD3A8: .4byte REG_BLDCNT
- thumb_func_end sub_80DD190
-
- thumb_func_start sub_80DD3AC
-sub_80DD3AC: @ 80DD3AC
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080DD428
- ldr r4, _080DD3F0 @ =gBattleAnimArgs
- movs r2, 0x6
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _080DD3F8
- ldr r0, _080DD3F4 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _080DD3F8
- movs r0, 0x98
- lsls r0, 1
- strh r0, [r5, 0x20]
- ldrh r0, [r4, 0x2]
- negs r0, r0
- strh r0, [r4, 0x2]
- movs r0, 0x1
- strh r0, [r5, 0x38]
- ldrb r1, [r5, 0x3]
- subs r0, 0x40
- ands r0, r1
- movs r1, 0x10
- orrs r0, r1
- strb r0, [r5, 0x3]
- b _080DD3FC
- .align 2, 0
-_080DD3F0: .4byte gBattleAnimArgs
-_080DD3F4: .4byte gAnimBankAttacker
-_080DD3F8:
- ldr r0, _080DD41C @ =0x0000ffc0
- strh r0, [r5, 0x20]
-_080DD3FC:
- ldr r4, _080DD420 @ =gBattleAnimArgs
- ldrh r0, [r4]
- strh r0, [r5, 0x22]
- ldr r1, _080DD424 @ =gUnknown_083DAD10
- adds r0, r5, 0
- bl SetSubspriteTables
- ldrh r0, [r4, 0x2]
- strh r0, [r5, 0x30]
- ldrh r0, [r4, 0x4]
- strh r0, [r5, 0x32]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- b _080DD484
- .align 2, 0
-_080DD41C: .4byte 0x0000ffc0
-_080DD420: .4byte gBattleAnimArgs
-_080DD424: .4byte gUnknown_083DAD10
-_080DD428:
- ldrh r1, [r5, 0x30]
- ldrh r3, [r5, 0x34]
- adds r1, r3
- ldrh r2, [r5, 0x32]
- ldrh r0, [r5, 0x36]
- adds r2, r0
- lsls r0, r1, 16
- asrs r0, 24
- ldrh r3, [r5, 0x24]
- adds r0, r3
- strh r0, [r5, 0x24]
- lsls r0, r2, 16
- asrs r0, 24
- ldrh r3, [r5, 0x26]
- adds r0, r3
- strh r0, [r5, 0x26]
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r5, 0x34]
- ands r2, r0
- strh r2, [r5, 0x36]
- movs r1, 0x38
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080DD46E
- movs r2, 0x20
- ldrsh r0, [r5, r2]
- movs r3, 0x24
- ldrsh r1, [r5, r3]
- adds r0, r1
- movs r1, 0x88
- lsls r1, 1
- cmp r0, r1
- ble _080DD484
- b _080DD480
-_080DD46E:
- movs r1, 0x20
- ldrsh r0, [r5, r1]
- movs r2, 0x24
- ldrsh r1, [r5, r2]
- adds r0, r1
- movs r1, 0x20
- negs r1, r1
- cmp r0, r1
- bge _080DD484
-_080DD480:
- ldr r0, _080DD48C @ =DestroyAnimSprite
- str r0, [r5, 0x1C]
-_080DD484:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD48C: .4byte DestroyAnimSprite
- thumb_func_end sub_80DD3AC
-
- thumb_func_start sub_80DD490
-sub_80DD490: @ 80DD490
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080DD4C8 @ =gBattleAnimArgs
- ldrb r1, [r5, 0x8]
- bl StartSpriteAnim
- adds r0, r4, 0
- movs r1, 0
- bl sub_80787B0
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x20]
- strh r0, [r4, 0x32]
- ldrh r0, [r5, 0x4]
- ldrh r1, [r4, 0x22]
- adds r0, r1
- strh r0, [r4, 0x36]
- ldr r0, _080DD4CC @ =sub_8078B34
- str r0, [r4, 0x1C]
- ldr r1, _080DD4D0 @ =DestroyAnimSprite
- adds r0, r4, 0
- bl StoreSpriteCallbackInData
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD4C8: .4byte gBattleAnimArgs
-_080DD4CC: .4byte sub_8078B34
-_080DD4D0: .4byte DestroyAnimSprite
- thumb_func_end sub_80DD490
-
- thumb_func_start sub_80DD4D4
-sub_80DD4D4: @ 80DD4D4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _080DD554 @ =gTasks
- adds r6, r1, r0
- ldr r5, _080DD558 @ =gAnimBankAttacker
- ldrb r0, [r5]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 8
- movs r1, 0xC0
- lsls r1, 13
- adds r0, r1
- lsrs r7, r0, 16
- ldr r4, _080DD55C @ =gAnimBankTarget
- ldrb r0, [r4]
- movs r1, 0x2
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldrb r0, [r4]
- movs r1, 0x1
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 8
- movs r2, 0xC0
- lsls r2, 13
- adds r0, r2
- lsrs r0, 16
- mov r8, r0
- ldrb r1, [r5]
- movs r0, 0x2
- eors r0, r1
- ldrb r4, [r4]
- cmp r0, r4
- bne _080DD544
- mov r8, r7
-_080DD544:
- bl sub_80DD8BC
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bne _080DD560
- movs r0, 0x20
- b _080DD566
- .align 2, 0
-_080DD554: .4byte gTasks
-_080DD558: .4byte gAnimBankAttacker
-_080DD55C: .4byte gAnimBankTarget
-_080DD560:
- lsls r1, r5, 3
- movs r0, 0x30
- subs r0, r1
-_080DD566:
- strh r0, [r6, 0x18]
- movs r4, 0
- strh r4, [r6, 0x8]
- strh r4, [r6, 0x1E]
- strh r4, [r6, 0x1A]
- movs r0, 0x1
- strh r0, [r6, 0x20]
- movs r1, 0x18
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bge _080DD57E
- adds r0, 0x7
-_080DD57E:
- asrs r0, 3
- subs r0, 0x1
- strh r0, [r6, 0x1C]
- mov r2, r9
- lsls r0, r2, 3
- strh r0, [r6, 0xC]
- lsls r0, r7, 3
- strh r0, [r6, 0xE]
- mov r1, r10
- subs r0, r1, r2
- lsls r0, 3
- movs r2, 0x18
- ldrsh r1, [r6, r2]
- bl __divsi3
- strh r0, [r6, 0x10]
- mov r1, r8
- subs r0, r1, r7
- lsls r0, 3
- movs r2, 0x18
- ldrsh r1, [r6, r2]
- bl __divsi3
- strh r0, [r6, 0x12]
- strh r4, [r6, 0x14]
- strh r4, [r6, 0x16]
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- adds r4, r0, 0
- lsls r4, 24
- asrs r4, 8
- lsrs r4, 16
- movs r0, 0x3F
- bl BattleAnimAdjustPanning
- lsls r0, 24
- strh r4, [r6, 0x22]
- asrs r0, 24
- lsls r4, 16
- asrs r4, 16
- subs r0, r4
- movs r2, 0x18
- ldrsh r1, [r6, r2]
- bl __divsi3
- strh r0, [r6, 0x24]
- strh r5, [r6, 0xA]
- movs r0, 0
- bl GetAnimBankSpriteId
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r6, 0x26]
- ldr r0, _080DD600 @ =sub_80DD604
- str r0, [r6]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD600: .4byte sub_80DD604
- thumb_func_end sub_80DD4D4
-
- thumb_func_start sub_80DD604
-sub_80DD604: @ 80DD604
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- ldr r1, _080DD628 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bls _080DD61E
- b _080DD76C
-_080DD61E:
- lsls r0, 2
- ldr r1, _080DD62C @ =_080DD630
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DD628: .4byte gTasks
-_080DD62C: .4byte _080DD630
- .align 2, 0
-_080DD630:
- .4byte _080DD644
- .4byte _080DD6A8
- .4byte _080DD6B0
- .4byte _080DD70C
- .4byte _080DD75E
-_080DD644:
- ldrh r2, [r4, 0x14]
- ldrh r0, [r4, 0x10]
- subs r2, r0
- strh r2, [r4, 0x14]
- ldrh r0, [r4, 0x16]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x16]
- ldr r3, _080DD6A4 @ =gSprites
- movs r0, 0x26
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- lsls r2, 16
- asrs r2, 19
- strh r2, [r0, 0x24]
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrh r0, [r4, 0x16]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r1, 0x26]
- ldrh r0, [r4, 0x1A]
- adds r0, 0x1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _080DD694
- movs r0, 0x14
- strh r0, [r4, 0x1E]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080DD694:
- ldrh r1, [r4, 0x22]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xA2
- bl PlaySE12WithPanning
- b _080DD76C
- .align 2, 0
-_080DD6A4: .4byte gSprites
-_080DD6A8:
- ldrh r0, [r4, 0x1E]
- subs r0, 0x1
- strh r0, [r4, 0x1E]
- b _080DD750
-_080DD6B0:
- ldrh r0, [r4, 0x1A]
- subs r0, 0x1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- beq _080DD6D0
- ldrh r0, [r4, 0x10]
- ldrh r2, [r4, 0x14]
- adds r0, r2
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0x16]
- adds r0, r1
- strh r0, [r4, 0x16]
- b _080DD6DA
-_080DD6D0:
- strh r0, [r4, 0x14]
- strh r0, [r4, 0x16]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_080DD6DA:
- ldr r2, _080DD708 @ =gSprites
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r4, 0x14]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r1, 0x24]
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r4, 0x16]
- lsls r0, 16
- asrs r0, 19
- strh r0, [r1, 0x26]
- b _080DD76C
- .align 2, 0
-_080DD708: .4byte gSprites
-_080DD70C:
- ldrh r0, [r4, 0x10]
- ldrh r2, [r4, 0xC]
- adds r0, r2
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0x12]
- ldrh r1, [r4, 0xE]
- adds r0, r1
- strh r0, [r4, 0xE]
- ldrh r0, [r4, 0x1A]
- adds r0, 0x1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- asrs r0, 16
- movs r2, 0x1C
- ldrsh r1, [r4, r2]
- cmp r0, r1
- blt _080DD74A
- movs r0, 0
- strh r0, [r4, 0x1A]
- adds r0, r4, 0
- bl sub_80DD774
- ldrh r1, [r4, 0x24]
- ldrh r0, [r4, 0x22]
- adds r1, r0
- strh r1, [r4, 0x22]
- lsls r1, 24
- asrs r1, 24
- movs r0, 0xAF
- bl PlaySE12WithPanning
-_080DD74A:
- ldrh r0, [r4, 0x18]
- subs r0, 0x1
- strh r0, [r4, 0x18]
-_080DD750:
- lsls r0, 16
- cmp r0, 0
- bne _080DD76C
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080DD76C
-_080DD75E:
- movs r1, 0x1E
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080DD76C
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_080DD76C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD604
-
- thumb_func_start sub_80DD774
-sub_80DD774: @ 80DD774
- push {r4-r7,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x4
- bhi _080DD864
- lsls r0, 2
- ldr r1, _080DD790 @ =_080DD794
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080DD790: .4byte _080DD794
- .align 2, 0
-_080DD794:
- .4byte _080DD7A8
- .4byte _080DD7B4
- .4byte _080DD7B4
- .4byte _080DD7C0
- .4byte _080DD7CC
-_080DD7A8:
- ldr r3, _080DD7B0 @ =gSpriteTemplate_83DAD78
- movs r5, 0
- b _080DD7D0
- .align 2, 0
-_080DD7B0: .4byte gSpriteTemplate_83DAD78
-_080DD7B4:
- ldr r3, _080DD7BC @ =gSpriteTemplate_83DAD90
- movs r5, 0x50
- b _080DD7D0
- .align 2, 0
-_080DD7BC: .4byte gSpriteTemplate_83DAD90
-_080DD7C0:
- ldr r3, _080DD7C8 @ =gSpriteTemplate_83DAD90
- movs r5, 0x40
- b _080DD7D0
- .align 2, 0
-_080DD7C8: .4byte gSpriteTemplate_83DAD90
-_080DD7CC:
- ldr r3, _080DD86C @ =gSpriteTemplate_83DAD90
- movs r5, 0x30
-_080DD7D0:
- ldrh r1, [r4, 0xC]
- lsls r1, 16
- asrs r1, 19
- lsls r1, 16
- lsrs r1, 16
- ldrh r2, [r4, 0xE]
- lsls r2, 16
- asrs r2, 19
- lsls r2, 16
- movs r6, 0x20
- ldrsh r0, [r4, r6]
- lsls r0, 2
- adds r1, r0
- lsls r1, 16
- lsrs r6, r1, 16
- asrs r1, 16
- lsrs r7, r2, 16
- asrs r2, 16
- adds r0, r3, 0
- movs r3, 0x23
- bl CreateSprite
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _080DD85C
- ldr r1, _080DD870 @ =gSprites
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- movs r1, 0x12
- strh r1, [r0, 0x2E]
- movs r2, 0x20
- ldrsh r1, [r4, r2]
- lsls r2, r1, 2
- adds r2, r1
- lsls r2, 2
- adds r2, r6, r2
- movs r6, 0xA
- ldrsh r3, [r4, r6]
- lsls r1, r3, 1
- adds r1, r3
- adds r2, r1
- strh r2, [r0, 0x32]
- strh r7, [r0, 0x36]
- movs r1, 0xA
- ldrsh r2, [r4, r1]
- lsls r2, 1
- movs r3, 0x10
- negs r3, r3
- adds r1, r3, 0
- subs r1, r2
- strh r1, [r0, 0x38]
- ldrh r3, [r0, 0x4]
- lsls r2, r3, 22
- lsrs r2, 22
- adds r2, r5
- ldr r5, _080DD874 @ =0x000003ff
- adds r1, r5, 0
- ands r2, r1
- ldr r1, _080DD878 @ =0xfffffc00
- ands r1, r3
- orrs r1, r2
- strh r1, [r0, 0x4]
- bl sub_80786EC
- ldrh r0, [r4, 0x1E]
- adds r0, 0x1
- strh r0, [r4, 0x1E]
-_080DD85C:
- movs r6, 0x20
- ldrsh r0, [r4, r6]
- negs r0, r0
- strh r0, [r4, 0x20]
-_080DD864:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD86C: .4byte gSpriteTemplate_83DAD90
-_080DD870: .4byte gSprites
-_080DD874: .4byte 0x000003ff
-_080DD878: .4byte 0xfffffc00
- thumb_func_end sub_80DD774
-
- thumb_func_start sub_80DD87C
-sub_80DD87C: @ 80DD87C
- push {r4,lr}
- adds r4, r0, 0
- bl sub_8078718
- lsls r0, 24
- cmp r0, 0
- beq _080DD8AE
- ldr r0, _080DD8B4 @ =sub_80DD604
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _080DD8A8
- ldr r0, _080DD8B8 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1E]
- subs r0, 0x1
- strh r0, [r1, 0x1E]
-_080DD8A8:
- adds r0, r4, 0
- bl DestroySprite
-_080DD8AE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD8B4: .4byte sub_80DD604
-_080DD8B8: .4byte gTasks
- thumb_func_end sub_80DD87C
-
- thumb_func_start sub_80DD8BC
-sub_80DD8BC: @ 80DD8BC
- push {lr}
- ldr r0, _080DD8E4 @ =gAnimDisableStructPtr
- ldr r0, [r0]
- ldrb r1, [r0, 0x11]
- lsrs r0, r1, 4
- lsls r1, 28
- lsrs r1, 28
- subs r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r0, r2
- lsrs r0, 24
- cmp r0, 0x4
- bls _080DD8DE
- movs r1, 0x1
-_080DD8DE:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080DD8E4: .4byte gAnimDisableStructPtr
- thumb_func_end sub_80DD8BC
-
- thumb_func_start sub_80DD8E8
-sub_80DD8E8: @ 80DD8E8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080DD920 @ =gBattleAnimArgs
- ldrb r1, [r5, 0x8]
- bl StartSpriteAnim
- ldrh r0, [r5]
- strh r0, [r4, 0x24]
- ldrh r0, [r5, 0x2]
- strh r0, [r4, 0x32]
- ldrh r0, [r4, 0x34]
- ldrh r1, [r5, 0x4]
- subs r0, r1
- strh r0, [r4, 0x34]
- movs r0, 0x3
- strh r0, [r4, 0x2E]
- ldrh r0, [r5, 0x6]
- strh r0, [r4, 0x30]
- ldr r0, _080DD924 @ =sub_80DD928
- str r0, [r4, 0x1C]
- adds r4, 0x3E
- ldrb r0, [r4]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD920: .4byte gBattleAnimArgs
-_080DD924: .4byte sub_80DD928
- thumb_func_end sub_80DD8E8
-
- thumb_func_start sub_80DD928
-sub_80DD928: @ 80DD928
- push {lr}
- adds r2, r0, 0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r3]
- ldrh r1, [r2, 0x34]
- movs r3, 0x34
- ldrsh r0, [r2, r3]
- cmp r0, 0
- beq _080DD960
- ldrh r3, [r2, 0x32]
- adds r0, r1, r3
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x2E]
- adds r1, r0
- strh r1, [r2, 0x34]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r1, 16
- cmp r1, 0
- ble _080DD972
- movs r0, 0
- strh r0, [r2, 0x34]
- b _080DD972
-_080DD960:
- ldrh r0, [r2, 0x30]
- subs r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- cmp r0, 0
- bne _080DD972
- adds r0, r2, 0
- bl DestroyAnimSprite
-_080DD972:
- pop {r0}
- bx r0
- thumb_func_end sub_80DD928
-
- thumb_func_start sub_80DD978
-sub_80DD978: @ 80DD978
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _080DD9A0 @ =gAnimBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080DD994
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080DD994:
- adds r0, r4, 0
- bl sub_807941C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD9A0: .4byte gAnimBankAttacker
- thumb_func_end sub_80DD978
-
- thumb_func_start sub_80DD9A4
-sub_80DD9A4: @ 80DD9A4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _080DD9F0 @ =gAnimBankTarget
- ldrb r0, [r5]
- movs r1, 0
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x20]
- ldrb r0, [r5]
- movs r1, 0x1
- bl GetBankPosition
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080DD9F4 @ =gBattleAnimArgs
- ldrh r3, [r2]
- ldrh r5, [r4, 0x20]
- adds r1, r3, r5
- strh r1, [r4, 0x20]
- ldrh r1, [r2, 0x2]
- adds r0, r1
- strh r0, [r4, 0x22]
- strh r3, [r4, 0x30]
- strh r1, [r4, 0x32]
- ldrh r0, [r2, 0x4]
- strh r0, [r4, 0x38]
- ldrb r1, [r2, 0x6]
- adds r0, r4, 0
- bl StartSpriteAnim
- ldr r0, _080DD9F8 @ =sub_80DD9FC
- str r0, [r4, 0x1C]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080DD9F0: .4byte gAnimBankTarget
-_080DD9F4: .4byte gBattleAnimArgs
-_080DD9F8: .4byte sub_80DD9FC
- thumb_func_end sub_80DD9A4
-
- thumb_func_start sub_80DD9FC
-sub_80DD9FC: @ 80DD9FC
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x8
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x34]
- adds r0, r1
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- adds r0, r2
- strh r0, [r4, 0x36]
- movs r1, 0x34
- ldrsh r0, [r4, r1]
- movs r1, 0x28
- bl __divsi3
- ldrh r1, [r4, 0x24]
- adds r1, r0
- strh r1, [r4, 0x24]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- ldrh r1, [r4, 0x26]
- subs r1, r0
- strh r1, [r4, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x8C
- ble _080DDA46
- adds r0, r4, 0
- bl DestroyAnimSprite
-_080DDA46:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80DD9FC
-
- thumb_func_start sub_80DDA4C
-sub_80DDA4C: @ 80DDA4C
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, _080DDA84 @ =gAnimMoveDmg
- ldr r0, [r2]
- cmp r0, 0x20
- bgt _080DDA60
- ldr r1, _080DDA88 @ =gBattleAnimArgs
- movs r0, 0
- strh r0, [r1, 0xE]
-_080DDA60:
- ldr r2, [r2]
- adds r0, r2, 0
- subs r0, 0x21
- cmp r0, 0x20
- bhi _080DDA70
- ldr r1, _080DDA88 @ =gBattleAnimArgs
- movs r0, 0x1
- strh r0, [r1, 0xE]
-_080DDA70:
- cmp r2, 0x41
- ble _080DDA7A
- ldr r1, _080DDA88 @ =gBattleAnimArgs
- movs r0, 0x2
- strh r0, [r1, 0xE]
-_080DDA7A:
- adds r0, r3, 0
- bl DestroyAnimVisualTask
- pop {r0}
- bx r0
- .align 2, 0
-_080DDA84: .4byte gAnimMoveDmg
-_080DDA88: .4byte gBattleAnimArgs
- thumb_func_end sub_80DDA4C
-
- thumb_func_start sub_80DDA8C
-sub_80DDA8C: @ 80DDA8C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _080DDAE8 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080DDAAE
- movs r0, 0
- bl sub_80789D4
- movs r0, 0xC8
- strh r0, [r5, 0xA]
-_080DDAAE:
- ldr r4, _080DDAEC @ =gBattle_BG3_Y
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- movs r1, 0xA
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- ldrh r0, [r5, 0xA]
- subs r0, 0x3
- strh r0, [r5, 0xA]
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x78
- bne _080DDADA
- movs r0, 0x1
- bl sub_80789D4
- adds r0, r6, 0
- bl DestroyAnimVisualTask
-_080DDADA:
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DDAE8: .4byte gTasks
-_080DDAEC: .4byte gBattle_BG3_Y
- thumb_func_end sub_80DDA8C
-
- thumb_func_start sub_80DDAF0
-sub_80DDAF0: @ 80DDAF0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _080DDB5C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _080DDB1C
- movs r0, 0
- bl sub_80789D4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- ldr r0, _080DDB60 @ =gBattle_BG3_Y
- ldrh r0, [r0]
- strh r0, [r4, 0xC]
-_080DDB1C:
- ldrh r0, [r4, 0xA]
- adds r0, 0x50
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0xA]
- ldr r6, _080DDB60 @ =gBattle_BG3_Y
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- movs r0, 0x4
- bl Cos
- ldrh r4, [r4, 0xC]
- adds r0, r4
- strh r0, [r6]
- ldr r0, _080DDB64 @ =gBattleAnimArgs
- movs r2, 0xE
- ldrsh r1, [r0, r2]
- ldr r0, _080DDB68 @ =0x00000fff
- cmp r1, r0
- bne _080DDB54
- movs r0, 0
- strh r0, [r6]
- movs r0, 0x1
- bl sub_80789D4
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_080DDB54:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080DDB5C: .4byte gTasks
-_080DDB60: .4byte gBattle_BG3_Y
-_080DDB64: .4byte gBattleAnimArgs
-_080DDB68: .4byte 0x00000fff
- thumb_func_end sub_80DDAF0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/taya_debug_window.s b/asm/taya_debug_window.s
new file mode 100644
index 000000000..68d27390d
--- /dev/null
+++ b/asm/taya_debug_window.s
@@ -0,0 +1,2054 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ .text
+
+ thumb_func_start TayaDebugMenu_Trend
+TayaDebugMenu_Trend:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xffffffd8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1e
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r5, ._3 @ gSaveBlock1
+ mov r7, #0x0
+ mov r0, #0x1
+ add r0, r0, sp
+ mov sl, r0
+ mov r9, sp
+ mov r0, #0x0
+ mov r8, r0
+ add r6, sp, #0x20
+._2:
+ ldrb r1, [r5, #0x1]
+ mov r0, #0x40
+ and r0, r0, r1
+ mov r1, #0xa1
+ cmp r0, #0
+ beq ._1 @cond_branch
+ mov r1, #0xa2
+._1:
+ mov r0, r9
+ strb r1, [r0]
+ ldrh r1, [r5, #0x4]
+ add r0, r6, #0
+ bl EasyChat_GetWordText
+ mov r0, sl
+ add r1, r6, #0
+ mov r2, #0x0
+ mov r3, #0x7
+ bl StringCopyPadded
+ add r4, r0, #0
+ ldrh r1, [r5, #0x6]
+ add r0, r6, #0
+ bl EasyChat_GetWordText
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x0
+ mov r3, #0x8
+ bl StringCopyPadded
+ add r4, r0, #0
+ ldrb r1, [r5]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x19
+ mov r2, #0x1
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ add r4, r0, #0
+ mov r0, r8
+ strb r0, [r4]
+ add r4, r4, #0x1
+ ldrh r1, [r5]
+ lsl r1, r1, #0x12
+ lsr r1, r1, #0x19
+ add r0, r4, #0
+ mov r2, #0x1
+ mov r3, #0x3
+ bl ConvertIntToDecimalStringN
+ add r4, r0, #0
+ mov r0, r8
+ strb r0, [r4]
+ add r4, r4, #0x1
+ ldrh r1, [r5, #0x2]
+ add r0, r4, #0
+ mov r2, #0x1
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ lsl r2, r7, #0x1
+ add r2, r2, #0x1
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r0, sp
+ mov r1, #0x1
+ bl Menu_PrintText
+ add r5, r5, #0x8
+ add r0, r7, #1
+ lsl r0, r0, #0x10
+ lsr r7, r0, #0x10
+ cmp r7, #0x4
+ bls ._2 @cond_branch
+ ldr r1, ._3 + 4 @ gMenuCallback
+ ldr r0, ._3 + 8 @ debug_sub_8090808
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x28
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._4:
+ .align 2, 0
+._3:
+ .word gSaveBlock1+0x2dd4
+ .word gMenuCallback
+ .word debug_sub_8090808+1
+
+ thumb_func_end TayaDebugMenu_Trend
+
+ thumb_func_start debug_sub_8090808
+debug_sub_8090808:
+ push {lr}
+ ldr r0, ._7 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x3
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._5 @cond_branch
+ mov r0, #0x0
+ b ._6
+._8:
+ .align 2, 0
+._7:
+ .word gMain
+._5:
+ bl Menu_EraseScreen
+ bl CloseMenu
+ mov r0, #0x1
+._6:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090808
+
+ thumb_func_start TayaDebugMenu_TrendR
+TayaDebugMenu_TrendR:
+ push {r4, r5, r6, r7, lr}
+ mov r0, #0x0
+ ldr r7, ._11 @ gSaveBlock1
+._10:
+ mov r4, #0x0
+ lsl r5, r0, #0x3
+ add r6, r0, #1
+._9:
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x16
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl sub_80EB72C
+ lsl r1, r4, #0x1
+ add r1, r1, r5
+ add r1, r1, r7
+ strh r0, [r1]
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x1
+ bls ._9 @cond_branch
+ lsl r0, r6, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x4
+ bls ._10 @cond_branch
+ bl Menu_EraseScreen
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._12:
+ .align 2, 0
+._11:
+ .word gSaveBlock1+0x2dd8
+
+ thumb_func_end TayaDebugMenu_TrendR
+
+ thumb_func_start debug_sub_8090880
+debug_sub_8090880:
+ push {lr}
+ bl UpdatePaletteFade
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._13 @cond_branch
+ mov r0, #0x0
+ b ._14
+._13:
+ bl sub_80E60D8
+ mov r0, #0x1
+._14:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090880
+
+ thumb_func_start debug_sub_809089C
+debug_sub_809089C:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._15 @cond_branch
+ add r0, r0, #0x1
+ cmp r1, r0
+ bne ._16 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ b ._17
+._16:
+ ldr r2, ._19 @ gSpecialVar_0x8004
+ ldr r0, ._19 + 4 @ gUnknown_Debug_083C4EC0
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ strh r0, [r2]
+ ldrh r0, [r2]
+ sub r0, r0, #0x5
+ cmp r0, #0x7
+ bhi ._27 @cond_branch
+ lsl r0, r0, #0x2
+ ldr r1, ._19 + 8 @
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+._20:
+ .align 2, 0
+._19:
+ .word gSpecialVar_0x8004
+ .word gUnknown_Debug_083C4EC0
+ .word ._21
+._21:
+ .word ._29
+ .word ._27
+ .word ._29
+ .word ._29
+ .word ._27
+ .word ._27
+ .word ._29
+ .word ._29
+._29:
+ ldr r0, ._30 @ gSpecialVar_0x8005
+ mov r1, #0x0
+ strh r1, [r0]
+ ldr r0, ._30 + 4 @ gSpecialVar_0x8006
+ strh r1, [r0]
+._27:
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FadeScreen
+ ldr r1, ._30 + 8 @ gMenuCallback
+ ldr r0, ._30 + 12 @ debug_sub_8090880
+ str r0, [r1]
+._15:
+ mov r0, #0x0
+._17:
+ pop {r1}
+ bx r1
+._31:
+ .align 2, 0
+._30:
+ .word gSpecialVar_0x8005
+ .word gSpecialVar_0x8006
+ .word gMenuCallback
+ .word debug_sub_8090880+1
+
+ thumb_func_end debug_sub_809089C
+
+ thumb_func_start TayaDebugMenu_SimpleText
+TayaDebugMenu_SimpleText:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xc
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._32 @ gUnknown_Debug_083C4EC0
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._32 + 4 @ gMenuCallback
+ ldr r0, ._32 + 8 @ debug_sub_809089C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._33:
+ .align 2, 0
+._32:
+ .word gUnknown_Debug_083C4EC0
+ .word gMenuCallback
+ .word debug_sub_809089C+1
+
+ thumb_func_end TayaDebugMenu_SimpleText
+
+ thumb_func_start debug_sub_8090984
+debug_sub_8090984:
+ push {r4, r5, r6, r7, lr}
+ bl Menu_ProcessInput
+ lsl r2, r0, #0x18
+ asr r1, r2, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._34 @cond_branch
+ add r0, r0, #0x1
+ cmp r1, r0
+ beq ._46 @cond_branch
+ cmp r1, #0x4
+ bgt ._36 @cond_branch
+ lsr r0, r2, #0x18
+ bl debug_sub_810B32C
+ b ._46
+._34:
+ mov r0, #0x0
+ b ._38
+._36:
+ cmp r1, #0x5
+ bne ._39 @cond_branch
+ bl sub_80F7F30
+ b ._46
+._39:
+ cmp r1, #0x6
+ bne ._41 @cond_branch
+ mov r4, #0x0
+ ldr r0, ._44 @ gSaveBlock1
+ add r1, r0, #2
+ mov ip, r1
+ ldr r7, ._44 + 4 @ gUnknown_Debug_083C4F08
+ ldr r1, ._44 + 8 @ 0xfffffd94
+ add r6, r0, r1
+ add r5, r0, #0
+ add r5, r5, #0xe
+._42:
+ lsl r1, r4, #0x1
+ mov r0, ip
+ add r3, r1, r0
+ add r0, r1, r7
+ ldrh r2, [r0]
+ strh r2, [r3]
+ add r0, r1, r5
+ strh r2, [r0]
+ add r1, r6, r1
+ strh r2, [r1]
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x2
+ bls ._42 @cond_branch
+ b ._46
+._45:
+ .align 2, 0
+._44:
+ .word gSaveBlock1+0x2d94
+ .word gUnknown_Debug_083C4F08
+ .word 0xfffffd94
+._41:
+ cmp r1, #0x7
+ bne ._46 @cond_branch
+ mov r4, #0x0
+._47:
+ lsl r0, r4, #0x18
+ lsr r0, r0, #0x18
+ bl sub_80EB890
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x20
+ bls ._47 @cond_branch
+._46:
+ bl CloseMenu
+ mov r0, #0x1
+._38:
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_8090984
+
+ thumb_func_start TayaDebugMenu_OldMan
+TayaDebugMenu_OldMan:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xa
+ mov r3, #0x11
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._48 @ gUnknown_Debug_083C4F54
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x8
+ bl Menu_PrintItems
+ bl GetCurrentMauvilleOldMan
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [sp]
+ mov r0, #0x9
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x8
+ bl InitMenu
+ ldr r1, ._48 + 4 @ gMenuCallback
+ ldr r0, ._48 + 8 @ debug_sub_8090984
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._49:
+ .align 2, 0
+._48:
+ .word gUnknown_Debug_083C4F54
+ .word gMenuCallback
+ .word debug_sub_8090984+1
+
+ thumb_func_end TayaDebugMenu_OldMan
+
+ thumb_func_start TayaDebugMenu_LanettesPC
+TayaDebugMenu_LanettesPC:
+ push {lr}
+ bl Menu_EraseScreen
+ bl ShowPokemonStorageSystem
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+
+ thumb_func_end TayaDebugMenu_LanettesPC
+
+ thumb_func_start TayaDebugMenu_TownFlags
+TayaDebugMenu_TownFlags:
+ push {lr}
+ ldr r0, ._50 @ 0x80f
+ bl FlagSet
+ mov r0, #0x81
+ lsl r0, r0, #0x4
+ bl FlagSet
+ ldr r0, ._50 + 4 @ 0x811
+ bl FlagSet
+ ldr r0, ._50 + 8 @ 0x812
+ bl FlagSet
+ ldr r0, ._50 + 12 @ 0x813
+ bl FlagSet
+ ldr r0, ._50 + 16 @ 0x814
+ bl FlagSet
+ ldr r0, ._50 + 20 @ 0x815
+ bl FlagSet
+ ldr r0, ._50 + 24 @ 0x816
+ bl FlagSet
+ ldr r0, ._50 + 28 @ 0x817
+ bl FlagSet
+ ldr r0, ._50 + 32 @ 0x818
+ bl FlagSet
+ ldr r0, ._50 + 36 @ 0x819
+ bl FlagSet
+ ldr r0, ._50 + 40 @ 0x81a
+ bl FlagSet
+ ldr r0, ._50 + 44 @ 0x81b
+ bl FlagSet
+ ldr r0, ._50 + 48 @ 0x81c
+ bl FlagSet
+ ldr r0, ._50 + 52 @ 0x81d
+ bl FlagSet
+ ldr r0, ._50 + 56 @ 0x81e
+ bl FlagSet
+ ldr r0, ._50 + 60 @ 0x848
+ bl FlagSet
+ ldr r0, ._50 + 64 @ 0x849
+ bl FlagSet
+ ldr r0, ._50 + 68 @ 0x84a
+ bl FlagSet
+ ldr r0, ._50 + 72 @ 0x854
+ bl FlagSet
+ ldr r0, ._50 + 76 @ 0x855
+ bl FlagSet
+ ldr r0, ._50 + 80 @ 0x856
+ bl FlagSet
+ ldr r0, ._50 + 84 @ 0x857
+ bl FlagSet
+ ldr r0, ._50 + 88 @ 0x858
+ bl FlagSet
+ ldr r0, ._50 + 92 @ 0x859
+ bl FlagSet
+ ldr r0, ._50 + 96 @ 0x85a
+ bl FlagSet
+ ldr r0, ._50 + 100 @ 0x85b
+ bl FlagSet
+ ldr r0, ._50 + 104 @ 0x85c
+ bl FlagSet
+ ldr r0, ._50 + 108 @ 0x83c
+ bl FlagSet
+ ldr r0, ._50 + 112 @ 0x83d
+ bl FlagSet
+ ldr r0, ._50 + 116 @ 0x83e
+ bl FlagSet
+ ldr r0, ._50 + 120 @ 0x83f
+ bl FlagSet
+ mov r0, #0x84
+ lsl r0, r0, #0x4
+ bl FlagSet
+ ldr r0, ._50 + 124 @ 0x841
+ bl FlagSet
+ ldr r0, ._50 + 128 @ 0x842
+ bl FlagSet
+ ldr r0, ._50 + 132 @ 0x843
+ bl FlagSet
+ ldr r0, ._50 + 136 @ 0x844
+ bl FlagSet
+ ldr r0, ._50 + 140 @ 0x845
+ bl FlagSet
+ ldr r0, ._50 + 144 @ 0x846
+ bl FlagSet
+ ldr r0, ._50 + 148 @ 0x847
+ bl FlagSet
+ ldr r0, ._50 + 152 @ 0x83b
+ bl FlagSet
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._51:
+ .align 2, 0
+._50:
+ .word 0x80f
+ .word 0x811
+ .word 0x812
+ .word 0x813
+ .word 0x814
+ .word 0x815
+ .word 0x816
+ .word 0x817
+ .word 0x818
+ .word 0x819
+ .word 0x81a
+ .word 0x81b
+ .word 0x81c
+ .word 0x81d
+ .word 0x81e
+ .word 0x848
+ .word 0x849
+ .word 0x84a
+ .word 0x854
+ .word 0x855
+ .word 0x856
+ .word 0x857
+ .word 0x858
+ .word 0x859
+ .word 0x85a
+ .word 0x85b
+ .word 0x85c
+ .word 0x83c
+ .word 0x83d
+ .word 0x83e
+ .word 0x83f
+ .word 0x841
+ .word 0x842
+ .word 0x843
+ .word 0x844
+ .word 0x845
+ .word 0x846
+ .word 0x847
+ .word 0x83b
+
+ thumb_func_end TayaDebugMenu_TownFlags
+
+ thumb_func_start TayaDebugMenu_AwardARibbon
+TayaDebugMenu_AwardARibbon:
+ push {lr}
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x10
+ mov r2, #0x0
+ bl BlendPalettes
+ ldr r0, ._52 @ debug_sub_80915BC
+ bl SetMainCallback2
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._53:
+ .align 2, 0
+._52:
+ .word debug_sub_80915BC+1
+
+ thumb_func_end TayaDebugMenu_AwardARibbon
+
+ thumb_func_start debug_sub_8090C44
+debug_sub_8090C44:
+ push {r4, r5, lr}
+ ldr r4, ._54 @ gSharedMem
+ sub r5, r4, #1
+ ldrh r1, [r5, #0x8]
+ add r0, r4, #0
+ mov r2, #0x2
+ mov r3, #0x5
+ bl ConvertIntToDecimalStringN
+ add r0, r4, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0x0
+ mov r2, #0x5
+ bl StringFill
+ ldrb r0, [r5]
+ add r0, r0, r4
+ mov r1, #0x79
+ strb r1, [r0]
+ add r0, r4, #0
+ mov r1, #0x1
+ mov r2, #0x3
+ bl Menu_PrintText
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._55:
+ .align 2, 0
+._54:
+ .word gSharedMem+1
+
+ thumb_func_end debug_sub_8090C44
+
+ thumb_func_start debug_sub_8090C88
+debug_sub_8090C88:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x1
+ mov r8, r0
+ ldr r2, ._59 @ gMain
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ add r3, r2, #0
+ cmp r0, #0
+ beq ._57 @cond_branch
+ ldr r1, ._59 + 4 @ gSharedMem
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._57 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ b ._62
+._60:
+ .align 2, 0
+._59:
+ .word gMain
+ .word gSharedMem
+._67:
+ add r0, r0, #0x1
+ strb r0, [r1]
+ b ._62
+._77:
+ strh r1, [r7, #0x8]
+ b ._62
+._79:
+ ldr r0, ._64 @ gSharedMem
+ ldrh r0, [r0, #0x8]
+ bl SetLotteryNumber16_Unused
+._78:
+ bl CloseMenu
+ mov r0, #0x1
+ b ._63
+._65:
+ .align 2, 0
+._64:
+ .word gSharedMem
+._57:
+ ldrh r1, [r3, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._66 @cond_branch
+ ldr r1, ._81 @ gSharedMem
+ ldrb r0, [r1]
+ cmp r0, #0x3
+ bls ._67 @cond_branch
+._66:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._68 @cond_branch
+ ldr r0, ._81 @ gSharedMem
+ ldrh r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ ldr r1, ._81 + 4 @ 0x2710
+ strh r1, [r0, #0x10]
+ mov r4, #0x0
+ ldrb r1, [r0]
+ add r7, r0, #0
+ cmp r4, r1
+ bcs ._69 @cond_branch
+ add r5, r7, #0
+ add r6, r1, #0
+._70:
+ ldrh r0, [r5, #0x10]
+ mov r1, #0xa
+ str r3, [sp]
+ bl __udivsi3
+ strh r0, [r5, #0x10]
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r3, [sp]
+ cmp r4, r6
+ bcc ._70 @cond_branch
+._69:
+ ldrh r1, [r7, #0x10]
+ ldr r0, [r7, #0xc]
+ add r0, r0, r1
+ str r0, [r7, #0xc]
+ ldr r1, ._81 + 8 @ 0xffff
+ cmp r0, r1
+ ble ._71 @cond_branch
+ str r1, [r7, #0xc]
+._71:
+ ldrh r0, [r7, #0x8]
+ ldr r1, [r7, #0xc]
+ cmp r0, r1
+ bne ._77 @cond_branch
+._68:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._73 @cond_branch
+ ldr r0, ._81 @ gSharedMem
+ ldrh r1, [r0, #0x8]
+ str r1, [r0, #0xc]
+ ldr r1, ._81 + 4 @ 0x2710
+ strh r1, [r0, #0x10]
+ mov r4, #0x0
+ ldrb r1, [r0]
+ add r7, r0, #0
+ cmp r4, r1
+ bcs ._74 @cond_branch
+ add r5, r7, #0
+ add r6, r1, #0
+._75:
+ ldrh r0, [r5, #0x10]
+ mov r1, #0xa
+ str r3, [sp]
+ bl __udivsi3
+ strh r0, [r5, #0x10]
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r3, [sp]
+ cmp r4, r6
+ bcc ._75 @cond_branch
+._74:
+ add r2, r7, #0
+ ldrh r1, [r2, #0x10]
+ ldr r0, [r2, #0xc]
+ sub r0, r0, r1
+ str r0, [r2, #0xc]
+ cmp r0, #0
+ bge ._76 @cond_branch
+ mov r0, #0x0
+ str r0, [r2, #0xc]
+._76:
+ ldrh r0, [r2, #0x8]
+ ldr r1, [r2, #0xc]
+ cmp r0, r1
+ bne ._77 @cond_branch
+._73:
+ ldrh r2, [r3, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._78 @cond_branch
+ mov r0, #0x1
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._79 @cond_branch
+ mov r0, #0x0
+ mov r8, r0
+._62:
+ mov r0, r8
+ cmp r0, #0
+ beq ._80 @cond_branch
+ bl debug_sub_8090C44
+._80:
+ mov r0, #0x0
+._63:
+ add sp, sp, #0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._82:
+ .align 2, 0
+._81:
+ .word gSharedMem
+ .word 0x2710
+ .word 0xffff
+
+ thumb_func_end debug_sub_8090C88
+
+ thumb_func_start TayaDebugMenu_PKMNLottery
+TayaDebugMenu_PKMNLottery:
+ push {lr}
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x6
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ bl RetrieveLotteryNumber
+ ldr r2, ._83 @ gSharedMem
+ ldr r0, ._83 + 4 @ gSpecialVar_Result
+ ldrh r0, [r0]
+ mov r1, #0x0
+ strh r0, [r2, #0x8]
+ strb r1, [r2]
+ bl debug_sub_8090C44
+ ldr r1, ._83 + 8 @ gMenuCallback
+ ldr r0, ._83 + 12 @ debug_sub_8090C88
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._84:
+ .align 2, 0
+._83:
+ .word gSharedMem
+ .word gSpecialVar_Result
+ .word gMenuCallback
+ .word debug_sub_8090C88+1
+
+ thumb_func_end TayaDebugMenu_PKMNLottery
+
+ thumb_func_start TayaDebugMenu_Trainer
+TayaDebugMenu_Trainer:
+ push {r4, r5, lr}
+ mov r4, #0x0
+ ldr r5, ._86 @ gTrainerEyeTrainers
+._85:
+ lsl r0, r4, #0x4
+ add r0, r0, r5
+ ldrh r0, [r0]
+ bl SetTrainerFlag
+ add r0, r4, #1
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0x37
+ bls ._85 @cond_branch
+ ldr r0, ._86 + 4 @ 0x109
+ bl SetTrainerFlag
+ mov r0, #0x85
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 8 @ 0x10b
+ bl SetTrainerFlag
+ mov r0, #0x86
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 12 @ 0x10d
+ bl SetTrainerFlag
+ mov r0, #0x87
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 16 @ 0x10f
+ bl SetTrainerFlag
+ mov r0, #0x88
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 20 @ 0x105
+ bl SetTrainerFlag
+ mov r0, #0x83
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 24 @ 0x107
+ bl SetTrainerFlag
+ mov r0, #0x84
+ lsl r0, r0, #0x1
+ bl SetTrainerFlag
+ ldr r0, ._86 + 28 @ 0x14f
+ bl SetTrainerFlag
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+._87:
+ .align 2, 0
+._86:
+ .word gTrainerEyeTrainers
+ .word 0x109
+ .word 0x10b
+ .word 0x10d
+ .word 0x10f
+ .word 0x105
+ .word 0x107
+ .word 0x14f
+
+ thumb_func_end TayaDebugMenu_Trainer
+
+ thumb_func_start TayaDebugMenu_PokenavD
+TayaDebugMenu_PokenavD:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xffffffe4
+ bl Menu_DisplayDialogueFrame
+ mov r0, #0x0
+ mov sl, r0
+ mov r6, #0x1
+ mov r7, #0xff
+ mov r1, #0x3
+ mov r9, r1
+._93:
+ ldr r4, ._94 @ gSharedMem
+ add r0, r4, #0
+ ldr r1, ._94 + 4 @ gUnknown_Debug_083C4F94
+ bl StringCopy
+ mov r5, sl
+ add r5, r5, #0x1
+ add r1, r5, r4
+ mov r0, #0xff
+ strb r0, [r1]
+ add r0, r4, #0
+ mov r1, #0x2
+ mov r2, #0xf
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r8, r0
+ str r5, [sp, #0x14]
+ mov r1, sl
+ lsl r1, r1, #0x2
+ str r1, [sp, #0x18]
+._91:
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ add r0, r0, #0x1
+ str r0, [sp, #0x10]
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x64
+ bl __umodsi3
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ bl Random
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xc1
+ lsl r1, r1, #0x1
+ bl __umodsi3
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #0xfb
+ bls ._89 @cond_branch
+ add r0, r3, #0
+ add r0, r0, #0x19
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ ldr r0, ._94 + 8 @ 0x19b
+ cmp r3, r0
+ bls ._89 @cond_branch
+ mov r3, #0x1
+._89:
+ ldr r0, [sp, #0x18]
+ add r0, r0, sl
+ lsl r4, r0, #0x4
+ sub r4, r4, r0
+ lsl r4, r4, #0x5
+ mov r1, r8
+ lsl r0, r1, #0x2
+ add r0, r0, r8
+ lsl r0, r0, #0x4
+ ldr r1, ._94 + 12 @ gPokemonStorage
+ add r0, r0, r1
+ add r4, r4, r0
+ lsl r2, r5, #0x18
+ lsr r2, r2, #0x18
+ mov r0, #0x0
+ str r0, [sp]
+ str r0, [sp, #0x4]
+ str r6, [sp, #0x8]
+ ldr r0, [sp, #0x10]
+ str r0, [sp, #0xc]
+ add r0, r4, #0
+ add r1, r3, #0
+ mov r3, #0x20
+ bl CreateBoxMon
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x16
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x17
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x18
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x21
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x2f
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r7, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x30
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ mov r1, r9
+ and r1, r1, r0
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x32
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ mov r1, r9
+ and r1, r1, r0
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x33
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ mov r1, r9
+ and r1, r1, r0
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x34
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ mov r1, r9
+ and r1, r1, r0
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x36
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ mov r1, r9
+ and r1, r1, r0
+ add r1, r1, #0x1
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x35
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x43
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x44
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x45
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x46
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x47
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x48
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x49
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4a
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4b
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4c
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4d
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ bl Random
+ add r1, r6, #0
+ and r1, r1, r0
+ str r1, [sp, #0x10]
+ add r0, r4, #0
+ mov r1, #0x4e
+ add r2, sp, #0x10
+ bl SetBoxMonData
+ mov r0, r8
+ add r0, r0, #0x1
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r8, r0
+ cmp r0, #0x1d
+ bhi ._90 @cond_branch
+ b ._91
+._90:
+ ldr r1, [sp, #0x14]
+ lsl r0, r1, #0x10
+ lsr r0, r0, #0x10
+ mov sl, r0
+ cmp r0, #0xd
+ bhi ._92 @cond_branch
+ b ._93
+._92:
+ bl TayaDebugMenu_TownFlags
+ bl TayaDebugMenu_Trainer
+ bl CloseMenu
+ mov r0, #0x1
+ add sp, sp, #0x1c
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._95:
+ .align 2, 0
+._94:
+ .word gSharedMem
+ .word gUnknown_Debug_083C4F94
+ .word 0x19b
+ .word gPokemonStorage+0x4
+
+ thumb_func_end TayaDebugMenu_PokenavD
+
+ thumb_func_start TayaDebugMenu_8091190
+TayaDebugMenu_8091190:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r3, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r3, r0
+ beq ._96 @cond_branch
+ add r0, r0, #0x1
+ cmp r3, r0
+ beq ._97 @cond_branch
+ ldr r2, ._99 @ gMenuCallback
+ ldr r1, ._99 + 4 @ gUnknown_Debug_83C5068
+ ldr r0, ._99 + 8 @ unk_2030224
+ ldrb r0, [r0]
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, [r0]
+ lsl r0, r3, #0x3
+ add r0, r0, r1
+ ldr r0, [r0, #0x4]
+ str r0, [r2]
+._106:
+ mov r0, #0x0
+ b ._98
+._100:
+ .align 2, 0
+._99:
+ .word gMenuCallback
+ .word gUnknown_Debug_83C5068
+ .word unk_2030224
+._96:
+ ldr r3, ._107 @ unk_2030224
+ ldrb r4, [r3]
+ ldr r2, ._107 + 4 @ gMain
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ add r5, r3, #0
+ cmp r0, #0
+ beq ._102 @cond_branch
+ sub r0, r4, #1
+ strb r0, [r5]
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bge ._102 @cond_branch
+ mov r0, #0x1
+ strb r0, [r5]
+._102:
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._104 @cond_branch
+ ldrb r0, [r5]
+ add r0, r0, #0x1
+ strb r0, [r5]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bls ._104 @cond_branch
+ mov r0, #0x0
+ strb r0, [r5]
+._104:
+ lsl r0, r4, #0x18
+ asr r0, r0, #0x18
+ mov r1, #0x0
+ ldrsb r1, [r5, r1]
+ cmp r0, r1
+ beq ._106 @cond_branch
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xb
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r4, ._107 + 8 @ gUnknown_Debug_83C5068
+ mov r0, #0x0
+ ldrsb r0, [r5, r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r4
+ ldrb r2, [r0, #0x4]
+ ldr r3, [r0]
+ mov r0, #0x1
+ mov r1, #0x1
+ bl Menu_PrintItems
+ mov r0, #0x0
+ ldrsb r0, [r5, r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r4
+ ldrb r3, [r0, #0x4]
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl InitMenu
+ b ._106
+._108:
+ .align 2, 0
+._107:
+ .word unk_2030224
+ .word gMain
+ .word gUnknown_Debug_83C5068
+._97:
+ bl CloseMenu
+ mov r0, #0x1
+._98:
+ add sp, sp, #0x8
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end TayaDebugMenu_8091190
+
+ thumb_func_start InitTayaDebugWindow
+InitTayaDebugWindow:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ ldr r1, ._109 @ unk_2030224
+ mov r0, #0x0
+ strb r0, [r1]
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xb
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._109 + 4 @ gUnknown_Debug_83C5068
+ ldr r3, [r0]
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xa
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._109 + 8 @ gMenuCallback
+ ldr r0, ._109 + 12 @ TayaDebugMenu_8091190
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._110:
+ .align 2, 0
+._109:
+ .word unk_2030224
+ .word gUnknown_Debug_83C5068
+ .word gMenuCallback
+ .word TayaDebugMenu_8091190+1
+
+ thumb_func_end InitTayaDebugWindow
+
+ thumb_func_start debug_sub_80912D8
+debug_sub_80912D8:
+ push {lr}
+ ldr r0, ._113 @ gPaletteFade
+ ldrb r1, [r0, #0x7]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._111 @cond_branch
+ mov r0, #0x0
+ b ._112
+._114:
+ .align 2, 0
+._113:
+ .word gPaletteFade
+._111:
+ ldr r0, ._115 @ debug_sub_8110F28
+ bl SetMainCallback2
+ mov r0, #0x1
+._112:
+ pop {r1}
+ bx r1
+._116:
+ .align 2, 0
+._115:
+ .word debug_sub_8110F28+1
+
+ thumb_func_end debug_sub_80912D8
+
+ thumb_func_start debug_sub_8091300
+debug_sub_8091300:
+ push {lr}
+ mov r0, #0x1
+ mov r1, #0x0
+ bl FadeScreen
+ ldr r1, ._117 @ gMenuCallback
+ ldr r0, ._117 + 4 @ debug_sub_80912D8
+ str r0, [r1]
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+._118:
+ .align 2, 0
+._117:
+ .word gMenuCallback
+ .word debug_sub_80912D8+1
+
+ thumb_func_end debug_sub_8091300
+
+ thumb_func_start debug_sub_8091320
+debug_sub_8091320:
+ push {lr}
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_8091320
+
+ thumb_func_start debug_sub_8091334
+debug_sub_8091334:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ bl AnimateSprites
+ bl BuildOamBuffer
+ ldr r3, ._123 @ gSharedMem
+ add r0, r3, #0
+ add r0, r0, #0x52
+ ldrb r4, [r0]
+ cmp r4, #0
+ beq ._119 @cond_branch
+ cmp r4, #0x1
+ bne ._120 @cond_branch
+ b ._121
+._120:
+ b ._162
+._124:
+ .align 2, 0
+._123:
+ .word gSharedMem
+._119:
+ add r5, r3, #0
+ add r5, r5, #0x55
+ strb r4, [r5]
+ ldr r2, ._131 @ gMain
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ mov r9, r2
+ cmp r0, #0
+ beq ._126 @cond_branch
+ add r1, r3, #0
+ add r1, r1, #0x54
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._126 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ mov r0, #0x1
+ strb r0, [r5]
+._126:
+ mov r0, r9
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ ldr r5, ._131 + 4 @ gSharedMem
+ cmp r0, #0
+ beq ._133 @cond_branch
+ add r0, r5, #0
+ add r0, r0, #0x53
+ ldrb r0, [r0]
+ cmp r0, #0x2
+ beq ._128 @cond_branch
+ add r1, r5, #0
+ add r1, r1, #0x54
+ ldrb r0, [r1]
+ cmp r0, #0x4
+ bhi ._133 @cond_branch
+ b ._130
+._132:
+ .align 2, 0
+._131:
+ .word gMain
+ .word gSharedMem
+._128:
+ add r1, r5, #0
+ add r1, r1, #0x54
+ ldrb r0, [r1]
+ cmp r0, #0x3
+ bhi ._133 @cond_branch
+._130:
+ add r0, r0, #0x1
+ strb r0, [r1]
+ add r1, r1, #0x1
+ mov r0, #0x1
+ strb r0, [r1]
+._133:
+ mov r2, r9
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._135 @cond_branch
+ add r1, r5, #0
+ add r1, r1, #0x53
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._135 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x1
+ strb r0, [r1]
+._135:
+ mov r3, r9
+ ldrh r1, [r3, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._140 @cond_branch
+ add r0, r5, #0
+ add r0, r0, #0x54
+ ldrb r0, [r0]
+ cmp r0, #0x5
+ beq ._137 @cond_branch
+ add r1, r5, #0
+ add r1, r1, #0x53
+ ldrb r0, [r1]
+ cmp r0, #0x1
+ bhi ._140 @cond_branch
+ b ._139
+._137:
+ add r1, r5, #0
+ add r1, r1, #0x53
+ ldrb r0, [r1]
+ cmp r0, #0
+ bne ._140 @cond_branch
+._139:
+ add r0, r0, #0x1
+ strb r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x1
+ strb r0, [r1]
+._140:
+ add r0, r5, #0
+ add r0, r0, #0x55
+ ldrb r0, [r0]
+ cmp r0, #0
+ bne ._141 @cond_branch
+ mov r0, r9
+ ldrh r2, [r0, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._142 @cond_branch
+ ldr r2, ._145 @ gUnknown_Debug_083C50EC
+ add r3, r5, #0
+ add r3, r3, #0x53
+ add r0, r5, #0
+ add r0, r0, #0x54
+ ldrb r1, [r0]
+ lsl r0, r1, #0x1
+ add r0, r0, r1
+ ldrb r3, [r3]
+ add r0, r0, r3
+ lsl r0, r0, #0x3
+ add r0, r0, r2
+ ldrh r0, [r0, #0x4]
+ sub r0, r0, #0x32
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ cmp r0, #0x4
+ bhi ._143 @cond_branch
+ add r1, r5, #0
+ add r1, r1, #0x56
+ mov r0, #0x4
+ b ._144
+._146:
+ .align 2, 0
+._145:
+ .word gUnknown_Debug_083C50EC
+._143:
+ add r1, r5, #0
+ add r1, r1, #0x56
+ mov r0, #0x1
+._144:
+ strb r0, [r1]
+ add r1, r5, #0
+ add r1, r1, #0x52
+ mov r0, #0x1
+ strb r0, [r1]
+ b ._162
+._142:
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._148 @cond_branch
+ b ._162
+._148:
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x10
+ mov r2, #0x0
+ bl BlendPalettes
+ ldr r0, ._151 @ sub_80546F0
+ bl SetMainCallback2
+ b ._162
+._152:
+ .align 2, 0
+._151:
+ .word sub_80546F0+1
+._121:
+ add r5, r3, #0
+ add r5, r5, #0x55
+ mov r0, #0x0
+ strb r0, [r5]
+ ldr r2, ._159 @ gMain
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ mov r9, r2
+ cmp r0, #0
+ beq ._154 @cond_branch
+ add r2, r3, #0
+ add r2, r2, #0x53
+ add r0, r3, #0
+ add r0, r0, #0x54
+ ldrb r1, [r0]
+ lsl r0, r1, #0x1
+ add r0, r0, r1
+ ldrb r2, [r2]
+ add r0, r0, r2
+ add r2, r0, r3
+ add r0, r3, #0
+ add r0, r0, #0x56
+ ldrb r1, [r2]
+ ldrb r0, [r0]
+ cmp r1, r0
+ bcs ._154 @cond_branch
+ add r0, r1, #1
+ strb r0, [r2]
+ strb r4, [r5]
+._154:
+ mov r2, r9
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ ldr r5, ._159 + 4 @ gSharedMem
+ cmp r0, #0
+ beq ._156 @cond_branch
+ add r2, r5, #0
+ add r2, r2, #0x53
+ add r0, r5, #0
+ add r0, r0, #0x54
+ ldrb r1, [r0]
+ lsl r0, r1, #0x1
+ add r0, r0, r1
+ ldrb r2, [r2]
+ add r0, r0, r2
+ add r1, r0, r5
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._156 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ add r1, r5, #0
+ add r1, r1, #0x55
+ mov r0, #0x1
+ strb r0, [r1]
+._156:
+ add r6, r5, #0
+ add r0, r6, #0
+ add r0, r0, #0x55
+ ldrb r7, [r0]
+ cmp r7, #0
+ beq ._157 @cond_branch
+._141:
+ bl debug_sub_80916AC
+ b ._162
+._160:
+ .align 2, 0
+._159:
+ .word gMain
+ .word gSharedMem
+._157:
+ mov r3, r9
+ ldrh r1, [r3, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._161 @cond_branch
+ ldr r0, ._164 @ gPlayerParty
+ ldr r1, ._164 + 4 @ gUnknown_Debug_083C50EC
+ mov ip, r1
+ mov r2, #0x53
+ add r2, r2, r6
+ mov r8, r2
+ add r4, r6, #0
+ add r4, r4, #0x54
+ ldrb r2, [r4]
+ lsl r1, r2, #0x1
+ add r1, r1, r2
+ mov r3, r8
+ ldrb r3, [r3]
+ add r1, r1, r3
+ lsl r1, r1, #0x3
+ add r1, r1, ip
+ ldrh r1, [r1, #0x4]
+ bl GetMonData
+ ldrb r2, [r4]
+ lsl r1, r2, #0x1
+ add r1, r1, r2
+ mov r2, r8
+ ldrb r2, [r2]
+ add r1, r1, r2
+ add r1, r1, r6
+ strb r0, [r1]
+ bl debug_sub_80916AC
+ add r0, r6, #0
+ add r0, r0, #0x52
+ strb r7, [r0]
+._161:
+ mov r3, r9
+ ldrh r1, [r3, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._162 @cond_branch
+ ldr r2, ._164 + 4 @ gUnknown_Debug_083C50EC
+ add r0, r6, #0
+ add r0, r0, #0x53
+ ldrb r4, [r0]
+ add r0, r0, #0x1
+ ldrb r1, [r0]
+ lsl r0, r1, #0x1
+ add r3, r0, r1
+ add r0, r3, r4
+ lsl r0, r0, #0x3
+ add r1, r0, r2
+ ldrh r0, [r1, #0x4]
+ cmp r0, #0
+ beq ._163 @cond_branch
+ ldr r0, ._164 @ gPlayerParty
+ ldrh r1, [r1, #0x4]
+ add r2, r4, r6
+ add r2, r3, r2
+ bl SetMonData
+._163:
+ add r0, r5, #0
+ add r0, r0, #0x52
+ strb r7, [r0]
+._162:
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._165:
+ .align 2, 0
+._164:
+ .word gPlayerParty
+ .word gUnknown_Debug_083C50EC
+
+ thumb_func_end debug_sub_8091334
+
+ thumb_func_start debug_sub_80915BC
+debug_sub_80915BC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ ldr r0, ._168 @ 0x4000010
+ mov r1, #0x0
+ strh r1, [r0]
+ add r0, r0, #0x2
+ strh r1, [r0]
+ mov r1, #0x0
+ ldr r0, ._168 + 4 @ gUnknown_Debug_083C50EC
+ mov r8, r0
+ ldr r7, ._168 + 8 @ gSharedMem
+._171:
+ mov r4, #0x0
+ lsl r0, r1, #0x1
+ add r6, r1, #1
+ add r5, r0, r1
+._170:
+ add r0, r5, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r8
+ ldrh r1, [r0, #0x4]
+ cmp r1, #0
+ beq ._166 @cond_branch
+ ldr r0, ._168 + 12 @ gPlayerParty
+ bl GetMonData
+ add r1, r4, r5
+ add r1, r1, r7
+ strb r0, [r1]
+ b ._167
+._169:
+ .align 2, 0
+._168:
+ .word 0x4000010
+ .word gUnknown_Debug_083C50EC
+ .word gSharedMem
+ .word gPlayerParty
+._166:
+ add r0, r4, r5
+ add r0, r0, r7
+ strb r1, [r0]
+._167:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x2
+ bls ._170 @cond_branch
+ lsl r0, r6, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x5
+ bls ._171 @cond_branch
+ ldr r4, ._172 @ gWindowTemplate_81E7224
+ add r0, r4, #0
+ bl Text_LoadWindowTemplate
+ add r0, r4, #0
+ bl InitMenuWindow
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x3
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._172 + 4 @ gUnknown_Debug_083C517C
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r1, #0x4
+ mov r2, #0x1d
+ mov r3, #0x11
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0x12
+ mov r2, #0x1d
+ mov r3, #0x15
+ bl Menu_DrawStdWindowFrame
+ mov r1, #0x80
+ lsl r1, r1, #0x13
+ mov r2, #0x8a
+ lsl r2, r2, #0x5
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r2, ._172 + 8 @ gSharedMem
+ add r0, r2, #0
+ add r0, r0, #0x53
+ mov r1, #0x0
+ strb r1, [r0]
+ add r0, r0, #0x1
+ strb r1, [r0]
+ sub r0, r0, #0x2
+ strb r1, [r0]
+ bl debug_sub_80916AC
+ ldr r0, ._172 + 12 @ debug_sub_8091320
+ bl SetVBlankCallback
+ ldr r0, ._172 + 16 @ debug_sub_8091334
+ bl SetMainCallback2
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._173:
+ .align 2, 0
+._172:
+ .word gWindowTemplate_81E7224
+ .word gUnknown_Debug_083C517C
+ .word gSharedMem
+ .word debug_sub_8091320+1
+ .word debug_sub_8091334+1
+
+ thumb_func_end debug_sub_80915BC
+
+ thumb_func_start debug_sub_80916AC
+debug_sub_80916AC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xfffffffc
+ mov r6, #0x0
+ ldr r0, ._177 @ gSharedMem
+ mov sl, r0
+ mov r1, #0x0
+ mov r8, r1
+._182:
+ ldr r2, ._177 + 4 @ gSharedMem
+ mov r5, #0x0
+ lsl r0, r6, #0x1
+ mov r9, r0
+ add r1, r6, #1
+ str r1, [sp]
+._181:
+ mov r0, sl
+ add r0, r0, #0x53
+ ldrb r0, [r0]
+ cmp r0, r5
+ bne ._175 @cond_branch
+ ldr r1, ._177 + 8 @ gSharedMem
+ ldrb r0, [r1]
+ cmp r0, r6
+ bne ._175 @cond_branch
+ mov r0, #0xef
+ b ._176
+._178:
+ .align 2, 0
+._177:
+ .word gSharedMem
+ .word gSharedMem+0x12
+ .word gSharedMem+0x54
+._175:
+ mov r0, r8
+ strb r0, [r2]
+ add r2, r2, #0x1
+._176:
+ strb r0, [r2]
+ add r2, r2, #0x1
+ mov r1, r9
+ add r4, r1, r6
+ add r0, r4, r5
+ lsl r0, r0, #0x3
+ ldr r1, ._183 @ gUnknown_Debug_083C50EC
+ add r0, r0, r1
+ ldr r1, [r0]
+ add r0, r2, #0
+ bl StringCopy
+ add r2, r0, #0
+ mov r0, r8
+ strb r0, [r2]
+ add r2, r2, #0x1
+ ldr r7, ._183 + 4 @ gSharedMem
+ add r4, r5, r4
+ add r4, r4, r7
+ ldrb r1, [r4]
+ add r0, r2, #0
+ mov r2, #0x0
+ mov r3, #0x1
+ bl ConvertIntToDecimalStringN
+ add r2, r0, #0
+ mov r1, r8
+ strb r1, [r2]
+ add r2, r2, #0x1
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x2
+ bhi ._179 @cond_branch
+ cmp r6, #0x5
+ bne ._181 @cond_branch
+ cmp r5, #0x2
+ bne ._181 @cond_branch
+._179:
+ sub r1, r2, #1
+ mov r0, #0xff
+ strb r0, [r1]
+ mov r2, r9
+ add r2, r2, #0x5
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ add r0, r7, #0
+ add r0, r0, #0x12
+ mov r1, #0x1
+ bl Menu_PrintText
+ ldr r1, [sp]
+ lsl r0, r1, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x5
+ bls ._182 @cond_branch
+ add sp, sp, #0x4
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._184:
+ .align 2, 0
+._183:
+ .word gUnknown_Debug_083C50EC
+ .word gSharedMem
+
+ thumb_func_end debug_sub_80916AC
+
+ .align 2, 0
+
+.endif
diff --git a/asm/tomomichi_debug_menu.s b/asm/tomomichi_debug_menu.s
new file mode 100644
index 000000000..c0dfe38e0
--- /dev/null
+++ b/asm/tomomichi_debug_menu.s
@@ -0,0 +1,8100 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ thumb_func_start InitTomomichiDebugWindow
+InitTomomichiDebugWindow:
+ push {lr}
+ bl debug_sub_808B874
+ mov r0, #0x0
+ pop {r1}
+ bx r1
+
+ thumb_func_end InitTomomichiDebugWindow
+
+ thumb_func_start debug_sub_808B868
+debug_sub_808B868:
+ push {lr}
+ bl c2_exit_to_overworld_1_continue_scripts_restart_music
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808B868
+
+ thumb_func_start debug_sub_808B874
+debug_sub_808B874:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xd
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._1 @ gUnknown_Debug_083C0CBA
+ mov r0, #0x1
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ ldr r0, ._1 + 4 @ gDebug_0300071D
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._1 + 8 @ gMenuCallback
+ ldr r0, ._1 + 12 @ debug_sub_808B8C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._2:
+ .align 2, 0
+._1:
+ .word gUnknown_Debug_083C0CBA
+ .word gDebug_0300071D
+ .word gMenuCallback
+ .word debug_sub_808B8C8+1
+
+ thumb_func_end debug_sub_808B874
+
+ thumb_func_start debug_sub_808B8C8
+debug_sub_808B8C8:
+ push {r4, lr}
+ ldr r4, ._7 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._3 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+ ldr r1, ._7 + 4 @ gDebug_0300071D
+ strb r0, [r1]
+._3:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._4 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ bl Menu_MoveCursor
+ ldr r1, ._7 + 4 @ gDebug_0300071D
+ strb r0, [r1]
+._4:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._5 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._7 + 8 @ gUnknown_Debug_083C0CBA
+ ldr r0, ._7 + 4 @ gDebug_0300071D
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r1, r1, #0x4
+ add r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._10
+._8:
+ .align 2, 0
+._7:
+ .word gMain
+ .word gDebug_0300071D
+ .word gUnknown_Debug_083C0CBA
+._5:
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._9 @cond_branch
+ mov r0, #0x0
+ b ._10
+._9:
+ bl CloseMenu
+ mov r0, #0x1
+._10:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808B8C8
+
+ thumb_func_start TomomichiDebugMenu_ContestGraphics
+TomomichiDebugMenu_ContestGraphics:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x14
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._11 @ gUnknown_Debug_083C0CF4
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._11 + 4 @ gUnknown_Debug_083C0D2C
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x4
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x4
+ bl InitMenu
+ ldr r1, ._11 + 8 @ gMenuCallback
+ ldr r0, ._11 + 12 @ debug_sub_808BC48
+ str r0, [r1]
+ ldr r0, ._11 + 16 @ gDebug_03000700
+ mov r2, #0x1
+ strh r2, [r0]
+ ldr r1, ._11 + 20 @ gDebug_03000704
+ ldr r0, ._11 + 24 @ 0x6f33
+ str r0, [r1]
+ ldr r0, ._11 + 28 @ gDebug_03000708
+ str r4, [r0]
+ ldr r0, ._11 + 32 @ gDebug_0300070C
+ strb r2, [r0]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._12:
+ .align 2, 0
+._11:
+ .word gUnknown_Debug_083C0CF4
+ .word gUnknown_Debug_083C0D2C
+ .word gMenuCallback
+ .word debug_sub_808BC48+1
+ .word gDebug_03000700
+ .word gDebug_03000704
+ .word 0x6f33
+ .word gDebug_03000708
+ .word gDebug_0300070C
+
+ thumb_func_end TomomichiDebugMenu_ContestGraphics
+
+ thumb_func_start TomomichiDebugMenu_ArtMusGraphics
+TomomichiDebugMenu_ArtMusGraphics:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x14
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._13 @ gUnknown_Debug_083C0D4C
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._13 + 4 @ gUnknown_Debug_083C0D83
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x4
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x4
+ bl InitMenu
+ ldr r1, ._13 + 8 @ gMenuCallback
+ ldr r0, ._13 + 12 @ debug_sub_808BCBC
+ str r0, [r1]
+ ldr r0, ._13 + 16 @ gDebug_03000700
+ mov r2, #0x1
+ strh r2, [r0]
+ ldr r1, ._13 + 20 @ gDebug_03000704
+ ldr r0, ._13 + 24 @ 0x6f33
+ str r0, [r1]
+ ldr r0, ._13 + 28 @ gDebug_03000708
+ str r4, [r0]
+ ldr r0, ._13 + 32 @ gDebug_0300070D
+ strb r2, [r0]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._14:
+ .align 2, 0
+._13:
+ .word gUnknown_Debug_083C0D4C
+ .word gUnknown_Debug_083C0D83
+ .word gMenuCallback
+ .word debug_sub_808BCBC+1
+ .word gDebug_03000700
+ .word gDebug_03000704
+ .word 0x6f33
+ .word gDebug_03000708
+ .word gDebug_0300070D
+
+ thumb_func_end TomomichiDebugMenu_ArtMusGraphics
+
+ thumb_func_start TomomichiDebugMenu_PreviewData
+TomomichiDebugMenu_PreviewData:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x14
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._15 @ gUnknown_Debug_083C0DA4
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._15 + 4 @ gUnknown_Debug_083C0DD4
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x4
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x13
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x4
+ bl InitMenu
+ ldr r1, ._15 + 8 @ gMenuCallback
+ ldr r0, ._15 + 12 @ debug_sub_808BD30
+ str r0, [r1]
+ ldr r0, ._15 + 16 @ gDebug_03000700
+ mov r2, #0x1
+ strh r2, [r0]
+ ldr r1, ._15 + 20 @ gDebug_03000704
+ ldr r0, ._15 + 24 @ 0x6f33
+ str r0, [r1]
+ ldr r0, ._15 + 28 @ gDebug_03000708
+ str r4, [r0]
+ ldr r0, ._15 + 32 @ gDebug_0300070E
+ strb r2, [r0]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._16:
+ .align 2, 0
+._15:
+ .word gUnknown_Debug_083C0DA4
+ .word gUnknown_Debug_083C0DD4
+ .word gMenuCallback
+ .word debug_sub_808BD30+1
+ .word gDebug_03000700
+ .word gDebug_03000704
+ .word 0x6f33
+ .word gDebug_03000708
+ .word gDebug_0300070E
+
+ thumb_func_end TomomichiDebugMenu_PreviewData
+
+ thumb_func_start TomomichiDebugMenu_TrickHouse
+TomomichiDebugMenu_TrickHouse:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._17 @ gUnknown_Debug_083C0DF4
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._17 + 4 @ gUnknown_Debug_083C0E15
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x2
+ bl Menu_PrintItems
+ ldr r0, ._17 + 8 @ gDebug_0300071E
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._17 + 12 @ gMenuCallback
+ ldr r0, ._17 + 16 @ debug_sub_808BDA4
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._18:
+ .align 2, 0
+._17:
+ .word gUnknown_Debug_083C0DF4
+ .word gUnknown_Debug_083C0E15
+ .word gDebug_0300071E
+ .word gMenuCallback
+ .word debug_sub_808BDA4+1
+
+ thumb_func_end TomomichiDebugMenu_TrickHouse
+
+ thumb_func_start TomomichiDebugMenu_ControlEvents
+TomomichiDebugMenu_ControlEvents:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._19 @ gUnknown_Debug_083C0E32
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ ldr r0, ._19 + 4 @ gDebug_0300071F
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._19 + 8 @ gMenuCallback
+ ldr r0, ._19 + 12 @ debug_sub_808BE2C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._20:
+ .align 2, 0
+._19:
+ .word gUnknown_Debug_083C0E32
+ .word gDebug_0300071F
+ .word gMenuCallback
+ .word debug_sub_808BE2C+1
+
+ thumb_func_end TomomichiDebugMenu_ControlEvents
+
+ thumb_func_start TomomichiDebugMenu_ControlFlags
+TomomichiDebugMenu_ControlFlags:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._21 @ gUnknown_Debug_083C0E7F
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ ldr r0, ._21 + 4 @ gDebug_03000720
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._21 + 8 @ gMenuCallback
+ ldr r0, ._21 + 12 @ debug_sub_808BEB4
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._22:
+ .align 2, 0
+._21:
+ .word gUnknown_Debug_083C0E7F
+ .word gDebug_03000720
+ .word gMenuCallback
+ .word debug_sub_808BEB4+1
+
+ thumb_func_end TomomichiDebugMenu_ControlFlags
+
+ thumb_func_start TomomichiDebugMenu_ControlWorks
+TomomichiDebugMenu_ControlWorks:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._23 @ gUnknown_Debug_083C0EF1
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ ldr r0, ._23 + 4 @ gDebug_03000721
+ ldrb r0, [r0]
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._23 + 8 @ gMenuCallback
+ ldr r0, ._23 + 12 @ debug_sub_808BF3C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._24:
+ .align 2, 0
+._23:
+ .word gUnknown_Debug_083C0EF1
+ .word gDebug_03000721
+ .word gMenuCallback
+ .word debug_sub_808BF3C+1
+
+ thumb_func_end TomomichiDebugMenu_ControlWorks
+
+ thumb_func_start debug_sub_808BC48
+debug_sub_808BC48:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0x1
+ beq ._25 @cond_branch
+ cmp r0, #0x1
+ bgt ._26 @cond_branch
+ cmp r0, #0
+ beq ._27 @cond_branch
+ b ._32
+._26:
+ cmp r0, #0x2
+ beq ._29 @cond_branch
+ b ._32
+._27:
+ bl debug_sub_808ED0C
+ b ._32
+._25:
+ bl debug_sub_808ED9C
+ b ._32
+._29:
+ bl debug_sub_808EE3C
+._32:
+ mov r0, #0x0
+ bl debug_sub_808EF8C
+ lsl r0, r4, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._36 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ bne ._34 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ b ._35
+._34:
+ cmp r1, #0x3
+ bne ._36 @cond_branch
+ ldr r0, ._37 @ gMenuCallback
+ ldr r1, ._37 + 4 @ gUnknown_Debug_083C0D2C
+ ldr r1, [r1, #0x1c]
+ str r1, [r0]
+._36:
+ mov r0, #0x0
+._35:
+ pop {r4}
+ pop {r1}
+ bx r1
+._38:
+ .align 2, 0
+._37:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C0D2C
+
+ thumb_func_end debug_sub_808BC48
+
+ thumb_func_start debug_sub_808BCBC
+debug_sub_808BCBC:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0x1
+ beq ._39 @cond_branch
+ cmp r0, #0x1
+ bgt ._40 @cond_branch
+ cmp r0, #0
+ beq ._41 @cond_branch
+ b ._46
+._40:
+ cmp r0, #0x2
+ beq ._43 @cond_branch
+ b ._46
+._41:
+ bl debug_sub_808ED0C
+ b ._46
+._39:
+ bl debug_sub_808ED9C
+ b ._46
+._43:
+ bl debug_sub_808EE9C
+._46:
+ mov r0, #0x1
+ bl debug_sub_808EF8C
+ lsl r0, r4, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._50 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ bne ._48 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ b ._49
+._48:
+ cmp r1, #0x3
+ bne ._50 @cond_branch
+ ldr r0, ._51 @ gMenuCallback
+ ldr r1, ._51 + 4 @ gUnknown_Debug_083C0D83
+ ldr r1, [r1, #0x1c]
+ str r1, [r0]
+._50:
+ mov r0, #0x0
+._49:
+ pop {r4}
+ pop {r1}
+ bx r1
+._52:
+ .align 2, 0
+._51:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C0D83
+
+ thumb_func_end debug_sub_808BCBC
+
+ thumb_func_start debug_sub_808BD30
+debug_sub_808BD30:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ asr r0, r0, #0x18
+ cmp r0, #0x1
+ beq ._53 @cond_branch
+ cmp r0, #0x1
+ bgt ._54 @cond_branch
+ cmp r0, #0
+ beq ._55 @cond_branch
+ b ._60
+._54:
+ cmp r0, #0x2
+ beq ._57 @cond_branch
+ b ._60
+._55:
+ bl debug_sub_808ED0C
+ b ._60
+._53:
+ bl debug_sub_808ED9C
+ b ._60
+._57:
+ bl debug_sub_808EF14
+._60:
+ mov r0, #0x2
+ bl debug_sub_808EF8C
+ lsl r0, r4, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ beq ._64 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ bne ._62 @cond_branch
+ bl CloseMenu
+ mov r0, #0x1
+ b ._63
+._62:
+ cmp r1, #0x3
+ bne ._64 @cond_branch
+ ldr r0, ._65 @ gMenuCallback
+ ldr r1, ._65 + 4 @ gUnknown_Debug_083C0DD4
+ ldr r1, [r1, #0x1c]
+ str r1, [r0]
+._64:
+ mov r0, #0x0
+._63:
+ pop {r4}
+ pop {r1}
+ bx r1
+._66:
+ .align 2, 0
+._65:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C0DD4
+
+ thumb_func_end debug_sub_808BD30
+
+ thumb_func_start debug_sub_808BDA4
+debug_sub_808BDA4:
+ push {r4, lr}
+ ldr r4, ._71 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._67 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+ ldr r1, ._71 + 4 @ gDebug_0300071E
+ strb r0, [r1]
+._67:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._68 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ bl Menu_MoveCursor
+ ldr r1, ._71 + 4 @ gDebug_0300071E
+ strb r0, [r1]
+._68:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._69 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._71 + 8 @ gUnknown_Debug_083C0E15
+ ldr r0, ._71 + 4 @ gDebug_0300071E
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r1, r1, #0x4
+ add r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._74
+._72:
+ .align 2, 0
+._71:
+ .word gMain
+ .word gDebug_0300071E
+ .word gUnknown_Debug_083C0E15
+._69:
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._73 @cond_branch
+ mov r0, #0x0
+ b ._74
+._73:
+ bl CloseMenu
+ mov r0, #0x1
+._74:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808BDA4
+
+ thumb_func_start debug_sub_808BE2C
+debug_sub_808BE2C:
+ push {r4, lr}
+ ldr r4, ._79 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._75 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+ ldr r1, ._79 + 4 @ gDebug_0300071F
+ strb r0, [r1]
+._75:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._76 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ bl Menu_MoveCursor
+ ldr r1, ._79 + 4 @ gDebug_0300071F
+ strb r0, [r1]
+._76:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._77 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._79 + 8 @ gUnknown_Debug_083C0E32
+ ldr r0, ._79 + 4 @ gDebug_0300071F
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r1, r1, #0x4
+ add r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._82
+._80:
+ .align 2, 0
+._79:
+ .word gMain
+ .word gDebug_0300071F
+ .word gUnknown_Debug_083C0E32
+._77:
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._81 @cond_branch
+ mov r0, #0x0
+ b ._82
+._81:
+ bl CloseMenu
+ mov r0, #0x1
+._82:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808BE2C
+
+ thumb_func_start debug_sub_808BEB4
+debug_sub_808BEB4:
+ push {r4, lr}
+ ldr r4, ._87 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._83 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+ ldr r1, ._87 + 4 @ gDebug_03000720
+ strb r0, [r1]
+._83:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._84 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ bl Menu_MoveCursor
+ ldr r1, ._87 + 4 @ gDebug_03000720
+ strb r0, [r1]
+._84:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._85 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._87 + 8 @ gUnknown_Debug_083C0E7F
+ ldr r0, ._87 + 4 @ gDebug_03000720
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r1, r1, #0x4
+ add r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._90
+._88:
+ .align 2, 0
+._87:
+ .word gMain
+ .word gDebug_03000720
+ .word gUnknown_Debug_083C0E7F
+._85:
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._89 @cond_branch
+ mov r0, #0x0
+ b ._90
+._89:
+ bl CloseMenu
+ mov r0, #0x1
+._90:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808BEB4
+
+ thumb_func_start debug_sub_808BF3C
+debug_sub_808BF3C:
+ push {r4, lr}
+ ldr r4, ._95 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._91 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ bl Menu_MoveCursor
+ ldr r1, ._95 + 4 @ gDebug_03000721
+ strb r0, [r1]
+._91:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._92 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ bl Menu_MoveCursor
+ ldr r1, ._95 + 4 @ gDebug_03000721
+ strb r0, [r1]
+._92:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._93 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._95 + 8 @ gUnknown_Debug_083C0EF1
+ ldr r0, ._95 + 4 @ gDebug_03000721
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r1, r1, #0x4
+ add r0, r0, r1
+ ldr r0, [r0]
+ bl _call_via_r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ b ._98
+._96:
+ .align 2, 0
+._95:
+ .word gMain
+ .word gDebug_03000721
+ .word gUnknown_Debug_083C0EF1
+._93:
+ mov r0, #0xa
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._97 @cond_branch
+ mov r0, #0x0
+ b ._98
+._97:
+ bl CloseMenu
+ mov r0, #0x1
+._98:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808BF3C
+
+ thumb_func_start debug_sub_808BFC4
+debug_sub_808BFC4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._99 @ gUnknown_Debug_083C0F79
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._99 + 4 @ gMenuCallback
+ ldr r0, ._99 + 8 @ debug_sub_808C064
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._100:
+ .align 2, 0
+._99:
+ .word gUnknown_Debug_083C0F79
+ .word gMenuCallback
+ .word debug_sub_808C064+1
+
+ thumb_func_end debug_sub_808BFC4
+
+ thumb_func_start debug_sub_808C014
+debug_sub_808C014:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._101 @ gUnknown_Debug_083C0FFC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._101 + 4 @ gMenuCallback
+ ldr r0, ._101 + 8 @ debug_sub_808C0A8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._102:
+ .align 2, 0
+._101:
+ .word gUnknown_Debug_083C0FFC
+ .word gMenuCallback
+ .word debug_sub_808C0A8+1
+
+ thumb_func_end debug_sub_808C014
+
+ thumb_func_start debug_sub_808C064
+debug_sub_808C064:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._103 @cond_branch
+ mov r0, #0x0
+ b ._106
+._103:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._105 @cond_branch
+ ldr r2, ._107 @ gMenuCallback
+ ldr r0, ._107 + 4 @ gUnknown_Debug_083C0F79
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._106
+._108:
+ .align 2, 0
+._107:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C0F79
+._105:
+ bl CloseMenu
+ mov r0, #0x1
+._106:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808C064
+
+ thumb_func_start debug_sub_808C0A8
+debug_sub_808C0A8:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._109 @cond_branch
+ mov r0, #0x0
+ b ._112
+._109:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._111 @cond_branch
+ ldr r2, ._113 @ gMenuCallback
+ ldr r0, ._113 + 4 @ gUnknown_Debug_083C0FFC
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._112
+._114:
+ .align 2, 0
+._113:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C0FFC
+._111:
+ bl CloseMenu
+ mov r0, #0x1
+._112:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808C0A8
+
+ thumb_func_start debug_sub_808C0EC
+debug_sub_808C0EC:
+ push {lr}
+ ldr r0, ._115 @ DebugScript_081C1CFE
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._116:
+ .align 2, 0
+._115:
+ .word DebugScript_081C1CFE
+
+ thumb_func_end debug_sub_808C0EC
+
+ thumb_func_start debug_sub_808C104
+debug_sub_808C104:
+ push {lr}
+ ldr r0, ._117 @ DebugScript_081C1D07
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._118:
+ .align 2, 0
+._117:
+ .word DebugScript_081C1D07
+
+ thumb_func_end debug_sub_808C104
+
+ thumb_func_start debug_sub_808C11C
+debug_sub_808C11C:
+ push {lr}
+ ldr r0, ._119 @ DebugScript_081C1D1E
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._120:
+ .align 2, 0
+._119:
+ .word DebugScript_081C1D1E
+
+ thumb_func_end debug_sub_808C11C
+
+ thumb_func_start debug_sub_808C134
+debug_sub_808C134:
+ push {lr}
+ ldr r0, ._121 @ DebugScript_081C1D24
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._122:
+ .align 2, 0
+._121:
+ .word DebugScript_081C1D24
+
+ thumb_func_end debug_sub_808C134
+
+ thumb_func_start debug_sub_808C14C
+debug_sub_808C14C:
+ push {lr}
+ ldr r0, ._123 @ DebugScript_081C1D2A
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._124:
+ .align 2, 0
+._123:
+ .word DebugScript_081C1D2A
+
+ thumb_func_end debug_sub_808C14C
+
+ thumb_func_start debug_sub_808C164
+debug_sub_808C164:
+ push {lr}
+ ldr r0, ._125 @ DebugScript_081C1D35
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._126:
+ .align 2, 0
+._125:
+ .word DebugScript_081C1D35
+
+ thumb_func_end debug_sub_808C164
+
+ thumb_func_start debug_sub_808C17C
+debug_sub_808C17C:
+ push {lr}
+ ldr r0, ._127 @ DebugScript_081C1D46
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._128:
+ .align 2, 0
+._127:
+ .word DebugScript_081C1D46
+
+ thumb_func_end debug_sub_808C17C
+
+ thumb_func_start debug_sub_808C194
+debug_sub_808C194:
+ push {lr}
+ ldr r0, ._129 @ DebugScript_081C221F
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._130:
+ .align 2, 0
+._129:
+ .word DebugScript_081C221F
+
+ thumb_func_end debug_sub_808C194
+
+ thumb_func_start debug_sub_808C1AC
+debug_sub_808C1AC:
+ push {lr}
+ ldr r0, ._131 @ DebugScript_081C23E2
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._132:
+ .align 2, 0
+._131:
+ .word DebugScript_081C23E2
+
+ thumb_func_end debug_sub_808C1AC
+
+ thumb_func_start debug_sub_808C1C4
+debug_sub_808C1C4:
+ push {lr}
+ ldr r0, ._133 @ DebugScript_081C23E6
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._134:
+ .align 2, 0
+._133:
+ .word DebugScript_081C23E6
+
+ thumb_func_end debug_sub_808C1C4
+
+ thumb_func_start debug_sub_808C1DC
+debug_sub_808C1DC:
+ push {lr}
+ ldr r0, ._135 @ DebugScript_081C23F6
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._136:
+ .align 2, 0
+._135:
+ .word DebugScript_081C23F6
+
+ thumb_func_end debug_sub_808C1DC
+
+ thumb_func_start debug_sub_808C1F4
+debug_sub_808C1F4:
+ push {lr}
+ ldr r0, ._137 @ DebugScript_081C2482
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._138:
+ .align 2, 0
+._137:
+ .word DebugScript_081C2482
+
+ thumb_func_end debug_sub_808C1F4
+
+ thumb_func_start debug_sub_808C20C
+debug_sub_808C20C:
+ push {lr}
+ ldr r0, ._139 @ DebugScript_081C23FD
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._140:
+ .align 2, 0
+._139:
+ .word DebugScript_081C23FD
+
+ thumb_func_end debug_sub_808C20C
+
+ thumb_func_start debug_sub_808C224
+debug_sub_808C224:
+ push {lr}
+ ldr r0, ._141 @ DebugScript_081C2518
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._142:
+ .align 2, 0
+._141:
+ .word DebugScript_081C2518
+
+ thumb_func_end debug_sub_808C224
+
+ thumb_func_start debug_sub_808C23C
+debug_sub_808C23C:
+ push {lr}
+ ldr r0, ._143 @ DebugScript_081C2507
+ bl ScriptContext1_SetupScript
+ bl CloseMenu
+ mov r0, #0x1
+ pop {r1}
+ bx r1
+._144:
+ .align 2, 0
+._143:
+ .word DebugScript_081C2507
+
+ thumb_func_end debug_sub_808C23C
+
+ thumb_func_start TomomichiDebugMenu_ContestGraphics_Show
+TomomichiDebugMenu_ContestGraphics_Show:
+ push {lr}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r1, ._145 @ gMenuCallback
+ ldr r0, ._145 + 4 @ debug_sub_808C280
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ pop {r1}
+ bx r1
+._146:
+ .align 2, 0
+._145:
+ .word gMenuCallback
+ .word debug_sub_808C280+1
+
+ thumb_func_end TomomichiDebugMenu_ContestGraphics_Show
+
+ thumb_func_start debug_sub_808C280
+debug_sub_808C280:
+ push {lr}
+ bl UpdatePaletteFade
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._147 @cond_branch
+ mov r0, #0x0
+ b ._148
+._147:
+ bl CloseMenu
+ mov r0, #0x0
+ bl debug_sub_808F168
+ ldr r0, ._149 @ CB2_ContestPainting
+ bl SetMainCallback2
+ ldr r1, ._149 + 4 @ gMain
+ ldr r0, ._149 + 8 @ debug_sub_808B868
+ str r0, [r1, #0x8]
+ mov r0, #0x1
+._148:
+ pop {r1}
+ bx r1
+._150:
+ .align 2, 0
+._149:
+ .word CB2_ContestPainting+1
+ .word gMain
+ .word debug_sub_808B868+1
+
+ thumb_func_end debug_sub_808C280
+
+ thumb_func_start TomomichiDebugMenu_MuseumGraphics_Show
+TomomichiDebugMenu_MuseumGraphics_Show:
+ push {lr}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r1, ._151 @ gMenuCallback
+ ldr r0, ._151 + 4 @ debug_sub_808C2E4
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ pop {r1}
+ bx r1
+._152:
+ .align 2, 0
+._151:
+ .word gMenuCallback
+ .word debug_sub_808C2E4+1
+
+ thumb_func_end TomomichiDebugMenu_MuseumGraphics_Show
+
+ thumb_func_start debug_sub_808C2E4
+debug_sub_808C2E4:
+ push {lr}
+ bl UpdatePaletteFade
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._153 @cond_branch
+ mov r0, #0x0
+ b ._154
+._153:
+ bl CloseMenu
+ mov r0, #0x1
+ bl debug_sub_808F168
+ ldr r0, ._155 @ CB2_ContestPainting
+ bl SetMainCallback2
+ ldr r1, ._155 + 4 @ gMain
+ ldr r0, ._155 + 8 @ debug_sub_808B868
+ str r0, [r1, #0x8]
+ mov r0, #0x1
+._154:
+ pop {r1}
+ bx r1
+._156:
+ .align 2, 0
+._155:
+ .word CB2_ContestPainting+1
+ .word gMain
+ .word debug_sub_808B868+1
+
+ thumb_func_end debug_sub_808C2E4
+
+ thumb_func_start debug_sub_808C31C
+debug_sub_808C31C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._157 @ gUnknown_Debug_083C2828
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._157 + 4 @ gMenuCallback
+ ldr r0, ._157 + 8 @ debug_sub_808C36C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._158:
+ .align 2, 0
+._157:
+ .word gUnknown_Debug_083C2828
+ .word gMenuCallback
+ .word debug_sub_808C36C+1
+
+ thumb_func_end debug_sub_808C31C
+
+ thumb_func_start debug_sub_808C36C
+debug_sub_808C36C:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._159 @cond_branch
+ mov r0, #0x0
+ b ._162
+._159:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._161 @cond_branch
+ ldr r2, ._163 @ gMenuCallback
+ ldr r0, ._163 + 4 @ gUnknown_Debug_083C2828
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._162
+._164:
+ .align 2, 0
+._163:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C2828
+._161:
+ bl CloseMenu
+ mov r0, #0x1
+._162:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808C36C
+
+ thumb_func_start debug_sub_808C3B0
+debug_sub_808C3B0:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._165 @ gUnknown_Debug_083C2938
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._165 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._165 + 8 @ gMenuCallback
+ ldr r0, ._165 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._166:
+ .align 2, 0
+._165:
+ .word gUnknown_Debug_083C2938
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C3B0
+
+ thumb_func_start debug_sub_808C408
+debug_sub_808C408:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._167 @ gUnknown_Debug_083C2A48
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._167 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._167 + 8 @ gMenuCallback
+ ldr r0, ._167 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._168:
+ .align 2, 0
+._167:
+ .word gUnknown_Debug_083C2A48
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C408
+
+ thumb_func_start debug_sub_808C460
+debug_sub_808C460:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._169 @ gUnknown_Debug_083C2B4C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._169 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._169 + 8 @ gMenuCallback
+ ldr r0, ._169 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._170:
+ .align 2, 0
+._169:
+ .word gUnknown_Debug_083C2B4C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C460
+
+ thumb_func_start debug_sub_808C4B8
+debug_sub_808C4B8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._171 @ gUnknown_Debug_083C2C80
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._171 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._171 + 8 @ gMenuCallback
+ ldr r0, ._171 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._172:
+ .align 2, 0
+._171:
+ .word gUnknown_Debug_083C2C80
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C4B8
+
+ thumb_func_start debug_sub_808C510
+debug_sub_808C510:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._173 @ gUnknown_Debug_083C2D8C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._173 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._173 + 8 @ gMenuCallback
+ ldr r0, ._173 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._174:
+ .align 2, 0
+._173:
+ .word gUnknown_Debug_083C2D8C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C510
+
+ thumb_func_start debug_sub_808C568
+debug_sub_808C568:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._175 @ gUnknown_Debug_083C2EB0
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._175 + 4 @ gDebug_0300070F
+ mov r0, #0x5
+ strb r0, [r1]
+ ldr r1, ._175 + 8 @ gMenuCallback
+ ldr r0, ._175 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._176:
+ .align 2, 0
+._175:
+ .word gUnknown_Debug_083C2EB0
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C568
+
+ thumb_func_start debug_sub_808C5C0
+debug_sub_808C5C0:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._177 @ gUnknown_Debug_083C2FE0
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._177 + 4 @ gDebug_0300070F
+ mov r0, #0x6
+ strb r0, [r1]
+ ldr r1, ._177 + 8 @ gMenuCallback
+ ldr r0, ._177 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._178:
+ .align 2, 0
+._177:
+ .word gUnknown_Debug_083C2FE0
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C5C0
+
+ thumb_func_start debug_sub_808C618
+debug_sub_808C618:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._179 @ gUnknown_Debug_083C3100
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._179 + 4 @ gDebug_0300070F
+ mov r0, #0x7
+ strb r0, [r1]
+ ldr r1, ._179 + 8 @ gMenuCallback
+ ldr r0, ._179 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._180:
+ .align 2, 0
+._179:
+ .word gUnknown_Debug_083C3100
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C618
+
+ thumb_func_start debug_sub_808C670
+debug_sub_808C670:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._181 @ gUnknown_Debug_083C3194
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x3
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x3
+ bl InitMenu
+ ldr r1, ._181 + 4 @ gDebug_0300070F
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r1, ._181 + 8 @ gMenuCallback
+ ldr r0, ._181 + 12 @ debug_sub_808C6C8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._182:
+ .align 2, 0
+._181:
+ .word gUnknown_Debug_083C3194
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808C6C8+1
+
+ thumb_func_end debug_sub_808C670
+
+ thumb_func_start debug_sub_808C6C8
+debug_sub_808C6C8:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._186 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808C714
+ ldrb r0, [r5]
+ bl debug_sub_808C764
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._183 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._184 @cond_branch
+._183:
+ mov r0, #0x0
+ b ._185
+._187:
+ .align 2, 0
+._186:
+ .word gDebug_0300070F
+._184:
+ bl CloseMenu
+ mov r0, #0x1
+._185:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808C6C8
+
+ thumb_func_start debug_sub_808C714
+debug_sub_808C714:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._191 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._190 @cond_branch
+ ldr r0, ._191 + 4 @ gUnknown_Debug_83C31E6
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._189 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._190
+._192:
+ .align 2, 0
+._191:
+ .word gMain
+ .word gUnknown_Debug_83C31E6
+._189:
+ add r0, r4, #0
+ bl FlagClear
+._190:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808C714
+
+ thumb_func_start debug_sub_808C764
+debug_sub_808C764:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._195 @ gUnknown_Debug_083C31DC
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._193 @cond_branch
+ ldr r0, ._195 + 4 @ gUnknown_Debug_83C31E6
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._194:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._194 @cond_branch
+._193:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._196:
+ .align 2, 0
+._195:
+ .word gUnknown_Debug_083C31DC
+ .word gUnknown_Debug_83C31E6
+
+ thumb_func_end debug_sub_808C764
+
+ thumb_func_start debug_sub_808C7C8
+debug_sub_808C7C8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._197 @ gUnknown_Debug_083C1CE8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._197 + 4 @ gMenuCallback
+ ldr r0, ._197 + 8 @ debug_sub_808C818
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._198:
+ .align 2, 0
+._197:
+ .word gUnknown_Debug_083C1CE8
+ .word gMenuCallback
+ .word debug_sub_808C818+1
+
+ thumb_func_end debug_sub_808C7C8
+
+ thumb_func_start debug_sub_808C818
+debug_sub_808C818:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._199 @cond_branch
+ mov r0, #0x0
+ b ._202
+._199:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._201 @cond_branch
+ ldr r2, ._203 @ gMenuCallback
+ ldr r0, ._203 + 4 @ gUnknown_Debug_083C1CE8
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._202
+._204:
+ .align 2, 0
+._203:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C1CE8
+._201:
+ bl CloseMenu
+ mov r0, #0x1
+._202:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808C818
+
+ thumb_func_start debug_sub_808C85C
+debug_sub_808C85C:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._205 @ gUnknown_Debug_083C1E0C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._205 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._205 + 8 @ gMenuCallback
+ ldr r0, ._205 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._206:
+ .align 2, 0
+._205:
+ .word gUnknown_Debug_083C1E0C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808C85C
+
+ thumb_func_start debug_sub_808C8B4
+debug_sub_808C8B4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._207 @ gUnknown_Debug_083C1F38
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._207 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._207 + 8 @ gMenuCallback
+ ldr r0, ._207 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._208:
+ .align 2, 0
+._207:
+ .word gUnknown_Debug_083C1F38
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808C8B4
+
+ thumb_func_start debug_sub_808C90C
+debug_sub_808C90C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._209 @ gUnknown_Debug_083C206C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._209 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._209 + 8 @ gMenuCallback
+ ldr r0, ._209 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._210:
+ .align 2, 0
+._209:
+ .word gUnknown_Debug_083C206C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808C90C
+
+ thumb_func_start debug_sub_808C964
+debug_sub_808C964:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._211 @ gUnknown_Debug_083C2190
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._211 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._211 + 8 @ gMenuCallback
+ ldr r0, ._211 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._212:
+ .align 2, 0
+._211:
+ .word gUnknown_Debug_083C2190
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808C964
+
+ thumb_func_start debug_sub_808C9BC
+debug_sub_808C9BC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._213 @ gUnknown_Debug_083C2264
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._213 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._213 + 8 @ gMenuCallback
+ ldr r0, ._213 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._214:
+ .align 2, 0
+._213:
+ .word gUnknown_Debug_083C2264
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808C9BC
+
+ thumb_func_start debug_sub_808CA14
+debug_sub_808CA14:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._215 @ gUnknown_Debug_083C2370
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._215 + 4 @ gDebug_0300070F
+ mov r0, #0x5
+ strb r0, [r1]
+ ldr r1, ._215 + 8 @ gMenuCallback
+ ldr r0, ._215 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._216:
+ .align 2, 0
+._215:
+ .word gUnknown_Debug_083C2370
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808CA14
+
+ thumb_func_start debug_sub_808CA6C
+debug_sub_808CA6C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._217 @ gUnknown_Debug_083C248C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._217 + 4 @ gDebug_0300070F
+ mov r0, #0x6
+ strb r0, [r1]
+ ldr r1, ._217 + 8 @ gMenuCallback
+ ldr r0, ._217 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._218:
+ .align 2, 0
+._217:
+ .word gUnknown_Debug_083C248C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808CA6C
+
+ thumb_func_start debug_sub_808CAC4
+debug_sub_808CAC4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._219 @ gUnknown_Debug_083C259C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._219 + 4 @ gDebug_0300070F
+ mov r0, #0x7
+ strb r0, [r1]
+ ldr r1, ._219 + 8 @ gMenuCallback
+ ldr r0, ._219 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._220:
+ .align 2, 0
+._219:
+ .word gUnknown_Debug_083C259C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808CAC4
+
+ thumb_func_start debug_sub_808CB1C
+debug_sub_808CB1C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._221 @ gUnknown_Debug_083C26C8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._221 + 4 @ gDebug_0300070F
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r1, ._221 + 8 @ gMenuCallback
+ ldr r0, ._221 + 12 @ debug_sub_808CB74
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._222:
+ .align 2, 0
+._221:
+ .word gUnknown_Debug_083C26C8
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CB74+1
+
+ thumb_func_end debug_sub_808CB1C
+
+ thumb_func_start debug_sub_808CB74
+debug_sub_808CB74:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._226 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808CBC0
+ ldrb r0, [r5]
+ bl debug_sub_808CC10
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._223 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._224 @cond_branch
+._223:
+ mov r0, #0x0
+ b ._225
+._227:
+ .align 2, 0
+._226:
+ .word gDebug_0300070F
+._224:
+ bl CloseMenu
+ mov r0, #0x1
+._225:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808CB74
+
+ thumb_func_start debug_sub_808CBC0
+debug_sub_808CBC0:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._231 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._230 @cond_branch
+ ldr r0, ._231 + 4 @ gUnknown_Debug_083C271A
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._229 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._230
+._232:
+ .align 2, 0
+._231:
+ .word gMain
+ .word gUnknown_Debug_083C271A
+._229:
+ add r0, r4, #0
+ bl FlagClear
+._230:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808CBC0
+
+ thumb_func_start debug_sub_808CC10
+debug_sub_808CC10:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._235 @ gUnknown_Debug_083C2710
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._233 @cond_branch
+ ldr r0, ._235 + 4 @ gUnknown_Debug_083C271A
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._234:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._234 @cond_branch
+._233:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._236:
+ .align 2, 0
+._235:
+ .word gUnknown_Debug_083C2710
+ .word gUnknown_Debug_083C271A
+
+ thumb_func_end debug_sub_808CC10
+
+ thumb_func_start debug_sub_808CC74
+debug_sub_808CC74:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._237 @ gUnknown_Debug_083C1ADC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x3
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x3
+ bl InitMenu
+ ldr r1, ._237 + 4 @ gMenuCallback
+ ldr r0, ._237 + 8 @ debug_sub_808CCC4
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._238:
+ .align 2, 0
+._237:
+ .word gUnknown_Debug_083C1ADC
+ .word gMenuCallback
+ .word debug_sub_808CCC4+1
+
+ thumb_func_end debug_sub_808CC74
+
+ thumb_func_start debug_sub_808CCC4
+debug_sub_808CCC4:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._239 @cond_branch
+ mov r0, #0x0
+ b ._242
+._239:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._241 @cond_branch
+ ldr r2, ._243 @ gMenuCallback
+ ldr r0, ._243 + 4 @ gUnknown_Debug_083C1ADC
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._242
+._244:
+ .align 2, 0
+._243:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C1ADC
+._241:
+ bl CloseMenu
+ mov r0, #0x1
+._242:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808CCC4
+
+ thumb_func_start debug_sub_808CD08
+debug_sub_808CD08:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x11
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._245 @ gUnknown_Debug_083C1B7C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x8
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x8
+ bl InitMenu
+ ldr r0, ._245 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._245 + 8 @ gMenuCallback
+ ldr r0, ._245 + 12 @ debug_sub_808CE10
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._246:
+ .align 2, 0
+._245:
+ .word gUnknown_Debug_083C1B7C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CE10+1
+
+ thumb_func_end debug_sub_808CD08
+
+ thumb_func_start debug_sub_808CD60
+debug_sub_808CD60:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._247 @ gUnknown_Debug_083C1BF0
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x4
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x4
+ bl InitMenu
+ ldr r1, ._247 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._247 + 8 @ gMenuCallback
+ ldr r0, ._247 + 12 @ debug_sub_808CE10
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._248:
+ .align 2, 0
+._247:
+ .word gUnknown_Debug_083C1BF0
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CE10+1
+
+ thumb_func_end debug_sub_808CD60
+
+ thumb_func_start debug_sub_808CDB8
+debug_sub_808CDB8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x3
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._249 @ gUnknown_Debug_083C1C2C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x1
+ bl InitMenu
+ ldr r1, ._249 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._249 + 8 @ gMenuCallback
+ ldr r0, ._249 + 12 @ debug_sub_808CE10
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._250:
+ .align 2, 0
+._249:
+ .word gUnknown_Debug_083C1C2C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808CE10+1
+
+ thumb_func_end debug_sub_808CDB8
+
+ thumb_func_start debug_sub_808CE10
+debug_sub_808CE10:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._254 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808CE5C
+ ldrb r0, [r5]
+ bl debug_sub_808CEAC
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._251 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._252 @cond_branch
+._251:
+ mov r0, #0x0
+ b ._253
+._255:
+ .align 2, 0
+._254:
+ .word gDebug_0300070F
+._252:
+ bl CloseMenu
+ mov r0, #0x1
+._253:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808CE10
+
+ thumb_func_start debug_sub_808CE5C
+debug_sub_808CE5C:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._259 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._258 @cond_branch
+ ldr r0, ._259 + 4 @ gUnknown_Debug_083C1C38
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._257 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._258
+._260:
+ .align 2, 0
+._259:
+ .word gMain
+ .word gUnknown_Debug_083C1C38
+._257:
+ add r0, r4, #0
+ bl FlagClear
+._258:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808CE5C
+
+ thumb_func_start debug_sub_808CEAC
+debug_sub_808CEAC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._263 @ gUnknown_Debug_083C1C34
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._261 @cond_branch
+ ldr r0, ._263 + 4 @ gUnknown_Debug_083C1C38
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._262:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._262 @cond_branch
+._261:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._264:
+ .align 2, 0
+._263:
+ .word gUnknown_Debug_083C1C34
+ .word gUnknown_Debug_083C1C38
+
+ thumb_func_end debug_sub_808CEAC
+
+ thumb_func_start debug_sub_808CF10
+debug_sub_808CF10:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._265 @ gUnknown_Debug_083C1330
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._265 + 4 @ gMenuCallback
+ ldr r0, ._265 + 8 @ debug_sub_808CF60
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._266:
+ .align 2, 0
+._265:
+ .word gUnknown_Debug_083C1330
+ .word gMenuCallback
+ .word debug_sub_808CF60+1
+
+ thumb_func_end debug_sub_808CF10
+
+ thumb_func_start debug_sub_808CF60
+debug_sub_808CF60:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._267 @cond_branch
+ mov r0, #0x0
+ b ._270
+._267:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._269 @cond_branch
+ ldr r2, ._271 @ gMenuCallback
+ ldr r0, ._271 + 4 @ gUnknown_Debug_083C1330
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._270
+._272:
+ .align 2, 0
+._271:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C1330
+._269:
+ bl CloseMenu
+ mov r0, #0x1
+._270:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808CF60
+
+ thumb_func_start debug_sub_808CFA4
+debug_sub_808CFA4:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x11
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._273 @ gUnknown_Debug_083C13D8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x8
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x8
+ bl InitMenu
+ ldr r0, ._273 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._273 + 8 @ gMenuCallback
+ ldr r0, ._273 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._274:
+ .align 2, 0
+._273:
+ .word gUnknown_Debug_083C13D8
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808CFA4
+
+ thumb_func_start debug_sub_808CFFC
+debug_sub_808CFFC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._275 @ gUnknown_Debug_083C1465
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._275 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._275 + 8 @ gMenuCallback
+ ldr r0, ._275 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._276:
+ .align 2, 0
+._275:
+ .word gUnknown_Debug_083C1465
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808CFFC
+
+ thumb_func_start debug_sub_808D054
+debug_sub_808D054:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._277 @ gUnknown_Debug_083C1503
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._277 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._277 + 8 @ gMenuCallback
+ ldr r0, ._277 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._278:
+ .align 2, 0
+._277:
+ .word gUnknown_Debug_083C1503
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D054
+
+ thumb_func_start debug_sub_808D0AC
+debug_sub_808D0AC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._279 @ gUnknown_Debug_083C158A
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x4
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x4
+ bl InitMenu
+ ldr r1, ._279 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._279 + 8 @ gMenuCallback
+ ldr r0, ._279 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._280:
+ .align 2, 0
+._279:
+ .word gUnknown_Debug_083C158A
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D0AC
+
+ thumb_func_start debug_sub_808D104
+debug_sub_808D104:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._281 @ gUnknown_Debug_083C1647
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._281 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._281 + 8 @ gMenuCallback
+ ldr r0, ._281 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._282:
+ .align 2, 0
+._281:
+ .word gUnknown_Debug_083C1647
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D104
+
+ thumb_func_start debug_sub_808D15C
+debug_sub_808D15C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._283 @ gUnknown_Debug_083C1712
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._283 + 4 @ gDebug_0300070F
+ mov r0, #0x5
+ strb r0, [r1]
+ ldr r1, ._283 + 8 @ gMenuCallback
+ ldr r0, ._283 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._284:
+ .align 2, 0
+._283:
+ .word gUnknown_Debug_083C1712
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D15C
+
+ thumb_func_start debug_sub_808D1B4
+debug_sub_808D1B4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._285 @ gUnknown_Debug_083C17F8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._285 + 4 @ gDebug_0300070F
+ mov r0, #0x6
+ strb r0, [r1]
+ ldr r1, ._285 + 8 @ gMenuCallback
+ ldr r0, ._285 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._286:
+ .align 2, 0
+._285:
+ .word gUnknown_Debug_083C17F8
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D1B4
+
+ thumb_func_start debug_sub_808D20C
+debug_sub_808D20C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._287 @ gUnknown_Debug_083C18B8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._287 + 4 @ gDebug_0300070F
+ mov r0, #0x7
+ strb r0, [r1]
+ ldr r1, ._287 + 8 @ gMenuCallback
+ ldr r0, ._287 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._288:
+ .align 2, 0
+._287:
+ .word gUnknown_Debug_083C18B8
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D20C
+
+ thumb_func_start debug_sub_808D264
+debug_sub_808D264:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._289 @ gDebug_0x83C1974
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x5
+ bl InitMenu
+ ldr r1, ._289 + 4 @ gDebug_0300070F
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r1, ._289 + 8 @ gMenuCallback
+ ldr r0, ._289 + 12 @ debug_sub_808D2BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._290:
+ .align 2, 0
+._289:
+ .word gDebug_0x83C1974
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D2BC+1
+
+ thumb_func_end debug_sub_808D264
+
+ thumb_func_start debug_sub_808D2BC
+debug_sub_808D2BC:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._294 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808D308
+ ldrb r0, [r5]
+ bl debug_sub_808D358
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._291 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._292 @cond_branch
+._291:
+ mov r0, #0x0
+ b ._293
+._295:
+ .align 2, 0
+._294:
+ .word gDebug_0300070F
+._292:
+ bl CloseMenu
+ mov r0, #0x1
+._293:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D2BC
+
+ thumb_func_start debug_sub_808D308
+debug_sub_808D308:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._299 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._298 @cond_branch
+ ldr r0, ._299 + 4 @ gUnknown_Debug_083C19C6
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._297 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._298
+._300:
+ .align 2, 0
+._299:
+ .word gMain
+ .word gUnknown_Debug_083C19C6
+._297:
+ add r0, r4, #0
+ bl FlagClear
+._298:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808D308
+
+ thumb_func_start debug_sub_808D358
+debug_sub_808D358:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._303 @ gUnknown_Debug_083C19BC
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._301 @cond_branch
+ ldr r0, ._303 + 4 @ gUnknown_Debug_083C19C6
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._302:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._302 @cond_branch
+._301:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._304:
+ .align 2, 0
+._303:
+ .word gUnknown_Debug_083C19BC
+ .word gUnknown_Debug_083C19C6
+
+ thumb_func_end debug_sub_808D358
+
+ thumb_func_start debug_sub_808D3BC
+debug_sub_808D3BC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._305 @ gUnknown_Debug_083C105C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._305 + 4 @ gMenuCallback
+ ldr r0, ._305 + 8 @ debug_sub_808D40C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._306:
+ .align 2, 0
+._305:
+ .word gUnknown_Debug_083C105C
+ .word gMenuCallback
+ .word debug_sub_808D40C+1
+
+ thumb_func_end debug_sub_808D3BC
+
+ thumb_func_start debug_sub_808D40C
+debug_sub_808D40C:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._307 @cond_branch
+ mov r0, #0x0
+ b ._310
+._307:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._309 @cond_branch
+ ldr r2, ._311 @ gMenuCallback
+ ldr r0, ._311 + 4 @ gUnknown_Debug_083C105C
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._310
+._312:
+ .align 2, 0
+._311:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C105C
+._309:
+ bl CloseMenu
+ mov r0, #0x1
+._310:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D40C
+
+ thumb_func_start debug_sub_808D450
+debug_sub_808D450:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._313 @ gUnknown_Debug_083C10BD
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._313 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._313 + 8 @ gMenuCallback
+ ldr r0, ._313 + 12 @ debug_sub_808D500
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._314:
+ .align 2, 0
+._313:
+ .word gUnknown_Debug_083C10BD
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D500+1
+
+ thumb_func_end debug_sub_808D450
+
+ thumb_func_start debug_sub_808D4A8
+debug_sub_808D4A8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._315 @ gUnknown_Debug_083C1149
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._315 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._315 + 8 @ gMenuCallback
+ ldr r0, ._315 + 12 @ debug_sub_808D500
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._316:
+ .align 2, 0
+._315:
+ .word gUnknown_Debug_083C1149
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D500+1
+
+ thumb_func_end debug_sub_808D4A8
+
+ thumb_func_start debug_sub_808D500
+debug_sub_808D500:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._320 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808D54C
+ ldrb r0, [r5]
+ bl debug_sub_808D59C
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._317 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._318 @cond_branch
+._317:
+ mov r0, #0x0
+ b ._319
+._321:
+ .align 2, 0
+._320:
+ .word gDebug_0300070F
+._318:
+ bl CloseMenu
+ mov r0, #0x1
+._319:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D500
+
+ thumb_func_start debug_sub_808D54C
+debug_sub_808D54C:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._325 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._324 @cond_branch
+ ldr r0, ._325 + 4 @ gUnknown_Debug_083C1196
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._323 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._324
+._326:
+ .align 2, 0
+._325:
+ .word gMain
+ .word gUnknown_Debug_083C1196
+._323:
+ add r0, r4, #0
+ bl FlagClear
+._324:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808D54C
+
+ thumb_func_start debug_sub_808D59C
+debug_sub_808D59C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._329 @ gUnknown_Debug_083C1194
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._327 @cond_branch
+ ldr r0, ._329 + 4 @ gUnknown_Debug_083C1196
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._328:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._328 @cond_branch
+._327:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._330:
+ .align 2, 0
+._329:
+ .word gUnknown_Debug_083C1194
+ .word gUnknown_Debug_083C1196
+
+ thumb_func_end debug_sub_808D59C
+
+ thumb_func_start debug_sub_808D600
+debug_sub_808D600:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._331 @ gUnknown_Debug_083C11CC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._331 + 4 @ gMenuCallback
+ ldr r0, ._331 + 8 @ debug_sub_808D650
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._332:
+ .align 2, 0
+._331:
+ .word gUnknown_Debug_083C11CC
+ .word gMenuCallback
+ .word debug_sub_808D650+1
+
+ thumb_func_end debug_sub_808D600
+
+ thumb_func_start debug_sub_808D650
+debug_sub_808D650:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._333 @cond_branch
+ mov r0, #0x0
+ b ._336
+._333:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._335 @cond_branch
+ ldr r2, ._337 @ gMenuCallback
+ ldr r0, ._337 + 4 @ gUnknown_Debug_083C11CC
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._336
+._338:
+ .align 2, 0
+._337:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C11CC
+._335:
+ bl CloseMenu
+ mov r0, #0x1
+._336:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D650
+
+ thumb_func_start debug_sub_808D694
+debug_sub_808D694:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._339 @ gUnknown_Debug_083C1212
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._339 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._339 + 8 @ gMenuCallback
+ ldr r0, ._339 + 12 @ debug_sub_808D744
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._340:
+ .align 2, 0
+._339:
+ .word gUnknown_Debug_083C1212
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D744+1
+
+ thumb_func_end debug_sub_808D694
+
+ thumb_func_start debug_sub_808D6EC
+debug_sub_808D6EC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._341 @ gUnknown_Debug_083C1288
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._341 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._341 + 8 @ gMenuCallback
+ ldr r0, ._341 + 12 @ debug_sub_808D744
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._342:
+ .align 2, 0
+._341:
+ .word gUnknown_Debug_083C1288
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D744+1
+
+ thumb_func_end debug_sub_808D6EC
+
+ thumb_func_start debug_sub_808D744
+debug_sub_808D744:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._346 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808D790
+ ldrb r0, [r5]
+ bl debug_sub_808D7E0
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._343 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._344 @cond_branch
+._343:
+ mov r0, #0x0
+ b ._345
+._347:
+ .align 2, 0
+._346:
+ .word gDebug_0300070F
+._344:
+ bl CloseMenu
+ mov r0, #0x1
+._345:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D744
+
+ thumb_func_start debug_sub_808D790
+debug_sub_808D790:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._351 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._350 @cond_branch
+ ldr r0, ._351 + 4 @ gUnknown_Debug_083C12D2
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._349 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._350
+._352:
+ .align 2, 0
+._351:
+ .word gMain
+ .word gUnknown_Debug_083C12D2
+._349:
+ add r0, r4, #0
+ bl FlagClear
+._350:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808D790
+
+ thumb_func_start debug_sub_808D7E0
+debug_sub_808D7E0:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._355 @ gUnknown_Debug_083C12D0
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._353 @cond_branch
+ ldr r0, ._355 + 4 @ gUnknown_Debug_083C12D2
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._354:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._354 @cond_branch
+._353:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._356:
+ .align 2, 0
+._355:
+ .word gUnknown_Debug_083C12D0
+ .word gUnknown_Debug_083C12D2
+
+ thumb_func_end debug_sub_808D7E0
+
+ thumb_func_start debug_sub_808D844
+debug_sub_808D844:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1c
+ mov r3, #0x3
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._357 @ gUnknown_Debug_083C1A78
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1b
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x1
+ bl InitMenu
+ ldr r1, ._357 + 4 @ gMenuCallback
+ ldr r0, ._357 + 8 @ debug_sub_808D894
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._358:
+ .align 2, 0
+._357:
+ .word gUnknown_Debug_083C1A78
+ .word gMenuCallback
+ .word debug_sub_808D894+1
+
+ thumb_func_end debug_sub_808D844
+
+ thumb_func_start debug_sub_808D894
+debug_sub_808D894:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r3, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r3, r0
+ bne ._359 @cond_branch
+ mov r0, #0x0
+ b ._362
+._359:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r3, r0
+ beq ._361 @cond_branch
+ ldr r2, ._363 @ gMenuCallback
+ ldr r1, ._363 + 4 @ gUnknown_Debug_083C1A78
+ lsl r0, r3, #0x3
+ add r0, r0, r1
+ ldr r0, [r0, #0x4]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._362
+._364:
+ .align 2, 0
+._363:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C1A78
+._361:
+ bl CloseMenu
+ mov r0, #0x1
+._362:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D894
+
+ thumb_func_start debug_sub_808D8D8
+debug_sub_808D8D8:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._365 @ gUnknown_Debug_083C1A9C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r0, ._365 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._365 + 8 @ gMenuCallback
+ ldr r0, ._365 + 12 @ debug_sub_808D930
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._366:
+ .align 2, 0
+._365:
+ .word gUnknown_Debug_083C1A9C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808D930+1
+
+ thumb_func_end debug_sub_808D8D8
+
+ thumb_func_start debug_sub_808D930
+debug_sub_808D930:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._370 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808D97C
+ ldrb r0, [r5]
+ bl debug_sub_808D9CC
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._367 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._368 @cond_branch
+._367:
+ mov r0, #0x0
+ b ._369
+._371:
+ .align 2, 0
+._370:
+ .word gDebug_0300070F
+._368:
+ bl CloseMenu
+ mov r0, #0x1
+._369:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808D930
+
+ thumb_func_start debug_sub_808D97C
+debug_sub_808D97C:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._375 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._374 @cond_branch
+ ldr r0, ._375 + 4 @ gUnknown_Debug_083C1AAE
+ lsl r1, r2, #0x3
+ add r1, r1, r2
+ add r1, r1, r3
+ lsl r1, r1, #0x1
+ add r1, r1, r0
+ ldrh r4, [r1]
+ add r0, r4, #0
+ bl FlagGet
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._373 @cond_branch
+ add r0, r4, #0
+ bl FlagSet
+ b ._374
+._376:
+ .align 2, 0
+._375:
+ .word gMain
+ .word gUnknown_Debug_083C1AAE
+._373:
+ add r0, r4, #0
+ bl FlagClear
+._374:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808D97C
+
+ thumb_func_start debug_sub_808D9CC
+debug_sub_808D9CC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._379 @ gUnknown_Debug_083C1AAC
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._377 @cond_branch
+ ldr r0, ._379 + 4 @ gUnknown_Debug_083C1AAE
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._378:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl FlagGet
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ neg r2, r0
+ orr r2, r2, r0
+ lsr r2, r2, #0x1f
+ mov r0, #0x1c
+ add r1, r4, #0
+ bl debug_sub_808F2E0
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._378 @cond_branch
+._377:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._380:
+ .align 2, 0
+._379:
+ .word gUnknown_Debug_083C1AAC
+ .word gUnknown_Debug_083C1AAE
+
+ thumb_func_end debug_sub_808D9CC
+
+ thumb_func_start debug_sub_808DA30
+debug_sub_808DA30:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x3
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._381 @ gUnknown_Debug_083C103A
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x1
+ bl InitMenu
+ ldr r1, ._381 + 4 @ gMenuCallback
+ ldr r0, ._381 + 8 @ debug_sub_808DA80
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._382:
+ .align 2, 0
+._381:
+ .word gUnknown_Debug_083C103A
+ .word gMenuCallback
+ .word debug_sub_808DA80+1
+
+ thumb_func_end debug_sub_808DA30
+
+ thumb_func_start debug_sub_808DA80
+debug_sub_808DA80:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ bl debug_sub_808DAD4
+ bl debug_sub_808DABC
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._383 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._384 @cond_branch
+._383:
+ mov r0, #0x0
+ b ._385
+._384:
+ bl CloseMenu
+ mov r0, #0x1
+._385:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808DA80
+
+ thumb_func_start debug_sub_808DABC
+debug_sub_808DABC:
+ push {lr}
+ ldr r0, ._386 @ gSpecialVar_Result
+ ldrh r2, [r0]
+ mov r0, #0x18
+ mov r1, #0x1
+ bl debug_sub_808F31C
+ pop {r0}
+ bx r0
+._387:
+ .align 2, 0
+._386:
+ .word gSpecialVar_Result
+
+ thumb_func_end debug_sub_808DABC
+
+ thumb_func_start debug_sub_808DAD4
+debug_sub_808DAD4:
+ push {lr}
+ ldr r0, ._390 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._388 @cond_branch
+ mov r2, #0x1
+ b ._389
+._391:
+ .align 2, 0
+._390:
+ .word gMain
+._388:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._392 @cond_branch
+ ldr r2, ._393 @ 0xffff
+._389:
+ ldr r1, ._393 + 4 @ gSpecialVar_Result
+ ldrh r0, [r1]
+ add r0, r2, r0
+ strh r0, [r1]
+._392:
+ pop {r0}
+ bx r0
+._394:
+ .align 2, 0
+._393:
+ .word 0xffff
+ .word gSpecialVar_Result
+
+ thumb_func_end debug_sub_808DAD4
+
+ thumb_func_start debug_sub_808DB0C
+debug_sub_808DB0C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._395 @ gUnknown_Debug_083C3D08
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._395 + 4 @ gMenuCallback
+ ldr r0, ._395 + 8 @ debug_sub_808DB5C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._396:
+ .align 2, 0
+._395:
+ .word gUnknown_Debug_083C3D08
+ .word gMenuCallback
+ .word debug_sub_808DB5C+1
+
+ thumb_func_end debug_sub_808DB0C
+
+ thumb_func_start debug_sub_808DB5C
+debug_sub_808DB5C:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._397 @cond_branch
+ mov r0, #0x0
+ b ._400
+._397:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._399 @cond_branch
+ ldr r2, ._401 @ gMenuCallback
+ ldr r0, ._401 + 4 @ gUnknown_Debug_083C3D08
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._400
+._402:
+ .align 2, 0
+._401:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C3D08
+._399:
+ bl CloseMenu
+ mov r0, #0x1
+._400:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808DB5C
+
+ thumb_func_start debug_sub_808DBA0
+debug_sub_808DBA0:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x11
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._403 @ gUnknown_Debug_083C432C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x8
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x8
+ bl InitMenu
+ ldr r0, ._403 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._403 + 8 @ gMenuCallback
+ ldr r0, ._403 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._404:
+ .align 2, 0
+._403:
+ .word gUnknown_Debug_083C432C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DBA0
+
+ thumb_func_start debug_sub_808DBF8
+debug_sub_808DBF8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._405 @ gUnknown_Debug_083C436C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._405 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._405 + 8 @ gMenuCallback
+ ldr r0, ._405 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._406:
+ .align 2, 0
+._405:
+ .word gUnknown_Debug_083C436C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DBF8
+
+ thumb_func_start debug_sub_808DC50
+debug_sub_808DC50:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._407 @ gUnknown_Debug_083C43B4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._407 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._407 + 8 @ gMenuCallback
+ ldr r0, ._407 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._408:
+ .align 2, 0
+._407:
+ .word gUnknown_Debug_083C43B4
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DC50
+
+ thumb_func_start debug_sub_808DCA8
+debug_sub_808DCA8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._409 @ gUnknown_Debug_083C43FC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._409 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._409 + 8 @ gMenuCallback
+ ldr r0, ._409 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._410:
+ .align 2, 0
+._409:
+ .word gUnknown_Debug_083C43FC
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DCA8
+
+ thumb_func_start debug_sub_808DD00
+debug_sub_808DD00:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._411 @ gUnknown_Debug_083C4444
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._411 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._411 + 8 @ gMenuCallback
+ ldr r0, ._411 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._412:
+ .align 2, 0
+._411:
+ .word gUnknown_Debug_083C4444
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DD00
+
+ thumb_func_start debug_sub_808DD58
+debug_sub_808DD58:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._413 @ gUnknown_Debug_083C448C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._413 + 4 @ gDebug_0300070F
+ mov r0, #0x5
+ strb r0, [r1]
+ ldr r1, ._413 + 8 @ gMenuCallback
+ ldr r0, ._413 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._414:
+ .align 2, 0
+._413:
+ .word gUnknown_Debug_083C448C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DD58
+
+ thumb_func_start debug_sub_808DDB0
+debug_sub_808DDB0:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._415 @ gUnknown_Debug_83C44C4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._415 + 4 @ gDebug_0300070F
+ mov r0, #0x6
+ strb r0, [r1]
+ ldr r1, ._415 + 8 @ gMenuCallback
+ ldr r0, ._415 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._416:
+ .align 2, 0
+._415:
+ .word gUnknown_Debug_83C44C4
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DDB0
+
+ thumb_func_start debug_sub_808DE08
+debug_sub_808DE08:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._417 @ gUnknown_Debug_83C44EC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._417 + 4 @ gDebug_0300070F
+ mov r0, #0x7
+ strb r0, [r1]
+ ldr r1, ._417 + 8 @ gMenuCallback
+ ldr r0, ._417 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._418:
+ .align 2, 0
+._417:
+ .word gUnknown_Debug_83C44EC
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DE08
+
+ thumb_func_start debug_sub_808DE60
+debug_sub_808DE60:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._419 @ gUnknown_Debug_083C4534
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._419 + 4 @ gDebug_0300070F
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r1, ._419 + 8 @ gMenuCallback
+ ldr r0, ._419 + 12 @ debug_sub_808DEB8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._420:
+ .align 2, 0
+._419:
+ .word gUnknown_Debug_083C4534
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808DEB8+1
+
+ thumb_func_end debug_sub_808DE60
+
+ thumb_func_start debug_sub_808DEB8
+debug_sub_808DEB8:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._424 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808DF64
+ ldrb r0, [r5]
+ bl debug_sub_808DF04
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._421 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._422 @cond_branch
+._421:
+ mov r0, #0x0
+ b ._423
+._425:
+ .align 2, 0
+._424:
+ .word gDebug_0300070F
+._422:
+ bl CloseMenu
+ mov r0, #0x1
+._423:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808DEB8
+
+ thumb_func_start debug_sub_808DF04
+debug_sub_808DF04:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._428 @ gUnknown_Debug_083C457C
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._426 @cond_branch
+ ldr r0, ._428 + 4 @ gUnknown_Debug_083C4586
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._427:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl VarGet
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ mov r0, #0x18
+ add r1, r4, #0
+ bl debug_sub_808F31C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._427 @cond_branch
+._426:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._429:
+ .align 2, 0
+._428:
+ .word gUnknown_Debug_083C457C
+ .word gUnknown_Debug_083C4586
+
+ thumb_func_end debug_sub_808DF04
+
+ thumb_func_start debug_sub_808DF64
+debug_sub_808DF64:
+ push {r4, r5, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._432 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._430 @cond_branch
+ mov r5, #0x1
+ b ._431
+._433:
+ .align 2, 0
+._432:
+ .word gMain
+._430:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._434 @cond_branch
+ ldr r5, ._435 @ 0xffff
+._431:
+ ldr r1, ._435 + 4 @ gUnknown_Debug_083C4586
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ add r0, r0, r3
+ lsl r0, r0, #0x1
+ add r0, r0, r1
+ ldrh r4, [r0]
+ add r0, r4, #0
+ bl VarGet
+ add r1, r0, #0
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ bl VarSet
+._434:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._436:
+ .align 2, 0
+._435:
+ .word 0xffff
+ .word gUnknown_Debug_083C4586
+
+ thumb_func_end debug_sub_808DF64
+
+ thumb_func_start debug_sub_808DFC0
+debug_sub_808DFC0:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._437 @ gUnknown_Debug_083C377C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._437 + 4 @ gMenuCallback
+ ldr r0, ._437 + 8 @ debug_sub_808E010
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._438:
+ .align 2, 0
+._437:
+ .word gUnknown_Debug_083C377C
+ .word gMenuCallback
+ .word debug_sub_808E010+1
+
+ thumb_func_end debug_sub_808DFC0
+
+ thumb_func_start debug_sub_808E010
+debug_sub_808E010:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._439 @cond_branch
+ mov r0, #0x0
+ b ._442
+._439:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._441 @cond_branch
+ ldr r2, ._443 @ gMenuCallback
+ ldr r0, ._443 + 4 @ gUnknown_Debug_083C377C
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._442
+._444:
+ .align 2, 0
+._443:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C377C
+._441:
+ bl CloseMenu
+ mov r0, #0x1
+._442:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E010
+
+ thumb_func_start debug_sub_808E054
+debug_sub_808E054:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._445 @ gUnknown_Debug_083C3AA0
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r0, ._445 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._445 + 8 @ gMenuCallback
+ ldr r0, ._445 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._446:
+ .align 2, 0
+._445:
+ .word gUnknown_Debug_083C3AA0
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E054
+
+ thumb_func_start debug_sub_808E0AC
+debug_sub_808E0AC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._447 @ gUnknown_Debug_83C3AE0
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x5
+ bl InitMenu
+ ldr r1, ._447 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._447 + 8 @ gMenuCallback
+ ldr r0, ._447 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._448:
+ .align 2, 0
+._447:
+ .word gUnknown_Debug_83C3AE0
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E0AC
+
+ thumb_func_start debug_sub_808E104
+debug_sub_808E104:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._449 @ gUnknown_Debug_83C3B28
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._449 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._449 + 8 @ gMenuCallback
+ ldr r0, ._449 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._450:
+ .align 2, 0
+._449:
+ .word gUnknown_Debug_83C3B28
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E104
+
+ thumb_func_start debug_sub_808E15C
+debug_sub_808E15C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._451 @ gUnknown_Debug_83C3B70
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._451 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._451 + 8 @ gMenuCallback
+ ldr r0, ._451 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._452:
+ .align 2, 0
+._451:
+ .word gUnknown_Debug_83C3B70
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E15C
+
+ thumb_func_start debug_sub_808E1B4
+debug_sub_808E1B4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._453 @ gUnknown_Debug_83C3BB8
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._453 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._453 + 8 @ gMenuCallback
+ ldr r0, ._453 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._454:
+ .align 2, 0
+._453:
+ .word gUnknown_Debug_83C3BB8
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E1B4
+
+ thumb_func_start debug_sub_808E20C
+debug_sub_808E20C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._455 @ gUnknown_Debug_83C3C00
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._455 + 4 @ gDebug_0300070F
+ mov r0, #0x5
+ strb r0, [r1]
+ ldr r1, ._455 + 8 @ gMenuCallback
+ ldr r0, ._455 + 12 @ debug_sub_808E264
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._456:
+ .align 2, 0
+._455:
+ .word gUnknown_Debug_83C3C00
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E264+1
+
+ thumb_func_end debug_sub_808E20C
+
+ thumb_func_start debug_sub_808E264
+debug_sub_808E264:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._460 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808E310
+ ldrb r0, [r5]
+ bl debug_sub_808E2B0
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._457 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._458 @cond_branch
+._457:
+ mov r0, #0x0
+ b ._459
+._461:
+ .align 2, 0
+._460:
+ .word gDebug_0300070F
+._458:
+ bl CloseMenu
+ mov r0, #0x1
+._459:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E264
+
+ thumb_func_start debug_sub_808E2B0
+debug_sub_808E2B0:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._464 @ gUnknown_Debug_083C3C48
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._462 @cond_branch
+ ldr r0, ._464 + 4 @ gUnknown_Debug_83C3C4E
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._463:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl VarGet
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ mov r0, #0x18
+ add r1, r4, #0
+ bl debug_sub_808F31C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._463 @cond_branch
+._462:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._465:
+ .align 2, 0
+._464:
+ .word gUnknown_Debug_083C3C48
+ .word gUnknown_Debug_83C3C4E
+
+ thumb_func_end debug_sub_808E2B0
+
+ thumb_func_start debug_sub_808E310
+debug_sub_808E310:
+ push {r4, r5, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._468 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._466 @cond_branch
+ mov r5, #0x1
+ b ._467
+._469:
+ .align 2, 0
+._468:
+ .word gMain
+._466:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._470 @cond_branch
+ ldr r5, ._471 @ 0xffff
+._467:
+ ldr r1, ._471 + 4 @ gUnknown_Debug_83C3C4E
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ add r0, r0, r3
+ lsl r0, r0, #0x1
+ add r0, r0, r1
+ ldrh r4, [r0]
+ add r0, r4, #0
+ bl VarGet
+ add r1, r0, #0
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ bl VarSet
+._470:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._472:
+ .align 2, 0
+._471:
+ .word 0xffff
+ .word gUnknown_Debug_83C3C4E
+
+ thumb_func_end debug_sub_808E310
+
+ thumb_func_start debug_sub_808E36C
+debug_sub_808E36C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._473 @ gUnknown_Debug_083C32AC
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x5
+ bl InitMenu
+ ldr r1, ._473 + 4 @ gMenuCallback
+ ldr r0, ._473 + 8 @ debug_sub_808E3BC
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._474:
+ .align 2, 0
+._473:
+ .word gUnknown_Debug_083C32AC
+ .word gMenuCallback
+ .word debug_sub_808E3BC+1
+
+ thumb_func_end debug_sub_808E36C
+
+ thumb_func_start debug_sub_808E3BC
+debug_sub_808E3BC:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._475 @cond_branch
+ mov r0, #0x0
+ b ._478
+._475:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._477 @cond_branch
+ ldr r2, ._479 @ gMenuCallback
+ ldr r0, ._479 + 4 @ gUnknown_Debug_083C32AC
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._478
+._480:
+ .align 2, 0
+._479:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C32AC
+._477:
+ bl CloseMenu
+ mov r0, #0x1
+._478:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E3BC
+
+ thumb_func_start debug_sub_808E400
+debug_sub_808E400:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._481 @ gUnknown_Debug_083C347C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x3
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x3
+ bl InitMenu
+ ldr r0, ._481 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._481 + 8 @ gMenuCallback
+ ldr r0, ._481 + 12 @ debug_sub_808E5B8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._482:
+ .align 2, 0
+._481:
+ .word gUnknown_Debug_083C347C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E5B8+1
+
+ thumb_func_end debug_sub_808E400
+
+ thumb_func_start debug_sub_808E458
+debug_sub_808E458:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._483 @ gUnknown_Debug_083C3494
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._483 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._483 + 8 @ gMenuCallback
+ ldr r0, ._483 + 12 @ debug_sub_808E5B8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._484:
+ .align 2, 0
+._483:
+ .word gUnknown_Debug_083C3494
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E5B8+1
+
+ thumb_func_end debug_sub_808E458
+
+ thumb_func_start debug_sub_808E4B0
+debug_sub_808E4B0:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._485 @ gUnknown_Debug_083C34A4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x6
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x6
+ bl InitMenu
+ ldr r1, ._485 + 4 @ gDebug_0300070F
+ mov r0, #0x2
+ strb r0, [r1]
+ ldr r1, ._485 + 8 @ gMenuCallback
+ ldr r0, ._485 + 12 @ debug_sub_808E5B8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._486:
+ .align 2, 0
+._485:
+ .word gUnknown_Debug_083C34A4
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E5B8+1
+
+ thumb_func_end debug_sub_808E4B0
+
+ thumb_func_start debug_sub_808E508
+debug_sub_808E508:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._487 @ gUnknown_Debug_083C34D4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r1, ._487 + 4 @ gDebug_0300070F
+ mov r0, #0x3
+ strb r0, [r1]
+ ldr r1, ._487 + 8 @ gMenuCallback
+ ldr r0, ._487 + 12 @ debug_sub_808E5B8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._488:
+ .align 2, 0
+._487:
+ .word gUnknown_Debug_083C34D4
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E5B8+1
+
+ thumb_func_end debug_sub_808E508
+
+ thumb_func_start debug_sub_808E560
+debug_sub_808E560:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._489 @ gUnknown_Debug_083C351C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x5
+ bl InitMenu
+ ldr r1, ._489 + 4 @ gDebug_0300070F
+ mov r0, #0x4
+ strb r0, [r1]
+ ldr r1, ._489 + 8 @ gMenuCallback
+ ldr r0, ._489 + 12 @ debug_sub_808E5B8
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._490:
+ .align 2, 0
+._489:
+ .word gUnknown_Debug_083C351C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E5B8+1
+
+ thumb_func_end debug_sub_808E560
+
+ thumb_func_start debug_sub_808E5B8
+debug_sub_808E5B8:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._494 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808E604
+ ldrb r0, [r5]
+ bl debug_sub_808E660
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._491 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._492 @cond_branch
+._491:
+ mov r0, #0x0
+ b ._493
+._495:
+ .align 2, 0
+._494:
+ .word gDebug_0300070F
+._492:
+ bl CloseMenu
+ mov r0, #0x1
+._493:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E5B8
+
+ thumb_func_start debug_sub_808E604
+debug_sub_808E604:
+ push {r4, r5, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._498 @ gMain
+ ldrh r1, [r0, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._496 @cond_branch
+ mov r5, #0x1
+ b ._497
+._499:
+ .align 2, 0
+._498:
+ .word gMain
+._496:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._500 @cond_branch
+ ldr r5, ._501 @ 0xffff
+._497:
+ ldr r1, ._501 + 4 @ gUnknown_Debug_083C354A
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ add r0, r0, r3
+ lsl r0, r0, #0x1
+ add r0, r0, r1
+ ldrh r4, [r0]
+ add r0, r4, #0
+ bl VarGet
+ add r1, r0, #0
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ bl VarSet
+._500:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._502:
+ .align 2, 0
+._501:
+ .word 0xffff
+ .word gUnknown_Debug_083C354A
+
+ thumb_func_end debug_sub_808E604
+
+ thumb_func_start debug_sub_808E660
+debug_sub_808E660:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._505 @ gUnknown_Debug_083C3544
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._503 @cond_branch
+ ldr r0, ._505 + 4 @ gUnknown_Debug_083C354A
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._504:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl VarGet
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ mov r0, #0x18
+ add r1, r4, #0
+ bl debug_sub_808F31C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._504 @cond_branch
+._503:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._506:
+ .align 2, 0
+._505:
+ .word gUnknown_Debug_083C3544
+ .word gUnknown_Debug_083C354A
+
+ thumb_func_end debug_sub_808E660
+
+ thumb_func_start debug_sub_808E6C0
+debug_sub_808E6C0:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._507 @ gUnknown_Debug_083C4644
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._507 + 4 @ gMenuCallback
+ ldr r0, ._507 + 8 @ debug_sub_808E710
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._508:
+ .align 2, 0
+._507:
+ .word gUnknown_Debug_083C4644
+ .word gMenuCallback
+ .word debug_sub_808E710+1
+
+ thumb_func_end debug_sub_808E6C0
+
+ thumb_func_start debug_sub_808E710
+debug_sub_808E710:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._509 @cond_branch
+ mov r0, #0x0
+ b ._512
+._509:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._511 @cond_branch
+ ldr r2, ._513 @ gMenuCallback
+ ldr r0, ._513 + 4 @ gUnknown_Debug_083C4644
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._512
+._514:
+ .align 2, 0
+._513:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C4644
+._511:
+ bl CloseMenu
+ mov r0, #0x1
+._512:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E710
+
+ thumb_func_start debug_sub_808E754
+debug_sub_808E754:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._515 @ gUnknown_Debug_083C470C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._515 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._515 + 8 @ gMenuCallback
+ ldr r0, ._515 + 12 @ debug_sub_808E804
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._516:
+ .align 2, 0
+._515:
+ .word gUnknown_Debug_083C470C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E804+1
+
+ thumb_func_end debug_sub_808E754
+
+ thumb_func_start debug_sub_808E7AC
+debug_sub_808E7AC:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._517 @ gUnknown_Debug_083C4754C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._517 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._517 + 8 @ gMenuCallback
+ ldr r0, ._517 + 12 @ debug_sub_808E804
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._518:
+ .align 2, 0
+._517:
+ .word gUnknown_Debug_083C4754C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808E804+1
+
+ thumb_func_end debug_sub_808E7AC
+
+ thumb_func_start debug_sub_808E804
+debug_sub_808E804:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._522 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808E850
+ ldrb r0, [r5]
+ bl debug_sub_808E8AC
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._519 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._520 @cond_branch
+._519:
+ mov r0, #0x0
+ b ._521
+._523:
+ .align 2, 0
+._522:
+ .word gDebug_0300070F
+._520:
+ bl CloseMenu
+ mov r0, #0x1
+._521:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E804
+
+ thumb_func_start debug_sub_808E850
+debug_sub_808E850:
+ push {r4, r5, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._526 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._524 @cond_branch
+ mov r5, #0x1
+ b ._525
+._527:
+ .align 2, 0
+._526:
+ .word gMain
+._524:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._528 @cond_branch
+ ldr r5, ._529 @ 0xffff
+._525:
+ ldr r1, ._529 + 4 @ gUnknown_Debug_083C478E
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ add r0, r0, r3
+ lsl r0, r0, #0x1
+ add r0, r0, r1
+ ldrh r4, [r0]
+ add r0, r4, #0
+ bl VarGet
+ add r1, r0, #0
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ bl VarSet
+._528:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._530:
+ .align 2, 0
+._529:
+ .word 0xffff
+ .word gUnknown_Debug_083C478E
+
+ thumb_func_end debug_sub_808E850
+
+ thumb_func_start debug_sub_808E8AC
+debug_sub_808E8AC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._533 @ gUnknown_Debug_083C478C
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._531 @cond_branch
+ ldr r0, ._533 + 4 @ gUnknown_Debug_083C478E
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._532:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl VarGet
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ mov r0, #0x18
+ add r1, r4, #0
+ bl debug_sub_808F31C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._532 @cond_branch
+._531:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._534:
+ .align 2, 0
+._533:
+ .word gUnknown_Debug_083C478C
+ .word gUnknown_Debug_083C478E
+
+ thumb_func_end debug_sub_808E8AC
+
+ thumb_func_start debug_sub_808E90C
+debug_sub_808E90C:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x18
+ mov r3, #0x5
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._535 @ gUnknown_Debug_083C35C4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x2
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x17
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x2
+ bl InitMenu
+ ldr r1, ._535 + 4 @ gMenuCallback
+ ldr r0, ._535 + 8 @ debug_sub_808E95C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._536:
+ .align 2, 0
+._535:
+ .word gUnknown_Debug_083C35C4
+ .word gMenuCallback
+ .word debug_sub_808E95C+1
+
+ thumb_func_end debug_sub_808E90C
+
+ thumb_func_start debug_sub_808E95C
+debug_sub_808E95C:
+ push {lr}
+ bl Menu_ProcessInput
+ lsl r0, r0, #0x18
+ asr r1, r0, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r1, r0
+ bne ._537 @cond_branch
+ mov r0, #0x0
+ b ._540
+._537:
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._539 @cond_branch
+ ldr r2, ._541 @ gMenuCallback
+ ldr r0, ._541 + 4 @ gUnknown_Debug_083C35C4
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r0, [r1]
+ str r0, [r2]
+ mov r0, #0x0
+ b ._540
+._542:
+ .align 2, 0
+._541:
+ .word gMenuCallback
+ .word gUnknown_Debug_083C35C4
+._539:
+ bl CloseMenu
+ mov r0, #0x1
+._540:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808E95C
+
+ thumb_func_start debug_sub_808E9A0
+debug_sub_808E9A0:
+ push {r4, lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._543 @ gUnknown_Debug_083C369C
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x9
+ bl Menu_PrintItems
+ mov r4, #0x0
+ str r4, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x9
+ bl InitMenu
+ ldr r0, ._543 + 4 @ gDebug_0300070F
+ strb r4, [r0]
+ ldr r1, ._543 + 8 @ gMenuCallback
+ ldr r0, ._543 + 12 @ debug_sub_808EA50
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r4}
+ pop {r1}
+ bx r1
+._544:
+ .align 2, 0
+._543:
+ .word gUnknown_Debug_083C369C
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808EA50+1
+
+ thumb_func_end debug_sub_808E9A0
+
+ thumb_func_start debug_sub_808E9F8
+debug_sub_808E9F8:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r3, ._545 @ gUnknown_Debug_083C36E4
+ mov r0, #0x2
+ mov r1, #0x1
+ mov r2, #0x7
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0x1c
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0x7
+ bl InitMenu
+ ldr r1, ._545 + 4 @ gDebug_0300070F
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r1, ._545 + 8 @ gMenuCallback
+ ldr r0, ._545 + 12 @ debug_sub_808EA50
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._546:
+ .align 2, 0
+._545:
+ .word gUnknown_Debug_083C36E4
+ .word gDebug_0300070F
+ .word gMenuCallback
+ .word debug_sub_808EA50+1
+
+ thumb_func_end debug_sub_808E9F8
+
+ thumb_func_start debug_sub_808EA50
+debug_sub_808EA50:
+ push {r4, r5, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ add r1, r0, #0
+ ldr r5, ._550 @ gDebug_0300070F
+ ldrb r0, [r5]
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ bl debug_sub_808EAFC
+ ldrb r0, [r5]
+ bl debug_sub_808EA9C
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._547 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._548 @cond_branch
+._547:
+ mov r0, #0x0
+ b ._549
+._551:
+ .align 2, 0
+._550:
+ .word gDebug_0300070F
+._548:
+ bl CloseMenu
+ mov r0, #0x1
+._549:
+ pop {r4, r5}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808EA50
+
+ thumb_func_start debug_sub_808EA9C
+debug_sub_808EA9C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ mov r5, #0x0
+ ldr r0, ._554 @ gUnknown_Debug_083C371C
+ add r0, r1, r0
+ ldrb r2, [r0]
+ cmp r5, r2
+ bcs ._552 @cond_branch
+ ldr r0, ._554 + 4 @ gUnknown_Debug_083C371E
+ mov r8, r0
+ lsl r0, r1, #0x3
+ add r0, r0, r1
+ lsl r7, r0, #0x1
+ add r6, r2, #0
+._553:
+ lsl r0, r5, #0x1
+ add r4, r0, #1
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ add r0, r0, r7
+ add r0, r0, r8
+ ldrh r0, [r0]
+ bl VarGet
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ lsr r2, r2, #0x10
+ mov r0, #0x18
+ add r1, r4, #0
+ bl debug_sub_808F31C
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, r6
+ bcc ._553 @cond_branch
+._552:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._555:
+ .align 2, 0
+._554:
+ .word gUnknown_Debug_083C371C
+ .word gUnknown_Debug_083C371E
+
+ thumb_func_end debug_sub_808EA9C
+
+ thumb_func_start debug_sub_808EAFC
+debug_sub_808EAFC:
+ push {r4, r5, lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ ldr r0, ._558 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._556 @cond_branch
+ mov r5, #0x1
+ b ._557
+._559:
+ .align 2, 0
+._558:
+ .word gMain
+._556:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._560 @cond_branch
+ ldr r5, ._561 @ 0xffff
+._557:
+ ldr r1, ._561 + 4 @ gUnknown_Debug_083C371E
+ lsl r0, r2, #0x3
+ add r0, r0, r2
+ add r0, r0, r3
+ lsl r0, r0, #0x1
+ add r0, r0, r1
+ ldrh r4, [r0]
+ add r0, r4, #0
+ bl VarGet
+ add r1, r0, #0
+ add r1, r5, r1
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r4, #0
+ bl VarSet
+._560:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._562:
+ .align 2, 0
+._561:
+ .word 0xffff
+ .word gUnknown_Debug_083C371E
+
+ thumb_func_end debug_sub_808EAFC
+
+ thumb_func_start debug_sub_808EB58
+debug_sub_808EB58:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xc
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._563 @ gUnknown_Debug_083C47B2
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._563 + 4 @ gUnknown_Debug_083C47F0
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x8
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xb
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x8
+ bl InitMenu
+ ldr r1, ._563 + 8 @ gMenuCallback
+ ldr r0, ._563 + 12 @ debug_sub_808EC10
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._564:
+ .align 2, 0
+._563:
+ .word gUnknown_Debug_083C47B2
+ .word gUnknown_Debug_083C47F0
+ .word gMenuCallback
+ .word debug_sub_808EC10+1
+
+ thumb_func_end debug_sub_808EB58
+
+ thumb_func_start debug_sub_808EBB4
+debug_sub_808EBB4:
+ push {lr}
+ add sp, sp, #0xfffffff8
+ bl Menu_EraseScreen
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xd
+ mov r3, #0xd
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._565 @ gUnknown_Debug_083C4830
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r3, ._565 + 4 @ gUnknown_Debug_083C4888
+ mov r0, #0x2
+ mov r1, #0x3
+ mov r2, #0x5
+ bl Menu_PrintItems
+ mov r0, #0x0
+ str r0, [sp]
+ mov r0, #0xc
+ str r0, [sp, #0x4]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x5
+ bl InitMenu
+ ldr r1, ._565 + 8 @ gMenuCallback
+ ldr r0, ._565 + 12 @ debug_sub_808EC5C
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x8
+ pop {r1}
+ bx r1
+._566:
+ .align 2, 0
+._565:
+ .word gUnknown_Debug_083C4830
+ .word gUnknown_Debug_083C4888
+ .word gMenuCallback
+ .word debug_sub_808EC5C+1
+
+ thumb_func_end debug_sub_808EBB4
+
+ thumb_func_start debug_sub_808EC10
+debug_sub_808EC10:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._568 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._568 @cond_branch
+ ldr r1, ._570 @ gSaveBlock1
+ lsl r0, r2, #0x18
+ asr r0, r0, #0x18
+ ldr r2, ._570 + 4 @ 0x13c8
+ add r1, r1, r2
+ strh r0, [r1]
+ bl CloseMenu
+ mov r0, #0x1
+ b ._569
+._571:
+ .align 2, 0
+._570:
+ .word gSaveBlock1
+ .word 0x13c8
+._568:
+ mov r0, #0x0
+._569:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808EC10
+
+ thumb_func_start debug_sub_808EC5C
+debug_sub_808EC5C:
+ push {r4, lr}
+ bl Menu_ProcessInput
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl Menu_GetCursorPos
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ lsl r4, r4, #0x18
+ asr r4, r4, #0x18
+ mov r0, #0x2
+ neg r0, r0
+ cmp r4, r0
+ beq ._573 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ cmp r4, r0
+ beq ._573 @cond_branch
+ ldr r0, ._575 @ 0x40a7
+ lsl r1, r1, #0x18
+ asr r1, r1, #0x8
+ lsr r1, r1, #0x10
+ bl VarSet
+ bl CloseMenu
+ mov r0, #0x1
+ b ._574
+._576:
+ .align 2, 0
+._575:
+ .word 0x40a7
+._573:
+ mov r0, #0x0
+._574:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_808EC5C
+
+ thumb_func_start debug_sub_808ECA4
+debug_sub_808ECA4:
+ push {lr}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r1, ._577 @ gMenuCallback
+ ldr r0, ._577 + 4 @ debug_sub_808ECD0
+ str r0, [r1]
+ mov r0, #0x0
+ add sp, sp, #0x4
+ pop {r1}
+ bx r1
+._578:
+ .align 2, 0
+._577:
+ .word gMenuCallback
+ .word debug_sub_808ECD0+1
+
+ thumb_func_end debug_sub_808ECA4
+
+ thumb_func_start debug_sub_808ECD0
+debug_sub_808ECD0:
+ push {lr}
+ bl UpdatePaletteFade
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._579 @cond_branch
+ mov r0, #0x0
+ b ._580
+._579:
+ bl CloseMenu
+ mov r0, #0x2
+ bl debug_sub_808F168
+ ldr r0, ._581 @ CB2_ContestPainting
+ bl SetMainCallback2
+ ldr r1, ._581 + 4 @ gMain
+ ldr r0, ._581 + 8 @ debug_sub_808B868
+ str r0, [r1, #0x8]
+ mov r0, #0x1
+._580:
+ pop {r1}
+ bx r1
+._582:
+ .align 2, 0
+._581:
+ .word CB2_ContestPainting+1
+ .word gMain
+ .word debug_sub_808B868+1
+
+ thumb_func_end debug_sub_808ECD0
+
+ thumb_func_start TomomichiDebugMenu_Config
+TomomichiDebugMenu_Config:
+ mov r0, #0x0
+ bx lr
+
+ thumb_func_end TomomichiDebugMenu_Config
+
+ thumb_func_start debug_sub_808ED0C
+debug_sub_808ED0C:
+ push {lr}
+ ldr r2, ._590 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._584 @cond_branch
+ ldr r1, ._590 + 4 @ gDebug_03000700
+ ldrh r0, [r1]
+ cmp r0, #0x1
+ beq ._584 @cond_branch
+ sub r0, r0, #0x1
+ strh r0, [r1]
+._584:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._586 @cond_branch
+ ldr r3, ._590 + 4 @ gDebug_03000700
+ ldrh r1, [r3]
+ ldr r0, ._590 + 8 @ 0x19b
+ cmp r1, r0
+ beq ._586 @cond_branch
+ add r0, r1, #1
+ strh r0, [r3]
+._586:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._587 @cond_branch
+ ldr r1, ._590 + 4 @ gDebug_03000700
+ ldrh r0, [r1]
+ cmp r0, #0xa
+ bls ._588 @cond_branch
+ sub r0, r0, #0xa
+ b ._589
+._591:
+ .align 2, 0
+._590:
+ .word gMain
+ .word gDebug_03000700
+ .word 0x19b
+._588:
+ mov r0, #0x1
+._589:
+ strh r0, [r1]
+._587:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._592 @cond_branch
+ ldr r2, ._595 @ gDebug_03000700
+ ldrh r1, [r2]
+ ldr r0, ._595 + 4 @ 0x191
+ cmp r1, r0
+ bhi ._593 @cond_branch
+ add r0, r1, #0
+ add r0, r0, #0xa
+ b ._594
+._596:
+ .align 2, 0
+._595:
+ .word gDebug_03000700
+ .word 0x191
+._593:
+ ldr r1, ._597 @ 0x19b
+ add r0, r1, #0
+._594:
+ strh r0, [r2]
+._592:
+ pop {r0}
+ bx r0
+._598:
+ .align 2, 0
+._597:
+ .word 0x19b
+
+ thumb_func_end debug_sub_808ED0C
+
+ thumb_func_start debug_sub_808ED9C
+debug_sub_808ED9C:
+ push {lr}
+ ldr r2, ._606 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._600 @cond_branch
+ ldr r1, ._606 + 4 @ gDebug_03000708
+ ldr r0, [r1]
+ cmp r0, #0
+ beq ._600 @cond_branch
+ sub r0, r0, #0x1
+ str r0, [r1]
+._600:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._602 @cond_branch
+ ldr r3, ._606 + 4 @ gDebug_03000708
+ ldr r1, [r3]
+ mov r0, #0x1
+ neg r0, r0
+ cmp r1, r0
+ beq ._602 @cond_branch
+ add r0, r1, #1
+ str r0, [r3]
+._602:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._603 @cond_branch
+ ldr r1, ._606 + 4 @ gDebug_03000708
+ ldr r0, [r1]
+ cmp r0, #0xf
+ bls ._604 @cond_branch
+ sub r0, r0, #0x10
+ b ._605
+._607:
+ .align 2, 0
+._606:
+ .word gMain
+ .word gDebug_03000708
+._604:
+ mov r0, #0x0
+._605:
+ str r0, [r1]
+._603:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._608 @cond_branch
+ ldr r3, ._611 @ gDebug_03000708
+ ldr r1, [r3]
+ mov r0, #0x11
+ neg r0, r0
+ cmp r1, r0
+ bhi ._609 @cond_branch
+ add r0, r1, #0
+ add r0, r0, #0x10
+ b ._610
+._612:
+ .align 2, 0
+._611:
+ .word gDebug_03000708
+._609:
+ mov r0, #0x1
+ neg r0, r0
+._610:
+ str r0, [r3]
+._608:
+ ldrh r2, [r2, #0x2e]
+ mov r1, #0xc0
+ lsl r1, r1, #0x2
+ add r0, r1, #0
+ and r0, r0, r2
+ cmp r0, r1
+ bne ._613 @cond_branch
+ ldr r1, ._614 @ gDebug_03000708
+ mov r0, #0x1
+ neg r0, r0
+ str r0, [r1]
+._613:
+ pop {r0}
+ bx r0
+._615:
+ .align 2, 0
+._614:
+ .word gDebug_03000708
+
+ thumb_func_end debug_sub_808ED9C
+
+ thumb_func_start debug_sub_808EE3C
+debug_sub_808EE3C:
+ push {lr}
+ ldr r2, ._622 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._617 @cond_branch
+ ldr r1, ._622 + 4 @ gDebug_0300070C
+ ldrb r0, [r1]
+ cmp r0, #0x1
+ beq ._617 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+._617:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._619 @cond_branch
+ ldr r1, ._622 + 4 @ gDebug_0300070C
+ ldrb r0, [r1]
+ cmp r0, #0x5
+ beq ._619 @cond_branch
+ add r0, r0, #0x1
+ strb r0, [r1]
+._619:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._620 @cond_branch
+ ldr r1, ._622 + 4 @ gDebug_0300070C
+ mov r0, #0x1
+ strb r0, [r1]
+._620:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._621 @cond_branch
+ ldr r1, ._622 + 4 @ gDebug_0300070C
+ mov r0, #0x5
+ strb r0, [r1]
+._621:
+ pop {r0}
+ bx r0
+._623:
+ .align 2, 0
+._622:
+ .word gMain
+ .word gDebug_0300070C
+
+ thumb_func_end debug_sub_808EE3C
+
+ thumb_func_start debug_sub_808EE9C
+debug_sub_808EE9C:
+ push {lr}
+ ldr r2, ._631 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._625 @cond_branch
+ ldr r1, ._631 + 4 @ gDebug_0300070D
+ ldrb r0, [r1]
+ cmp r0, #0x1
+ beq ._625 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+._625:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._627 @cond_branch
+ ldr r1, ._631 + 4 @ gDebug_0300070D
+ ldrb r0, [r1]
+ cmp r0, #0xf
+ beq ._627 @cond_branch
+ add r0, r0, #0x1
+ strb r0, [r1]
+._627:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._628 @cond_branch
+ ldr r1, ._631 + 4 @ gDebug_0300070D
+ ldrb r0, [r1]
+ cmp r0, #0xa
+ bls ._629 @cond_branch
+ sub r0, r0, #0xa
+ b ._630
+._632:
+ .align 2, 0
+._631:
+ .word gMain
+ .word gDebug_0300070D
+._629:
+ mov r0, #0x0
+._630:
+ strb r0, [r1]
+._628:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._633 @cond_branch
+ ldr r1, ._636 @ gDebug_0300070D
+ ldrb r0, [r1]
+ cmp r0, #0x5
+ bhi ._634 @cond_branch
+ add r0, r0, #0xa
+ b ._635
+._637:
+ .align 2, 0
+._636:
+ .word gDebug_0300070D
+._634:
+ mov r0, #0xf
+._635:
+ strb r0, [r1]
+._633:
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808EE9C
+
+ thumb_func_start debug_sub_808EF14
+debug_sub_808EF14:
+ push {lr}
+ ldr r2, ._645 @ gMain
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._639 @cond_branch
+ ldr r1, ._645 + 4 @ gDebug_0300070E
+ ldrb r0, [r1]
+ cmp r0, #0x1
+ beq ._639 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+._639:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._641 @cond_branch
+ ldr r1, ._645 + 4 @ gDebug_0300070E
+ ldrb r0, [r1]
+ cmp r0, #0xf
+ beq ._641 @cond_branch
+ add r0, r0, #0x1
+ strb r0, [r1]
+._641:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._642 @cond_branch
+ ldr r1, ._645 + 4 @ gDebug_0300070E
+ ldrb r0, [r1]
+ cmp r0, #0xa
+ bls ._643 @cond_branch
+ sub r0, r0, #0xa
+ b ._644
+._646:
+ .align 2, 0
+._645:
+ .word gMain
+ .word gDebug_0300070E
+._643:
+ mov r0, #0x0
+._644:
+ strb r0, [r1]
+._642:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._647 @cond_branch
+ ldr r1, ._650 @ gDebug_0300070E
+ ldrb r0, [r1]
+ cmp r0, #0x5
+ bhi ._648 @cond_branch
+ add r0, r0, #0xa
+ b ._649
+._651:
+ .align 2, 0
+._650:
+ .word gDebug_0300070E
+._648:
+ mov r0, #0xf
+._649:
+ strb r0, [r1]
+._647:
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_808EF14
+
+ thumb_func_start debug_sub_808EF8C
+debug_sub_808EF8C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ cmp r6, #0x2
+ bgt ._653 @cond_branch
+ cmp r6, #0
+ blt ._653 @cond_branch
+ mov r3, #0x0
+ ldr r0, ._656 @ gDebug_03000708
+ mov r8, r0
+ ldr r4, ._656 + 4 @ gDebug_03000710
+ mov r7, #0x7
+ mov r5, #0xf
+._658:
+ sub r0, r7, r3
+ lsl r0, r0, #0x2
+ mov r1, r8
+ ldr r2, [r1]
+ LSR r2, r0
+ and r2, r2, r5
+ cmp r2, #0x9
+ bhi ._654 @cond_branch
+ add r1, r3, r4
+ add r0, r2, #0
+ add r0, r0, #0xa1
+ b ._655
+._657:
+ .align 2, 0
+._656:
+ .word gDebug_03000708
+ .word gDebug_03000710
+._654:
+ add r1, r3, r4
+ add r0, r2, #0
+ sub r0, r0, #0x4f
+._655:
+ strb r0, [r1]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0x7
+ bls ._658 @cond_branch
+ ldr r0, ._666 @ gDebug_03000710
+ mov r1, #0xff
+ strb r1, [r0, #0x8]
+ mov r1, #0xc
+ mov r2, #0x5
+ bl Menu_PrintText
+._653:
+ mov r3, #0x0
+ ldr r7, ._666 @ gDebug_03000710
+ ldr r5, ._666 + 4 @ gDebug_03000700
+ ldr r2, ._666 + 8 @ gSpeciesNames
+ mov r8, r2
+ add r4, r7, #0
+ mov r2, #0x0
+._659:
+ add r1, r3, #1
+ add r0, r1, r4
+ strb r2, [r0]
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ cmp r3, #0x9
+ bls ._659 @cond_branch
+ mov r3, #0x0
+ ldrh r2, [r5]
+ mov r0, #0xb
+ add r1, r2, #0
+ mul r1, r1, r0
+ mov r2, r8
+ add r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._661 @cond_branch
+ ldr r0, ._666 @ gDebug_03000710
+ mov ip, r0
+ mov r5, r8
+ add r4, r1, #0
+._662:
+ add r1, r3, #1
+ mov r0, ip
+ add r2, r1, r0
+ add r0, r3, r4
+ add r0, r0, r5
+ ldrb r0, [r0]
+ strb r0, [r2]
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ add r0, r3, r4
+ add r0, r0, r5
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._661 @cond_branch
+ cmp r3, #0x9
+ bls ._662 @cond_branch
+._661:
+ mov r0, #0xb1
+ strb r0, [r7]
+ mov r0, #0xb2
+ strb r0, [r7, #0xb]
+ mov r0, #0xff
+ strb r0, [r7, #0xc]
+ cmp r6, #0x2
+ bgt ._664 @cond_branch
+ cmp r6, #0
+ blt ._664 @cond_branch
+ add r0, r7, #0
+ mov r1, #0x8
+ mov r2, #0x1
+ bl Menu_PrintText
+ b ._665
+._667:
+ .align 2, 0
+._666:
+ .word gDebug_03000710
+ .word gDebug_03000700
+ .word gSpeciesNames
+._664:
+ ldr r0, ._672 @ gDebug_03000710
+ mov r1, #0xc
+ mov r2, #0x1
+ bl Menu_PrintText
+._665:
+ ldr r5, ._672 @ gDebug_03000710
+ mov r0, #0xff
+ strb r0, [r5, #0x3]
+ ldr r4, ._672 + 4 @ gDebug_03000700
+ ldrh r0, [r4]
+ mov r1, #0x64
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5]
+ ldrh r0, [r4]
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xa
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x1]
+ ldrh r0, [r4]
+ mov r1, #0xa
+ bl __umodsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x2]
+ add r0, r5, #0
+ mov r1, #0xc
+ mov r2, #0x3
+ bl Menu_PrintText
+ cmp r6, #0x1
+ beq ._668 @cond_branch
+ cmp r6, #0x1
+ bgt ._669 @cond_branch
+ cmp r6, #0
+ beq ._670 @cond_branch
+ b ._679
+._673:
+ .align 2, 0
+._672:
+ .word gDebug_03000710
+ .word gDebug_03000700
+._669:
+ cmp r6, #0x2
+ beq ._674 @cond_branch
+ b ._679
+._670:
+ ldr r4, ._677 @ gDebug_0300070C
+ b ._676
+._678:
+ .align 2, 0
+._677:
+ .word gDebug_0300070C
+._668:
+ ldr r4, ._680 @ gDebug_0300070D
+._676:
+ ldrb r0, [r4]
+ mov r1, #0x64
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5]
+ ldrb r0, [r4]
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0xa
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x1]
+ ldrb r0, [r4]
+ mov r1, #0xa
+ bl __umodsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x2]
+ add r0, r5, #0
+ mov r1, #0xc
+ mov r2, #0x7
+ bl Menu_PrintText
+ b ._679
+._681:
+ .align 2, 0
+._680:
+ .word gDebug_0300070D
+._674:
+ ldr r4, ._682 @ gDebug_0300070E
+ ldrb r0, [r4]
+ mov r1, #0x64
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5]
+ ldrb r0, [r4]
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0xa
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x1]
+ ldrb r0, [r4]
+ mov r1, #0xa
+ bl __umodsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x2]
+ add r0, r5, #0
+ mov r1, #0xc
+ mov r2, #0x7
+ bl Menu_PrintText
+._679:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._683:
+ .align 2, 0
+._682:
+ .word gDebug_0300070E
+
+ thumb_func_end debug_sub_808EF8C
+
+ thumb_func_start debug_sub_808F168
+debug_sub_808F168:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r4, ._686 @ 0x2015de0
+ ldr r0, ._686 + 4 @ gDebug_03000700
+ ldrh r0, [r0]
+ strh r0, [r4, #0x8]
+ ldr r0, ._686 + 8 @ gDebug_03000704
+ ldr r0, [r0]
+ str r0, [r4, #0x4]
+ ldr r0, ._686 + 12 @ gDebug_03000708
+ ldr r0, [r0]
+ str r0, [r4]
+ cmp r1, #0x5
+ bls ._684 @cond_branch
+ b ._707
+._684:
+ lsl r0, r1, #0x2
+ ldr r1, ._686 + 16 @
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+._687:
+ .align 2, 0
+._686:
+ .word 0x2015de0
+ .word gDebug_03000700
+ .word gDebug_03000704
+ .word gDebug_03000708
+ .word ._688
+._688:
+ .word ._689
+ .word ._690
+ .word ._691
+ .word ._692
+ .word ._693
+ .word ._694
+._689:
+ ldr r0, ._696 @ 0x2000000
+ ldr r2, ._696 + 4 @ 0x15ddf
+ add r1, r0, r2
+ mov r2, #0x0
+ strb r2, [r1]
+ ldr r1, ._696 + 8 @ 0x15dde
+ add r0, r0, r1
+ strb r2, [r0]
+ ldr r0, ._696 + 12 @ gDebug_0300070C
+ ldrb r0, [r0]
+ sub r0, r0, #0x1
+ strb r0, [r4, #0xa]
+ add r0, r4, #0
+ add r0, r0, #0x16
+ ldr r1, ._696 + 16 @ gUnknown_Debug_083C48BB
+ bl StringCopy
+ b ._704
+._697:
+ .align 2, 0
+._696:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+ .word gDebug_0300070C
+ .word gUnknown_Debug_083C48BB
+._690:
+ ldr r1, ._699 @ 0x2000000
+ ldr r0, ._699 + 4 @ 0x15ddf
+ add r2, r1, r0
+ mov r0, #0x0
+ strb r0, [r2]
+ ldr r2, ._699 + 8 @ 0x15dde
+ add r1, r1, r2
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r0, ._699 + 12 @ gDebug_0300070D
+ ldrb r0, [r0]
+ sub r0, r0, #0x1
+ b ._698
+._700:
+ .align 2, 0
+._699:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+ .word gDebug_0300070D
+._691:
+ ldr r1, ._702 @ 0x2000000
+ ldr r0, ._702 + 4 @ 0x15ddf
+ add r2, r1, r0
+ mov r0, #0x1
+ strb r0, [r2]
+ ldr r2, ._702 + 8 @ 0x15dde
+ add r1, r1, r2
+ mov r0, #0x8
+ strb r0, [r1]
+ ldr r0, ._702 + 12 @ gDebug_0300070E
+ ldrb r0, [r0]
+ sub r0, r0, #0x1
+ strb r0, [r4, #0xa]
+ b ._707
+._703:
+ .align 2, 0
+._702:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+ .word gDebug_0300070E
+._692:
+ ldr r1, ._705 @ 0x2000000
+ ldr r2, ._705 + 4 @ 0x15ddf
+ add r0, r1, r2
+ mov r2, #0x0
+ strb r2, [r0]
+ ldr r0, ._705 + 8 @ 0x15dde
+ add r1, r1, r0
+ mov r0, #0x8
+ strb r0, [r1]
+ strb r2, [r4, #0xa]
+ b ._704
+._706:
+ .align 2, 0
+._705:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+._693:
+ ldr r1, ._708 @ 0x2000000
+ ldr r0, ._708 + 4 @ 0x15ddf
+ add r2, r1, r0
+ mov r0, #0x0
+ strb r0, [r2]
+ ldr r2, ._708 + 8 @ 0x15dde
+ add r1, r1, r2
+ mov r0, #0x8
+ strb r0, [r1]
+ mov r0, #0x3
+._698:
+ strb r0, [r4, #0xa]
+._704:
+ add r0, r4, #0
+ add r0, r0, #0xb
+ ldr r1, ._708 + 12 @ gUnknown_Debug_083C48B0
+ bl StringCopy
+ b ._707
+._709:
+ .align 2, 0
+._708:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+ .word gUnknown_Debug_083C48B0
+._694:
+ ldr r1, ._710 @ 0x2000000
+ ldr r0, ._710 + 4 @ 0x15ddf
+ add r2, r1, r0
+ mov r0, #0x0
+ strb r0, [r2]
+ ldr r2, ._710 + 8 @ 0x15dde
+ add r1, r1, r2
+ mov r0, #0x8
+ strb r0, [r1]
+ mov r0, #0x9
+ strb r0, [r4, #0xa]
+ add r0, r4, #0
+ add r0, r0, #0xb
+ ldr r1, ._710 + 12 @ gUnknown_Debug_083C48B0
+ bl StringCopy
+._707:
+ pop {r4}
+ pop {r0}
+ bx r0
+._711:
+ .align 2, 0
+._710:
+ .word 0x2000000
+ .word 0x15ddf
+ .word 0x15dde
+ .word gUnknown_Debug_083C48B0
+
+ thumb_func_end debug_sub_808F168
+
+ thumb_func_start debug_sub_808F2E0
+debug_sub_808F2E0:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ lsl r1, r1, #0x18
+ lsr r3, r1, #0x18
+ lsl r2, r2, #0x18
+ cmp r2, #0
+ bne ._712 @cond_branch
+ ldr r1, ._714 @ gDebug_03000710
+ mov r0, #0xa1
+ b ._713
+._715:
+ .align 2, 0
+._714:
+ .word gDebug_03000710
+._712:
+ ldr r1, ._716 @ gDebug_03000710
+ mov r0, #0xa2
+._713:
+ strb r0, [r1]
+ mov r0, #0xff
+ strb r0, [r1, #0x1]
+ add r0, r1, #0
+ add r1, r4, #0
+ add r2, r3, #0
+ bl Menu_PrintText
+ pop {r4}
+ pop {r0}
+ bx r0
+._717:
+ .align 2, 0
+._716:
+ .word gDebug_03000710
+
+ thumb_func_end debug_sub_808F2E0
+
+ thumb_func_start debug_sub_808F31C
+debug_sub_808F31C:
+ push {r4, r5, r6, lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6}
+ mov r8, r0
+ mov r9, r1
+ add r4, r2, #0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r8, r0
+ mov r0, r9
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r9, r0
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ ldr r5, ._718 @ gDebug_03000710
+ ldr r6, ._718 + 4 @ 0x2710
+ add r0, r4, #0
+ add r1, r6, #0
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r6, #0xfa
+ lsl r6, r6, #0x2
+ add r1, r6, #0
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x1]
+ add r0, r4, #0
+ add r1, r6, #0
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0x64
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x2]
+ add r0, r4, #0
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xa
+ bl __udivsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x3]
+ add r0, r4, #0
+ mov r1, #0xa
+ bl __umodsi3
+ add r0, r0, #0xa1
+ strb r0, [r5, #0x4]
+ mov r0, #0xff
+ strb r0, [r5, #0x5]
+ add r0, r5, #0
+ mov r1, r8
+ mov r2, r9
+ bl Menu_PrintText
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._719:
+ .align 2, 0
+._718:
+ .word gDebug_03000710
+ .word 0x2710
+
+ thumb_func_end debug_sub_808F31C
+
+ thumb_func_start debug_nullsub_66
+debug_nullsub_66:
+ bx lr
+
+ thumb_func_end debug_nullsub_66
+
+ .align 2, 0
+
+.endif
diff --git a/asm/unk_debug_menu_3.s b/asm/unk_debug_menu_3.s
new file mode 100644
index 000000000..aa156a99b
--- /dev/null
+++ b/asm/unk_debug_menu_3.s
@@ -0,0 +1,747 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ .text
+
+ thumb_func_start debug_sub_813C404
+debug_sub_813C404:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._1 @ gUnknown_Debug_845DDB2
+ ldr r4, ._1 + 4 @ gUnknown_Debug_845DAE1
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._2:
+ .align 2, 0
+._1:
+ .word gUnknown_Debug_845DDB2
+ .word gUnknown_Debug_845DAE1
+
+ thumb_func_end debug_sub_813C404
+
+ thumb_func_start debug_sub_813C430
+debug_sub_813C430:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._3 @ gUnknown_Debug_845E402
+ ldr r4, ._3 + 4 @ gUnknown_Debug_845E3E0
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._4:
+ .align 2, 0
+._3:
+ .word gUnknown_Debug_845E402
+ .word gUnknown_Debug_845E3E0
+
+ thumb_func_end debug_sub_813C430
+
+ thumb_func_start debug_sub_813C45C
+debug_sub_813C45C:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._5 @ gUnknown_Debug_845E443
+ ldr r4, ._5 + 4 @ gUnknown_Debug_845E422
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._6:
+ .align 2, 0
+._5:
+ .word gUnknown_Debug_845E443
+ .word gUnknown_Debug_845E422
+
+ thumb_func_end debug_sub_813C45C
+
+ thumb_func_start debug_sub_813C488
+debug_sub_813C488:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._7 @ gUnknown_Debug_845E422
+ ldr r4, ._7 + 4 @ gUnknown_Debug_845E402
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._8:
+ .align 2, 0
+._7:
+ .word gUnknown_Debug_845E422
+ .word gUnknown_Debug_845E402
+
+ thumb_func_end debug_sub_813C488
+
+ thumb_func_start debug_sub_813C4B4
+debug_sub_813C4B4:
+ push {r4, lr}
+ ldr r4, ._9 @ gUnknown_Debug_845E619
+ ldr r1, ._9 + 4 @ gUnknown_Debug_845E606
+ sub r4, r4, r1
+ add r2, r4, #0
+ bl memcpy
+ add r0, r4, #0
+ pop {r4}
+ pop {r1}
+ bx r1
+._10:
+ .align 2, 0
+._9:
+ .word gUnknown_Debug_845E619
+ .word gUnknown_Debug_845E606
+
+ thumb_func_end debug_sub_813C4B4
+
+ thumb_func_start debug_sub_813C4D4
+debug_sub_813C4D4:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._11 @ gUnknown_Debug_845E712
+ ldr r4, ._11 + 4 @ gUnknown_Debug_845E619
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_81261B4
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._12:
+ .align 2, 0
+._11:
+ .word gUnknown_Debug_845E712
+ .word gUnknown_Debug_845E619
+
+ thumb_func_end debug_sub_813C4D4
+
+ thumb_func_start debug_sub_813C500
+debug_sub_813C500:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ ldr r5, ._13 @ gUnknown_Debug_845E797
+ ldr r4, ._13 + 4 @ gUnknown_Debug_845E712
+ sub r5, r5, r4
+ add r1, r4, #0
+ add r2, r5, #0
+ bl memcpy
+ add r0, r6, #0
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r5, #0
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._14:
+ .align 2, 0
+._13:
+ .word gUnknown_Debug_845E797
+ .word gUnknown_Debug_845E712
+
+ thumb_func_end debug_sub_813C500
+
+ thumb_func_start debug_sub_813C52C
+debug_sub_813C52C:
+ push {r4, r5, r6, lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6}
+ mov r8, r0
+ lsl r5, r1, #0x10
+ lsr r0, r5, #0x10
+ mov r9, r0
+ ldr r6, ._15 @ gUnknown_Debug_845E7BB
+ ldr r4, ._15 + 4 @ gUnknown_Debug_845E797
+ sub r6, r6, r4
+ mov r0, r8
+ add r1, r4, #0
+ add r2, r6, #0
+ bl memcpy
+ ldr r0, ._15 + 8 @ gUnknown_Debug_845E7B5
+ sub r0, r0, r4
+ add r0, r0, r8
+ add r0, r0, #0x3
+ mov r1, r9
+ strb r1, [r0]
+ lsr r5, r5, #0x18
+ strb r5, [r0, #0x1]
+ mov r0, r8
+ add r1, r4, #0
+ bl unref_sub_812620C
+ add r0, r6, #0
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._16:
+ .align 2, 0
+._15:
+ .word gUnknown_Debug_845E7BB
+ .word gUnknown_Debug_845E797
+ .word gUnknown_Debug_845E7B5
+
+ thumb_func_end debug_sub_813C52C
+
+ thumb_func_start debug_sub_813C580
+debug_sub_813C580:
+ push {lr}
+ mov r1, #0xd
+ bl debug_sub_813C52C
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_813C580
+
+ thumb_func_start debug_sub_813C58C
+debug_sub_813C58C:
+ push {lr}
+ mov r1, #0x4
+ bl debug_sub_813C52C
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_813C58C
+
+ thumb_func_start debug_sub_813C598
+debug_sub_813C598:
+ push {lr}
+ mov r1, #0x85
+ bl debug_sub_813C52C
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_sub_813C598
+
+ thumb_func_start debug_sub_813C5A4
+debug_sub_813C5A4:
+ push {lr}
+ ldr r1, ._17 @ 0x121
+ bl debug_sub_813C52C
+ pop {r1}
+ bx r1
+._18:
+ .align 2, 0
+._17:
+ .word 0x121
+
+ thumb_func_end debug_sub_813C5A4
+
+ thumb_func_start debug_sub_813C5B4
+debug_sub_813C5B4:
+ push {r4, r5, r6, r7, lr}
+ add r4, r0, #0
+ ldr r7, ._23 @ gSaveBlock1
+ ldr r0, ._23 + 4 @ gUnknown_Debug_845DDD6
+ ldr r1, ._23 + 8 @ gUnknown_Debug_845DDB2
+ sub r0, r0, r1
+ add r6, r0, r4
+ ldr r0, ._23 + 12 @ gUnknown_Debug_845E306
+ sub r5, r0, r1
+ ldr r0, ._23 + 16 @ Str_842E23C
+ mov r1, #0x0
+ mov r2, #0x0
+ bl debug_sub_80C2C18
+ mov r2, #0x0
+ ldr r3, ._23 + 20 @ 0xfff
+ mov r1, #0x0
+._19:
+ add r0, r4, r2
+ strb r1, [r0]
+ add r2, r2, #0x1
+ cmp r2, r3
+ ble ._19 @cond_branch
+ mov r2, #0x0
+ cmp r2, r5
+ bcs ._20 @cond_branch
+ ldr r3, ._23 + 8 @ gUnknown_Debug_845DDB2
+._21:
+ add r0, r4, r2
+ add r1, r2, r3
+ ldrb r1, [r1]
+ strb r1, [r0]
+ add r2, r2, #0x1
+ cmp r2, r5
+ bcc ._21 @cond_branch
+._20:
+ mov r2, #0x0
+ ldr r3, ._23 + 24 @ 0x52f
+._22:
+ add r0, r6, r2
+ add r1, r7, r2
+ ldrb r1, [r1]
+ strb r1, [r0]
+ add r2, r2, #0x1
+ cmp r2, r3
+ bls ._22 @cond_branch
+ bl ClearEnigmaBerries
+ ldr r1, ._23 + 8 @ gUnknown_Debug_845DDB2
+ add r0, r4, #0
+ bl unref_sub_81261B4
+ add r0, r5, #0
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._24:
+ .align 2, 0
+._23:
+ .word gSaveBlock1+0x3160
+ .word gUnknown_Debug_845DDD6
+ .word gUnknown_Debug_845DDB2
+ .word gUnknown_Debug_845E306
+ .word Str_842E23C
+ .word 0xfff
+ .word 0x52f
+
+ thumb_func_end debug_sub_813C5B4
+
+ thumb_func_start debug_sub_813C638
+debug_sub_813C638:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add sp, sp, #0xffffffec
+ mov r8, r0
+ add r4, r1, #0
+ add r5, r2, #0
+ add r6, r3, #0
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ lsl r6, r6, #0x10
+ lsr r6, r6, #0x10
+ bl ZeroMonData
+ mov r0, #0x0
+ str r0, [sp]
+ str r0, [sp, #0x4]
+ mov r0, #0x1
+ str r0, [sp, #0x8]
+ ldr r0, ._25 @ 0x270f
+ str r0, [sp, #0xc]
+ mov r0, r8
+ add r1, r4, #0
+ add r2, r5, #0
+ mov r3, #0x20
+ bl CreateMon
+ ldr r2, ._25 + 4 @ Str_842E240
+ mov r0, r8
+ mov r1, #0x7
+ bl SetMonData
+ ldr r2, ._25 + 8 @ Str_842E248
+ mov r0, r8
+ mov r1, #0x2
+ bl SetMonData
+ str r6, [sp, #0x10]
+ mov r0, r8
+ mov r1, #0xc
+ add r2, sp, #0x10
+ bl SetMonData
+ add sp, sp, #0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._26:
+ .align 2, 0
+._25:
+ .word 0x270f
+ .word Str_842E240
+ .word Str_842E248
+
+ thumb_func_end debug_sub_813C638
+
+ thumb_func_start debug_sub_813C6AC
+debug_sub_813C6AC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffff8
+ add r6, r0, #0
+ add r5, r1, #0
+ add r0, r5, #0
+ bl ClearMailStruct
+ add r0, r6, #0
+ mov r1, #0xc
+ bl GetMonData
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r8, r0
+ bl ItemIsMail
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._27 @cond_branch
+ add r4, r5, #0
+ add r4, r4, #0x12
+ add r7, r5, #0
+ add r7, r7, #0x1a
+ mov r1, #0x9
+ add r0, r5, #0
+ add r0, r0, #0x10
+._28:
+ strh r1, [r0]
+ sub r1, r1, #0x1
+ sub r0, r0, #0x2
+ cmp r0, r5
+ bge ._28 @cond_branch
+ add r0, r6, #0
+ mov r1, #0x7
+ mov r2, sp
+ bl GetMonData
+ add r0, r4, #0
+ mov r1, sp
+ mov r2, #0x8
+ bl StringCopyN
+ add r0, r6, #0
+ mov r1, #0x1
+ bl GetMonData
+ add r1, r7, #0
+ bl write_word_to_mem
+ add r0, r6, #0
+ mov r1, #0xb
+ bl GetMonData
+ add r4, r0, #0
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r6, #0
+ mov r1, #0x0
+ bl GetMonData
+ add r1, r0, #0
+ add r0, r4, #0
+ bl SpeciesToMailSpecies
+ strh r0, [r5, #0x1e]
+ mov r0, r8
+ strh r0, [r5, #0x20]
+._27:
+ add sp, sp, #0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_sub_813C6AC
+
+ thumb_func_start debug_sub_813C740
+debug_sub_813C740:
+ push {r4, r5, r6, lr}
+ mov r6, sl
+ mov r5, r9
+ mov r4, r8
+ push {r4, r5, r6}
+ add sp, sp, #0xffffffd0
+ add r6, r0, #0
+ ldr r0, ._29 @ gUnknown_Debug_845E443
+ mov r8, r0
+ ldr r1, ._29 + 4 @ gUnknown_Debug_845E4EF
+ ldr r5, ._29 + 8 @ gEnemyParty
+ sub r1, r1, r0
+ mov r9, r1
+ add r0, r6, #0
+ mov r1, r8
+ mov r2, r9
+ bl memcpy
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r2, #0x5
+ mov r3, #0x0
+ bl debug_sub_813C638
+ add r4, sp, #0x24
+ mov r0, #0x1
+ mov sl, r0
+ mov r1, sl
+ strb r1, [r4]
+ add r0, r5, #0
+ mov r1, #0x2d
+ add r2, r4, #0
+ bl SetMonData
+ mov r0, #0x3
+ strb r0, [r4]
+ add r0, r5, #0
+ mov r1, #0x20
+ add r2, r4, #0
+ bl SetMonData
+ mov r0, #0xff
+ strb r0, [r4]
+ add r0, r5, #0
+ mov r1, #0x23
+ add r2, r4, #0
+ bl SetMonData
+ ldr r1, ._29 + 12 @ Str_842E238
+ add r0, r4, #0
+ mov r2, #0xb
+ bl StringCopyN
+ add r0, r5, #0
+ mov r1, #0x2
+ add r2, r4, #0
+ bl SetMonData
+ mov r0, sl
+ strb r0, [r4]
+ add r0, r5, #0
+ mov r1, #0x3
+ add r2, r4, #0
+ bl SetMonData
+ ldr r0, ._29 + 16 @ gUnknown_Debug_845E467
+ add r0, r6, r0
+ mov r1, r8
+ sub r0, r0, r1
+ add r1, r5, #0
+ mov r2, #0x64
+ bl memcpy
+ ldr r0, ._29 + 20 @ gUnknown_Debug_845E4CB
+ add r6, r6, r0
+ mov r0, r8
+ sub r6, r6, r0
+ add r0, r6, #0
+ mov r1, sp
+ mov r2, #0x24
+ bl memcpy
+ mov r0, r9
+ add sp, sp, #0x30
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._30:
+ .align 2, 0
+._29:
+ .word gUnknown_Debug_845E443
+ .word gUnknown_Debug_845E4EF
+ .word gEnemyParty
+ .word Str_842E238
+ .word gUnknown_Debug_845E467
+ .word gUnknown_Debug_845E4CB
+
+ thumb_func_end debug_sub_813C740
+
+ thumb_func_start debug_sub_813C810
+debug_sub_813C810:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add sp, sp, #0xffffffdc
+ add r6, r0, #0
+ ldr r5, ._31 @ gUnknown_Debug_845E443
+ ldr r0, ._31 + 4 @ gUnknown_Debug_845E4EF
+ ldr r4, ._31 + 8 @ gEnemyParty
+ sub r0, r0, r5
+ mov r8, r0
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r2, r8
+ bl memcpy
+ add r0, r4, #0
+ mov r1, #0xc9
+ mov r2, #0x15
+ mov r3, #0x82
+ bl debug_sub_813C638
+ add r0, r4, #0
+ mov r1, sp
+ bl debug_sub_813C6AC
+ ldr r0, ._31 + 12 @ gUnknown_Debug_845E467
+ add r0, r6, r0
+ sub r0, r0, r5
+ add r1, r4, #0
+ mov r2, #0x64
+ bl memcpy
+ ldr r0, ._31 + 16 @ gUnknown_Debug_845E4CB
+ add r0, r6, r0
+ sub r0, r0, r5
+ mov r1, sp
+ mov r2, #0x24
+ bl memcpy
+ add r0, r6, #0
+ add r1, r5, #0
+ bl unref_sub_812620C
+ mov r0, r8
+ add sp, sp, #0x24
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._32:
+ .align 2, 0
+._31:
+ .word gUnknown_Debug_845E443
+ .word gUnknown_Debug_845E4EF
+ .word gEnemyParty
+ .word gUnknown_Debug_845E467
+ .word gUnknown_Debug_845E4CB
+
+ thumb_func_end debug_sub_813C810
+
+ thumb_func_start debug_sub_813C888
+debug_sub_813C888:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add sp, sp, #0xffffffdc
+ add r6, r0, #0
+ ldr r5, ._33 @ gUnknown_Debug_845E443
+ ldr r0, ._33 + 4 @ gUnknown_Debug_845E4EF
+ ldr r4, ._33 + 8 @ gEnemyParty
+ sub r0, r0, r5
+ mov r8, r0
+ add r0, r6, #0
+ add r1, r5, #0
+ mov r2, r8
+ bl memcpy
+ add r0, r4, #0
+ mov r1, #0xc9
+ mov r2, #0x15
+ mov r3, #0x82
+ bl debug_sub_813C638
+ add r0, r4, #0
+ mov r1, sp
+ bl debug_sub_813C6AC
+ mov r0, #0x0
+ strh r0, [r4, #0x1c]
+ ldr r0, ._33 + 12 @ gUnknown_Debug_845E467
+ add r0, r6, r0
+ sub r0, r0, r5
+ add r1, r4, #0
+ mov r2, #0x64
+ bl memcpy
+ ldr r0, ._33 + 16 @ gUnknown_Debug_845E4CB
+ add r0, r6, r0
+ sub r0, r0, r5
+ mov r1, sp
+ mov r2, #0x24
+ bl memcpy
+ add r0, r6, #0
+ add r1, r5, #0
+ bl unref_sub_812620C
+ mov r0, r8
+ add sp, sp, #0x24
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._34:
+ .align 2, 0
+._33:
+ .word gUnknown_Debug_845E443
+ .word gUnknown_Debug_845E4EF
+ .word gEnemyParty
+ .word gUnknown_Debug_845E467
+ .word gUnknown_Debug_845E4CB
+
+ thumb_func_end debug_sub_813C888
+
+ thumb_func_start debug_sub_813C904
+debug_sub_813C904:
+ push {r4, lr}
+ ldr r4, ._35 @ gPlayerParty
+ add r0, r4, #0
+ mov r1, #0x5
+ mov r2, #0x32
+ mov r3, #0xb7
+ bl debug_sub_813C638
+ add r0, r4, #0
+ add r0, r0, #0x64
+ mov r1, #0x8
+ mov r2, #0x32
+ mov r3, #0xc4
+ bl debug_sub_813C638
+ add r4, r4, #0xc8
+ add r0, r4, #0
+ mov r1, #0x2
+ mov r2, #0x32
+ mov r3, #0x8d
+ bl debug_sub_813C638
+ pop {r4}
+ pop {r0}
+ bx r0
+._36:
+ .align 2, 0
+._35:
+ .word gPlayerParty
+
+ thumb_func_end debug_sub_813C904
+
+ thumb_func_start debug_sub_813C93C
+debug_sub_813C93C:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xffffff44
+ add r4, r0, #0
+ ldr r6, ._37 @ gUnknown_Debug_845E4EF
+ ldr r5, ._37 + 4 @ gUnknown_Debug_845E606
+ sub r5, r5, r6
+ add r1, r6, #0
+ add r2, r5, #0
+ bl memcpy
+ bl SavePlayerParty
+ bl debug_sub_813C904
+ ldr r1, ._37 + 8 @ Str_842E253
+ ldr r2, ._37 + 12 @ 0x270f
+ mov r0, sp
+ bl debug_sub_8075DB4
+ bl LoadPlayerParty
+ ldr r0, ._37 + 16 @ gUnknown_Debug_845E506
+ add r4, r4, r0
+ sub r4, r4, r6
+ add r0, r4, #0
+ mov r1, sp
+ mov r2, #0xbc
+ bl memcpy
+ add r0, r5, #0
+ add sp, sp, #0xbc
+ pop {r4, r5, r6}
+ pop {r1}
+ bx r1
+._38:
+ .align 2, 0
+._37:
+ .word gUnknown_Debug_845E4EF
+ .word gUnknown_Debug_845E606
+ .word Str_842E253+5 @ weird...
+ .word 0x270f
+ .word gUnknown_Debug_845E506
+
+ thumb_func_end debug_sub_813C93C
+
+ .align 2, 0
+
+.endif
diff --git a/asm/unk_text_8095904.s b/asm/unk_text_8095904.s
deleted file mode 100644
index 00c81faca..000000000
--- a/asm/unk_text_8095904.s
+++ /dev/null
@@ -1,256 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "include/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8095904
-sub_8095904: @ 8095904
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- str r0, [sp]
- adds r7, r1, 0
- adds r4, r2, 0
- ldr r0, [sp, 0x3C]
- lsls r4, 24
- lsrs r4, 24
- lsls r3, 16
- lsrs r3, 16
- str r3, [sp, 0x4]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- ldr r0, [sp]
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r4, 0
- bne _08095988
- movs r5, 0
- cmp r5, r8
- bcs _08095A2E
-_0809593E:
- ldr r1, [sp]
- adds r0, r1, r5
- ldrb r2, [r0]
- ldr r0, _08095980 @ =0x0000fff0
- ands r0, r2
- lsls r0, 6
- movs r1, 0xF
- ands r2, r1
- lsls r2, 5
- adds r0, r2
- ldr r1, _08095984 @ =gFont3LatinGlyphs
- adds r4, r0, r1
- adds r0, r4, 0
- adds r1, r7, 0
- movs r2, 0x10
- bl CpuSet
- movs r2, 0x80
- lsls r2, 2
- adds r0, r4, r2
- ldr r3, [sp, 0x4]
- adds r1, r7, r3
- movs r2, 0x10
- bl CpuSet
- adds r7, 0x20
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r8
- bcc _0809593E
- b _08095A2E
- .align 2, 0
-_08095980: .4byte 0x0000fff0
-_08095984: .4byte gFont3LatinGlyphs
-_08095988:
- movs r0, 0
- mov r9, r0
- ldr r1, [sp, 0x8]
- lsls r0, r1, 28
- lsrs r0, 24
- str r0, [sp, 0xC]
- mov r2, r8
- lsls r0, r2, 21
- movs r1, 0
- lsrs r0, 1
- str r0, [sp, 0x10]
-_0809599E:
- movs r5, 0
- ldr r3, [sp, 0x4]
- adds r3, r7, r3
- str r3, [sp, 0x14]
- adds r0, r1, 0x1
- str r0, [sp, 0x18]
- cmp r5, r8
- bcs _08095A12
- movs r2, 0xF
- mov r12, r2
- lsls r1, 9
- ldr r0, _08095A40 @ =gFont3LatinGlyphs
- adds r1, r0
- mov r10, r1
-_080959BA:
- ldr r3, [sp]
- adds r0, r3, r5
- ldrb r1, [r0]
- ldr r0, _08095A44 @ =0x0000fff0
- ands r0, r1
- lsls r0, 6
- mov r2, r12
- ands r1, r2
- lsls r1, 5
- adds r0, r1
- mov r3, r10
- adds r4, r0, r3
- movs r6, 0
- adds r5, 0x1
-_080959D6:
- ldrb r0, [r4]
- movs r3, 0xF0
- ands r3, r0
- mov r2, r12
- ands r2, r0
- cmp r3, 0
- bne _080959E6
- ldr r3, [sp, 0xC]
-_080959E6:
- cmp r2, 0
- bne _080959EC
- ldr r2, [sp, 0x8]
-_080959EC:
- mov r0, r9
- adds r1, r0, 0x1
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- ldr r1, [sp, 0x40]
- adds r0, r1, r0
- orrs r3, r2
- strb r3, [r0]
- adds r4, 0x1
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x1F
- bls _080959D6
- lsls r0, r5, 16
- lsrs r5, r0, 16
- cmp r5, r8
- bcc _080959BA
-_08095A12:
- ldr r0, [sp, 0x40]
- adds r1, r7, 0
- ldr r3, [sp, 0x10]
- lsrs r2, r3, 16
- bl CpuSet
- ldr r7, [sp, 0x14]
- movs r0, 0
- mov r9, r0
- ldr r1, [sp, 0x18]
- lsls r0, r1, 16
- lsrs r1, r0, 16
- cmp r1, 0x1
- bls _0809599E
-_08095A2E:
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08095A40: .4byte gFont3LatinGlyphs
-_08095A44: .4byte 0x0000fff0
- thumb_func_end sub_8095904
-
- thumb_func_start unref_sub_8095A48
-unref_sub_8095A48: @ 8095A48
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r7, r3, 24
- movs r6, 0
-_08095A60:
- movs r3, 0
- ldrb r0, [r4]
- adds r1, r0, 0
- adds r2, r0, 0
- cmp r1, 0xFF
- beq _08095ACE
-_08095A6C:
- mov r0, sp
- adds r0, r3
- adds r0, 0x8
- strb r2, [r0]
- adds r4, 0x1
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x3
- bhi _08095AA8
- ldrb r0, [r4]
- adds r1, r0, 0
- adds r2, r0, 0
- cmp r1, 0xFF
- bne _08095A6C
- cmp r3, 0
- beq _08095ACE
- movs r6, 0x1
- cmp r3, 0x3
- bhi _08095AA8
- movs r2, 0
-_08095A96:
- adds r0, r3, 0
- adds r1, r0, 0x1
- lsls r1, 16
- lsrs r3, r1, 16
- add r0, sp
- adds r0, 0x8
- strb r2, [r0]
- cmp r3, 0x3
- bls _08095A96
-_08095AA8:
- mov r1, sp
- adds r1, r3
- adds r1, 0x8
- movs r0, 0xFF
- strb r0, [r1]
- str r7, [sp]
- ldr r0, [sp, 0x28]
- str r0, [sp, 0x4]
- add r0, sp, 0x8
- adds r1, r5, 0
- mov r2, r8
- movs r3, 0x80
- bl sub_8095904
- movs r0, 0x80
- lsls r0, 1
- adds r5, r0
- cmp r6, 0
- beq _08095A60
-_08095ACE:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end unref_sub_8095A48
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/watanabe_debug_menu.s b/asm/watanabe_debug_menu.s
new file mode 100644
index 000000000..892c2262d
--- /dev/null
+++ b/asm/watanabe_debug_menu.s
@@ -0,0 +1,9578 @@
+.if DEBUG
+
+ .include "constants/gba_constants.inc"
+ .include "include/macros.inc"
+
+ .text
+
+ thumb_func_start debug_69
+debug_69:
+ bx lr
+
+ thumb_func_end debug_69
+
+ thumb_func_start debug_80C35DC
+debug_80C35DC:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffff8
+ mov r0, #0x0
+ bl SetVBlankCallback
+ mov r0, #0x80
+ lsl r0, r0, #0x13
+ mov r1, #0x0
+ strh r1, [r0]
+ add r0, r0, #0xe
+ strh r1, [r0]
+ sub r0, r0, #0x2
+ strh r1, [r0]
+ sub r0, r0, #0x2
+ strh r1, [r0]
+ sub r0, r0, #0x2
+ strh r1, [r0]
+ add r0, r0, #0x14
+ strh r1, [r0]
+ add r0, r0, #0x2
+ strh r1, [r0]
+ sub r0, r0, #0x6
+ strh r1, [r0]
+ add r0, r0, #0x2
+ strh r1, [r0]
+ sub r0, r0, #0x6
+ strh r1, [r0]
+ add r0, r0, #0x2
+ strh r1, [r0]
+ sub r0, r0, #0x6
+ strh r1, [r0]
+ add r0, r0, #0x2
+ strh r1, [r0]
+ mov r3, #0xc0
+ lsl r3, r3, #0x13
+ mov r4, #0xc0
+ lsl r4, r4, #0x9
+ add r0, sp, #0x4
+ mov r8, r0
+ mov r2, sp
+ mov r6, #0x0
+ ldr r1, ._2 @ 0x40000d4
+ mov r5, #0x80
+ lsl r5, r5, #0x5
+ ldr r7, ._2 + 4 @ 0x81000800
+ mov r0, #0x81
+ lsl r0, r0, #0x18
+ mov ip, r0
+._1:
+ strh r6, [r2]
+ mov r0, sp
+ str r0, [r1]
+ str r3, [r1, #0x4]
+ str r7, [r1, #0x8]
+ ldr r0, [r1, #0x8]
+ add r3, r3, r5
+ sub r4, r4, r5
+ cmp r4, r5
+ bhi ._1 @cond_branch
+ strh r6, [r2]
+ mov r2, sp
+ str r2, [r1]
+ str r3, [r1, #0x4]
+ lsr r0, r4, #0x1
+ mov r2, ip
+ orr r0, r0, r2
+ str r0, [r1, #0x8]
+ ldr r0, [r1, #0x8]
+ mov r0, #0xe0
+ lsl r0, r0, #0x13
+ mov r3, #0x80
+ lsl r3, r3, #0x3
+ mov r4, #0x0
+ str r4, [sp, #0x4]
+ ldr r2, ._2 @ 0x40000d4
+ mov r1, r8
+ str r1, [r2]
+ str r0, [r2, #0x4]
+ lsr r0, r3, #0x2
+ mov r1, #0x85
+ lsl r1, r1, #0x18
+ orr r0, r0, r1
+ str r0, [r2, #0x8]
+ ldr r0, [r2, #0x8]
+ mov r1, #0xa0
+ lsl r1, r1, #0x13
+ mov r0, sp
+ strh r4, [r0]
+ str r0, [r2]
+ str r1, [r2, #0x4]
+ lsr r3, r3, #0x1
+ mov r0, #0x81
+ lsl r0, r0, #0x18
+ orr r3, r3, r0
+ str r3, [r2, #0x8]
+ ldr r0, [r2, #0x8]
+ bl ResetPaletteFade
+ bl ScanlineEffect_Stop
+ bl ResetTasks
+ bl ResetSpriteData
+ bl ResetPaletteFade
+ bl FreeAllSpritePalettes
+ ldr r0, ._2 + 8 @ stru_83F8828
+ bl LoadSpriteSheet
+ ldr r0, ._2 + 12 @ stru_83F8838
+ bl LoadSpritePalette
+ ldr r0, ._2 + 16 @ gWindowTemplate_81E6C3C
+ bl Text_LoadWindowTemplate
+ ldr r0, ._2 + 20 @ gWindowTemplate_81E6CE4
+ bl InitMenuWindow
+ add sp, sp, #0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._3:
+ .align 2, 0
+._2:
+ .word 0x40000d4
+ .word 0x81000800
+ .word stru_83F8828
+ .word stru_83F8838
+ .word gWindowTemplate_81E6C3C
+ .word gWindowTemplate_81E6CE4
+
+ thumb_func_end debug_80C35DC
+
+ thumb_func_start debug_80C36F4
+debug_80C36F4:
+ push {lr}
+ bl RunTasks
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C36F4
+
+ thumb_func_start debug_80C370C
+debug_80C370C:
+ push {lr}
+ ldr r0, ._6 @ gPaletteFade
+ ldrb r1, [r0, #0x7]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._4 @cond_branch
+ ldr r0, ._6 + 4 @ debug_80C36F4
+ bl SetMainCallback2
+ b ._5
+._7:
+ .align 2, 0
+._6:
+ .word gPaletteFade
+ .word debug_80C36F4+1
+._4:
+ bl AnimateSprites
+ bl BuildOamBuffer
+ bl UpdatePaletteFade
+._5:
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C370C
+
+ thumb_func_start debug_80C373C
+debug_80C373C:
+ push {lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ bl DestroyTask
+ bl ScriptContext2_Disable
+ ldr r0, ._8 @ sub_80546F0
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+._9:
+ .align 2, 0
+._8:
+ .word sub_80546F0+1
+
+ thumb_func_end debug_80C373C
+
+ thumb_func_start debug_80C3758
+debug_80C3758:
+ push {lr}
+ bl LoadOam
+ bl ProcessSpriteCopyRequests
+ bl TransferPlttBuffer
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C3758
+
+ thumb_func_start debug_80C376C
+debug_80C376C:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ lsl r1, r1, #0x18
+ lsr r7, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r6, r2, #0x18
+ mov r1, #0x0
+ mov r2, #0x0
+._10:
+ mov r3, sp
+ add r0, r3, r1
+ strb r2, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ cmp r1, #0x2
+ bls ._10 @cond_branch
+ mov r1, sp
+ mov r0, #0xff
+ strb r0, [r1, #0x3]
+ mov r4, #0x0
+ add r0, r5, #0
+ mov r1, #0x64
+ bl __udivsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0
+ beq ._11 @cond_branch
+ mov r1, sp
+ add r0, r0, #0xa1
+ strb r0, [r1]
+ mov r4, #0x1
+._11:
+ add r0, r5, #0
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xa
+ bl __udivsi3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0
+ bne ._12 @cond_branch
+ cmp r4, #0
+ beq ._13 @cond_branch
+._12:
+ mov r1, sp
+ add r0, r0, #0xa1
+ strb r0, [r1, #0x1]
+._13:
+ mov r4, sp
+ add r0, r5, #0
+ mov r1, #0x64
+ bl __umodsi3
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xa
+ bl __umodsi3
+ add r0, r0, #0xa1
+ strb r0, [r4, #0x2]
+ mov r0, sp
+ add r1, r7, #0
+ add r2, r6, #0
+ bl Menu_PrintText
+ add sp, sp, #0x4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C376C
+
+ thumb_func_start debug_80C3800
+debug_80C3800:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffff4
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ lsl r1, r1, #0x18
+ lsr r6, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r5, r2, #0x18
+ mov r3, #0x0
+ ldr r2, ._18 @ gSpeciesNames
+ mov r1, #0x0
+._14:
+ mov r7, sp
+ add r0, r7, r3
+ strb r1, [r0]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0x9
+ bls ._14 @cond_branch
+ add r1, r7, r3
+ mov r0, #0xff
+ strb r0, [r1]
+ mov r3, #0x0
+ mov r0, #0xb
+ add r1, r4, #0
+ mul r1, r1, r0
+ add r0, r1, r2
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._16 @cond_branch
+ add r4, r2, #0
+ add r2, r1, #0
+._17:
+ mov r0, sp
+ add r1, r0, r3
+ add r0, r3, r2
+ add r0, r0, r4
+ ldrb r0, [r0]
+ strb r0, [r1]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ add r0, r3, r2
+ add r0, r0, r4
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._16 @cond_branch
+ cmp r3, #0x9
+ bls ._17 @cond_branch
+._16:
+ mov r0, sp
+ add r1, r6, #0
+ add r2, r5, #0
+ bl Menu_PrintText
+ add sp, sp, #0xc
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._19:
+ .align 2, 0
+._18:
+ .word gSpeciesNames
+
+ thumb_func_end debug_80C3800
+
+ thumb_func_start debug_80C3878
+debug_80C3878:
+ push {lr}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ cmp r0, #0
+ beq ._20 @cond_branch
+ cmp r0, #0x1
+ beq ._21 @cond_branch
+._20:
+ cmp r1, #0x1
+ bls ._22 @cond_branch
+ sub r0, r1, #1
+ b ._23
+._22:
+ ldr r1, ._25 @ 0x19b
+ b ._28
+._26:
+ .align 2, 0
+._25:
+ .word 0x19b
+._21:
+ mov r0, #0xcd
+ lsl r0, r0, #0x1
+ cmp r1, r0
+ bhi ._27 @cond_branch
+ add r0, r1, #1
+._23:
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ b ._28
+._27:
+ mov r1, #0x1
+._28:
+ add r0, r1, #0
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_80C3878
+
+ thumb_func_start debug_80C38B4
+debug_80C38B4:
+ push {lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ lsl r1, r1, #0x10
+ lsr r0, r1, #0x10
+ cmp r2, #0
+ beq ._29 @cond_branch
+ cmp r2, #0x1
+ beq ._30 @cond_branch
+._29:
+ cmp r0, #0
+ beq ._31 @cond_branch
+ sub r0, r0, #0x1
+ b ._32
+._31:
+ mov r0, #0x52
+ b ._35
+._30:
+ cmp r0, #0x51
+ bhi ._34 @cond_branch
+ add r0, r0, #0x1
+._32:
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ b ._35
+._34:
+ mov r0, #0x0
+._35:
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_80C38B4
+
+ thumb_func_start debug_80C38E4
+debug_80C38E4:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffffc
+ add r4, r2, #0
+ add r5, r3, #0
+ ldr r6, [sp, #0x1c]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r8, r0
+ lsl r1, r1, #0x18
+ lsr r7, r1, #0x18
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ lsl r6, r6, #0x18
+ lsr r6, r6, #0x18
+ ldr r1, ._37 @ gUnknown_Debug_083F7FD4
+ mov r0, sp
+ mov r2, #0x2
+ bl memcpy
+ add r0, r7, #0
+ add r1, r4, #0
+ add r2, r7, #0
+ add r3, r5, #0
+ bl Menu_BlankWindowRect
+ cmp r6, #0
+ beq ._36 @cond_branch
+ mov r0, sp
+ add r1, r7, #0
+ mov r2, r8
+ bl Menu_PrintText
+._36:
+ add sp, sp, #0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._38:
+ .align 2, 0
+._37:
+ .word gUnknown_Debug_083F7FD4
+
+ thumb_func_end debug_80C38E4
+
+ thumb_func_start debug_80C393C
+debug_80C393C:
+ push {lr}
+ ldr r1, ._39 @ gUnknown_Debug_083F7FD6
+ mov r0, #0x1e
+ bl ProgramFlashSectorAndVerify
+ pop {r0}
+ bx r0
+._40:
+ .align 2, 0
+._39:
+ .word gUnknown_Debug_083F7FD6
+
+ thumb_func_end debug_80C393C
+
+ thumb_func_start InitWatanabeDebugMenu
+InitWatanabeDebugMenu:
+ push {r4, lr}
+ ldr r0, ._46 @ gMain
+ ldr r1, ._46 + 4 @ 0x43c
+ add r4, r0, r1
+ ldrb r0, [r4]
+ cmp r0, #0x1
+ beq ._41 @cond_branch
+ cmp r0, #0x1
+ ble ._42 @cond_branch
+ cmp r0, #0x2
+ beq ._43 @cond_branch
+ cmp r0, #0x3
+ beq ._44 @cond_branch
+._42:
+ bl save_serialize_map
+ bl sub_8125E2C
+ mov r0, #0x1
+ strb r0, [r4]
+ b ._51
+._47:
+ .align 2, 0
+._46:
+ .word gMain
+ .word 0x43c
+._41:
+ bl sub_8125E6C
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._51 @cond_branch
+ b ._49
+._43:
+ mov r0, #0x37
+ bl PlaySE
+._49:
+ ldrb r0, [r4]
+ add r0, r0, #0x1
+ strb r0, [r4]
+ b ._51
+._44:
+ bl IsSEPlaying
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ bne ._51 @cond_branch
+ bl ScriptContext2_Disable
+ ldr r0, ._52 @ sub_80546F0
+ bl SetMainCallback2
+._51:
+ pop {r4}
+ pop {r0}
+ bx r0
+._53:
+ .align 2, 0
+._52:
+ .word sub_80546F0+1
+
+ thumb_func_end InitWatanabeDebugMenu
+
+ thumb_func_start InitSizeComparison
+InitSizeComparison:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ bl debug_80C35DC
+ ldr r1, ._54 @ gReservedSpritePaletteCount
+ mov r0, #0x1
+ strb r0, [r1]
+ ldr r0, ._54 + 4 @ gUnknown_Debug_20389EC
+ mov r1, #0x80
+ lsl r1, r1, #0x1
+ mov r2, #0x20
+ bl LoadPalette
+ ldr r3, ._54 + 8 @ 0x4000208
+ ldrh r2, [r3]
+ mov r0, #0x0
+ strh r0, [r3]
+ ldr r4, ._54 + 12 @ 0x4000200
+ ldrh r0, [r4]
+ mov r1, #0x1
+ orr r0, r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x10
+ mov r3, #0x0
+ bl BeginNormalPaletteFade
+ ldr r0, ._54 + 16 @ debug_80C3758
+ bl SetVBlankCallback
+ ldr r0, ._54 + 20 @ debug_80C370C
+ bl SetMainCallback2
+ mov r1, #0x80
+ lsl r1, r1, #0x13
+ mov r2, #0x8a
+ lsl r2, r2, #0x5
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, ._54 + 24 @ debug_80C3A50
+ mov r1, #0x0
+ bl CreateTask
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._54 + 28 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ mov r0, #0xfc
+ strh r0, [r1, #0x8]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._55:
+ .align 2, 0
+._54:
+ .word gReservedSpritePaletteCount
+ .word gUnknown_Debug_20389EC
+ .word 0x4000208
+ .word 0x4000200
+ .word debug_80C3758+1
+ .word debug_80C370C+1
+ .word debug_80C3A50+1
+ .word gTasks
+
+ thumb_func_end InitSizeComparison
+
+ thumb_func_start debug_80C3A50
+debug_80C3A50:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xffffffd8
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r1, ._56 @ gTasks
+ lsl r2, r0, #0x2
+ add r0, r2, r0
+ lsl r0, r0, #0x3
+ add r7, r0, r1
+ ldrh r0, [r7, #0x8]
+ str r0, [sp, #0x4]
+ bl NationalPokedexNumToSpecies
+ mov r1, sp
+ strh r0, [r1, #0x8]
+ add r2, r0, #0
+ lsl r2, r2, #0x10
+ str r2, [sp, #0xc]
+ lsr r2, r2, #0x10
+ mov r9, r2
+ ldr r3, ._56 + 4 @ gSaveBlock2
+ mov r8, r3
+ mov r0, #0x6
+ mov r1, #0x0
+ mov r2, #0x17
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x5
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ ldr r5, ._56 + 8 @ gUnknown_Debug_083F7FD6
+ add r0, r5, #0
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r4, ._56 + 12 @ gUnknown_Debug_083F7FDE
+ add r0, r4, #0
+ mov r1, #0x1
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0x18
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ add r0, r5, #0
+ mov r1, #0x19
+ mov r2, #0x1
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0x19
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r1, #0xa
+ mov r2, #0xb
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._56 + 16 @ gUnknown_Debug_083F7FE2
+ mov r1, #0x1
+ mov r2, #0xb
+ bl Menu_PrintText
+ ldr r0, ._56 + 20 @ gUnknown_Debug_083F7FED
+ mov r1, #0x1
+ mov r2, #0xd
+ bl Menu_PrintText
+ ldr r0, ._56 + 24 @ gUnknown_Debug_083F7FF6
+ mov r1, #0x1
+ mov r2, #0xf
+ bl Menu_PrintText
+ ldr r0, ._56 + 28 @ gUnknown_Debug_083F8001
+ mov r1, #0x1
+ mov r2, #0x11
+ bl Menu_PrintText
+ mov r0, #0xc
+ mov r1, #0xa
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._56 + 32 @ gUnknown_Debug_083F800C
+ mov r1, #0xd
+ mov r2, #0xb
+ bl Menu_PrintText
+ ldr r0, ._56 + 36 @ gUnknown_Debug_083F8019
+ mov r1, #0xd
+ mov r2, #0xd
+ bl Menu_PrintText
+ mov r0, #0xc
+ mov r1, #0x10
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._56 + 40 @ gUnknown_Debug_083F8022
+ mov r1, #0xd
+ mov r2, #0x11
+ bl Menu_PrintText
+ ldr r0, ._56 + 44 @ gUnknown_Debug_083F8028
+ mov r1, #0x18
+ mov r2, #0x11
+ bl Menu_PrintText
+ mov r0, r9
+ mov r1, #0x12
+ mov r2, #0x11
+ bl debug_80C3800
+ mov r1, r8
+ ldrb r0, [r1, #0x8]
+ mov r1, #0x98
+ mov r2, #0x28
+ mov r3, #0x0
+ bl sub_8091A4C
+ mov r2, sp
+ strh r0, [r2, #0x10]
+ add r3, r0, #0
+ lsl r3, r3, #0x10
+ str r3, [sp, #0x18]
+ lsr r0, r3, #0x10
+ str r0, [sp, #0x14]
+ lsl r4, r0, #0x4
+ add r4, r4, r0
+ lsl r4, r4, #0x2
+ ldr r1, ._56 + 48 @ gSprites
+ add r4, r4, r1
+ ldrb r1, [r4, #0x1]
+ mov r2, #0x4
+ neg r2, r2
+ mov sl, r2
+ mov r0, sl
+ and r0, r0, r1
+ mov r3, #0x1
+ orr r0, r0, r3
+ strb r0, [r4, #0x1]
+ ldrb r1, [r4, #0x3]
+ mov r0, #0x3f
+ neg r0, r0
+ mov r9, r0
+ and r0, r0, r1
+ mov r1, #0x4
+ orr r0, r0, r1
+ strb r0, [r4, #0x3]
+ ldrb r1, [r4, #0x5]
+ sub r2, r2, #0x9
+ mov r8, r2
+ mov r0, r8
+ and r0, r0, r1
+ mov r3, #0xf
+ and r0, r0, r3
+ strb r0, [r4, #0x5]
+ mov r0, #0x0
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldr r0, ._56 + 52 @ gPokedexEntries
+ ldr r1, [sp, #0x4]
+ lsl r5, r1, #0x3
+ add r5, r5, r1
+ lsl r5, r5, #0x2
+ add r5, r5, r0
+ ldrh r6, [r5, #0x20]
+ strh r6, [r4, #0x26]
+ ldrh r4, [r5, #0x1e]
+ str r4, [sp]
+ mov r0, #0x2
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x0
+ bl SetOamMatrix
+ mov r2, sp
+ ldrh r2, [r2, #0x14]
+ strh r2, [r7, #0xe]
+ strh r6, [r7, #0x10]
+ strh r4, [r7, #0x14]
+ ldr r0, [sp, #0x4]
+ mov r1, #0x58
+ mov r2, #0x28
+ mov r3, #0x1
+ bl sub_80918EC
+ mov r3, sp
+ strh r0, [r3, #0x1c]
+ lsl r0, r0, #0x10
+ str r0, [sp, #0x24]
+ lsr r1, r0, #0x10
+ str r1, [sp, #0x20]
+ lsl r4, r1, #0x4
+ add r4, r4, r1
+ lsl r4, r4, #0x2
+ ldr r2, ._56 + 48 @ gSprites
+ add r4, r4, r2
+ ldrb r0, [r4, #0x1]
+ mov r3, sl
+ and r3, r3, r0
+ mov r0, #0x1
+ orr r3, r3, r0
+ strb r3, [r4, #0x1]
+ ldrb r0, [r4, #0x3]
+ mov r1, r9
+ and r1, r1, r0
+ mov r0, #0x2
+ orr r1, r1, r0
+ strb r1, [r4, #0x3]
+ ldrb r0, [r4, #0x5]
+ mov r2, r8
+ and r2, r2, r0
+ mov r3, #0xf
+ and r2, r2, r3
+ strb r2, [r4, #0x5]
+ mov r0, #0x0
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldrh r0, [r5, #0x1c]
+ mov r8, r0
+ strh r0, [r4, #0x26]
+ ldrh r4, [r5, #0x1a]
+ str r4, [sp]
+ mov r0, #0x1
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x0
+ bl SetOamMatrix
+ mov r1, sp
+ ldrh r1, [r1, #0x20]
+ strh r1, [r7, #0xc]
+ mov r2, r8
+ strh r2, [r7, #0x12]
+ strh r4, [r7, #0x16]
+ mov r3, #0x0
+ strh r3, [r7, #0x18]
+ strh r3, [r7, #0x1a]
+ ldr r1, ._56 + 56 @ 0x4000048
+ ldr r2, ._56 + 60 @ 0x3f1f
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x1f
+ strh r0, [r1]
+ ldr r2, ._56 + 64 @ 0x4000040
+ mov r3, #0x18
+ ldsh r1, [r7, r3]
+ lsl r1, r1, #0x6
+ add r0, r1, #0
+ add r0, r0, #0x38
+ lsl r0, r0, #0x8
+ add r1, r1, #0x78
+ add r0, r0, r1
+ strh r0, [r2]
+ ldr r1, ._56 + 68 @ 0x4000044
+ ldr r2, ._56 + 72 @ 0x848
+ add r0, r2, #0
+ strh r0, [r1]
+ sub r1, r1, #0x2
+ ldr r3, ._56 + 76 @ 0x31bf
+ add r0, r3, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._56 + 80 @ 0x14f
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0xa
+ mov r0, #0xe1
+ strh r0, [r1]
+ ldr r0, ._56 + 84 @ 0x4000052
+ mov r3, #0x0
+ strh r3, [r0]
+ add r1, r1, #0x4
+ mov r0, #0x7
+ strh r0, [r1]
+ mov r2, #0x80
+ lsl r2, r2, #0x13
+ ldrh r0, [r2]
+ mov r3, #0xc0
+ lsl r3, r3, #0x7
+ add r1, r3, #0
+ orr r0, r0, r1
+ strh r0, [r2]
+ ldr r0, ._56 + 88 @ debug_80C3D2C
+ str r0, [r7]
+ add sp, sp, #0x28
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._57:
+ .align 2, 0
+._56:
+ .word gTasks
+ .word gSaveBlock2
+ .word gUnknown_Debug_083F7FD6+0x4
+ .word gUnknown_Debug_083F7FDE
+ .word gUnknown_Debug_083F7FE2
+ .word gUnknown_Debug_083F7FED
+ .word gUnknown_Debug_083F7FF6
+ .word gUnknown_Debug_083F8001
+ .word gUnknown_Debug_083F800C
+ .word gUnknown_Debug_083F8019
+ .word gUnknown_Debug_083F8022
+ .word gUnknown_Debug_083F8028
+ .word gSprites
+ .word gPokedexEntries
+ .word 0x4000048
+ .word 0x3f1f
+ .word 0x4000040
+ .word 0x4000044
+ .word 0x848
+ .word 0x31bf
+ .word 0x14f
+ .word 0x4000052
+ .word debug_80C3D2C+1
+
+ thumb_func_end debug_80C3A50
+
+ thumb_func_start debug_80C3D2C
+debug_80C3D2C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ add r7, r6, #0
+ ldr r4, ._60 @ gMain
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._58 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r0, ._60 + 4 @ debug_80C370C
+ bl SetMainCallback2
+ ldr r1, ._60 + 8 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._60 + 12 @ debug_80C373C
+ str r1, [r0]
+ b ._117
+._61:
+ .align 2, 0
+._60:
+ .word gMain
+ .word debug_80C370C+1
+ .word gTasks
+ .word debug_80C373C+1
+._58:
+ mov r5, #0x1
+ add r0, r5, #0
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._62 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._64 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldrh r1, [r0, #0x18]
+ mov r2, #0x1
+ eor r1, r1, r2
+ strh r1, [r0, #0x18]
+ b ._117
+._65:
+ .align 2, 0
+._64:
+ .word gTasks
+._62:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._66 @cond_branch
+ ldr r1, ._70 @ gTasks
+ lsl r2, r6, #0x2
+ add r0, r2, r6
+ lsl r0, r0, #0x3
+ add r3, r0, r1
+ mov r5, #0x18
+ ldsh r0, [r3, r5]
+ mov r8, r1
+ cmp r0, #0
+ beq ._67 @cond_branch
+ ldrh r1, [r4, #0x2c]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._68 @cond_branch
+ ldrh r0, [r3, #0x14]
+ add r0, r0, #0x10
+ b ._69
+._71:
+ .align 2, 0
+._70:
+ .word gTasks
+._68:
+ ldrh r0, [r3, #0x14]
+ add r0, r0, #0x1
+._69:
+ strh r0, [r3, #0x14]
+ add r0, r2, r7
+ lsl r0, r0, #0x3
+ mov r2, r8
+ add r1, r0, r2
+ ldrh r0, [r1, #0x14]
+ mov r6, #0x80
+ lsl r6, r6, #0x8
+ cmp r0, r6
+ bhi ._72 @cond_branch
+ b ._117
+._72:
+ strh r6, [r1, #0x14]
+ b ._117
+._67:
+ ldrh r1, [r4, #0x2c]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._75 @cond_branch
+ ldrh r0, [r3, #0x16]
+ add r0, r0, #0x10
+ b ._76
+._75:
+ ldrh r0, [r3, #0x16]
+ add r0, r0, #0x1
+._76:
+ strh r0, [r3, #0x16]
+ add r0, r2, r7
+ lsl r0, r0, #0x3
+ mov r4, r8
+ add r1, r0, r4
+ ldrh r0, [r1, #0x16]
+ mov r6, #0x80
+ lsl r6, r6, #0x8
+ cmp r0, r6
+ bhi ._77 @cond_branch
+ b ._117
+._77:
+ strh r6, [r1, #0x16]
+ b ._117
+._66:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._80 @cond_branch
+ ldr r1, ._84 @ gTasks
+ lsl r2, r6, #0x2
+ add r0, r2, r6
+ lsl r0, r0, #0x3
+ add r3, r0, r1
+ mov r5, #0x18
+ ldsh r0, [r3, r5]
+ mov r8, r1
+ cmp r0, #0
+ beq ._81 @cond_branch
+ ldrh r1, [r4, #0x2c]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._82 @cond_branch
+ ldrh r0, [r3, #0x14]
+ sub r0, r0, #0x10
+ b ._83
+._85:
+ .align 2, 0
+._84:
+ .word gTasks
+._82:
+ ldrh r0, [r3, #0x14]
+ sub r0, r0, #0x1
+._83:
+ strh r0, [r3, #0x14]
+ add r0, r2, r7
+ lsl r0, r0, #0x3
+ mov r2, r8
+ add r1, r0, r2
+ mov r4, #0x14
+ ldsh r0, [r1, r4]
+ cmp r0, #0xff
+ ble ._86 @cond_branch
+ b ._117
+._86:
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ strh r0, [r1, #0x14]
+ b ._117
+._81:
+ ldrh r1, [r4, #0x2c]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._89 @cond_branch
+ ldrh r0, [r3, #0x16]
+ sub r0, r0, #0x10
+ b ._90
+._89:
+ ldrh r0, [r3, #0x16]
+ sub r0, r0, #0x1
+._90:
+ strh r0, [r3, #0x16]
+ add r0, r2, r7
+ lsl r0, r0, #0x3
+ mov r5, r8
+ add r1, r0, r5
+ mov r2, #0x16
+ ldsh r0, [r1, r2]
+ cmp r0, #0xff
+ ble ._91 @cond_branch
+ b ._117
+._91:
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ strh r0, [r1, #0x16]
+ b ._117
+._80:
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._94 @cond_branch
+ ldr r0, ._97 @ gTasks
+ lsl r1, r6, #0x2
+ add r1, r1, r6
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ mov r4, #0x18
+ ldsh r0, [r1, r4]
+ cmp r0, #0
+ beq ._95 @cond_branch
+ ldrh r0, [r1, #0x10]
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x10]
+ b ._117
+._98:
+ .align 2, 0
+._97:
+ .word gTasks
+._95:
+ ldrh r0, [r1, #0x12]
+ sub r0, r0, #0x1
+ strh r0, [r1, #0x12]
+ b ._117
+._94:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._100 @cond_branch
+ ldr r0, ._103 @ gTasks
+ lsl r1, r6, #0x2
+ add r1, r1, r6
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ mov r5, #0x18
+ ldsh r0, [r1, r5]
+ cmp r0, #0
+ beq ._101 @cond_branch
+ ldrh r0, [r1, #0x10]
+ add r0, r0, #0x1
+ strh r0, [r1, #0x10]
+ b ._117
+._104:
+ .align 2, 0
+._103:
+ .word gTasks
+._101:
+ ldrh r0, [r1, #0x12]
+ add r0, r0, #0x1
+ strh r0, [r1, #0x12]
+ b ._117
+._100:
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._106 @cond_branch
+ ldr r2, ._109 @ gTasks
+ lsl r3, r6, #0x2
+ add r0, r3, r6
+ lsl r0, r0, #0x3
+ add r6, r0, r2
+ ldrh r4, [r6, #0x8]
+ mov r0, #0x8
+ ldsh r1, [r6, r0]
+ ldr r0, ._109 + 4 @ 0x181
+ mov r8, r2
+ add r2, r3, #0
+ cmp r1, r0
+ bgt ._107 @cond_branch
+ add r0, r4, #1
+ strh r0, [r6, #0x8]
+ b ._108
+._110:
+ .align 2, 0
+._109:
+ .word gTasks
+ .word 0x181
+._107:
+ strh r5, [r6, #0x8]
+._108:
+ add r4, r2, r7
+ lsl r4, r4, #0x3
+ add r4, r4, r8
+ mov r2, #0xc
+ ldsh r1, [r4, r2]
+ b ._111
+._106:
+ mov r0, #0x4
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._112 @cond_branch
+ ldr r1, ._115 @ gTasks
+ lsl r2, r6, #0x2
+ add r0, r2, r6
+ lsl r0, r0, #0x3
+ add r3, r0, r1
+ ldrh r6, [r3, #0x8]
+ mov r4, #0x8
+ ldsh r0, [r3, r4]
+ mov r8, r1
+ cmp r0, #0x1
+ ble ._113 @cond_branch
+ sub r0, r6, #1
+ b ._114
+._116:
+ .align 2, 0
+._115:
+ .word gTasks
+._113:
+ mov r0, #0xc1
+ lsl r0, r0, #0x1
+._114:
+ strh r0, [r3, #0x8]
+ add r4, r2, r7
+ lsl r4, r4, #0x3
+ add r4, r4, r8
+ mov r5, #0xc
+ ldsh r1, [r4, r5]
+._111:
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ ldr r5, ._118 @ gSprites
+ add r0, r0, r5
+ bl DestroySprite
+ mov r0, #0xe
+ ldsh r1, [r4, r0]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r5
+ bl DestroySprite
+ ldr r0, ._118 + 4 @ debug_80C3A50
+ str r0, [r4]
+ b ._117
+._119:
+ .align 2, 0
+._118:
+ .word gSprites
+ .word debug_80C3A50+1
+._112:
+ ldr r0, ._120 @ gTasks
+ lsl r5, r7, #0x2
+ add r5, r5, r7
+ lsl r5, r5, #0x3
+ add r5, r5, r0
+ ldrh r4, [r5, #0x16]
+ ldrh r6, [r5, #0x12]
+ str r4, [sp]
+ mov r0, #0x1
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x0
+ bl SetOamMatrix
+ add r0, r4, #0
+ mov r1, #0x1
+ mov r2, #0x3
+ mov r3, #0x4
+ bl debug_80C68CC
+ add r0, r6, #0
+ mov r1, #0x1
+ mov r2, #0x7
+ mov r3, #0x4
+ bl debug_80C68CC
+ ldr r2, ._120 + 4 @ gSprites
+ mov r8, r2
+ mov r4, #0xc
+ ldsh r1, [r5, r4]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r8
+ strh r6, [r0, #0x26]
+ ldrh r4, [r5, #0x14]
+ ldrh r6, [r5, #0x10]
+ str r4, [sp]
+ mov r0, #0x2
+ add r1, r4, #0
+ mov r2, #0x0
+ mov r3, #0x0
+ bl SetOamMatrix
+ add r0, r4, #0
+ mov r1, #0x19
+ mov r2, #0x3
+ mov r3, #0x4
+ bl debug_80C68CC
+ add r0, r6, #0
+ mov r1, #0x19
+ mov r2, #0x7
+ mov r3, #0x4
+ bl debug_80C68CC
+ mov r0, #0xe
+ ldsh r1, [r5, r0]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r8
+ strh r6, [r0, #0x26]
+ ldr r2, ._120 + 8 @ 0x4000040
+ mov r4, #0x18
+ ldsh r1, [r5, r4]
+ lsl r1, r1, #0x6
+ add r0, r1, #0
+ add r0, r0, #0x38
+ lsl r0, r0, #0x8
+ add r1, r1, #0x78
+ add r0, r0, r1
+ strh r0, [r2]
+._117:
+ add sp, sp, #0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._121:
+ .align 2, 0
+._120:
+ .word gTasks
+ .word gSprites
+ .word 0x4000040
+
+ thumb_func_end debug_80C3D2C
+
+ thumb_func_start debug_80C405C
+debug_80C405C:
+ push {r4, r5, lr}
+ add r4, r0, #0
+ lsl r1, r1, #0x10
+ lsr r5, r1, #0x10
+ mov r2, #0x0
+ mov r1, #0x0
+._122:
+ add r0, r4, r2
+ strb r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x9
+ bls ._122 @cond_branch
+ add r0, r4, r2
+ mov r1, #0xff
+ strb r1, [r0]
+ mov r0, #0xae
+ strb r0, [r4]
+ cmp r5, #0
+ beq ._125 @cond_branch
+ mov r2, #0x0
+ ldr r3, ._127 @ gSpeciesNames
+ mov r0, #0xb
+ add r1, r5, #0
+ mul r1, r1, r0
+ add r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._125 @cond_branch
+ add r5, r3, #0
+ add r3, r1, #0
+._126:
+ add r1, r4, r2
+ add r0, r2, r3
+ add r0, r0, r5
+ ldrb r0, [r0]
+ strb r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ add r0, r2, r3
+ add r0, r0, r5
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._125 @cond_branch
+ cmp r2, #0x9
+ bls ._126 @cond_branch
+._125:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._128:
+ .align 2, 0
+._127:
+ .word gSpeciesNames
+
+ thumb_func_end debug_80C405C
+
+ thumb_func_start debug_80C40C4
+debug_80C40C4:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ mov r5, #0x0
+ mov r6, sp
+._135:
+ cmp r7, #0
+ beq ._129 @cond_branch
+ mov r0, #0x64
+ add r1, r5, #0
+ mul r1, r1, r0
+ ldr r0, ._132 @ gEnemyParty
+ add r4, r1, r0
+ add r0, r4, #0
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._134 @cond_branch
+ add r0, r4, #0
+ bl CalculateMonStats
+ add r0, r4, #0
+ mov r1, #0x3a
+ bl GetMonData
+ strh r0, [r6]
+ add r0, r4, #0
+ mov r1, #0x39
+ mov r2, sp
+ bl SetMonData
+ b ._134
+._133:
+ .align 2, 0
+._132:
+ .word gEnemyParty
+._129:
+ mov r0, #0x64
+ add r1, r5, #0
+ mul r1, r1, r0
+ ldr r0, ._136 @ gPlayerParty
+ add r4, r1, r0
+ add r0, r4, #0
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._134 @cond_branch
+ add r0, r4, #0
+ bl CalculateMonStats
+ add r0, r4, #0
+ mov r1, #0x3a
+ bl GetMonData
+ strh r0, [r6]
+ add r0, r4, #0
+ mov r1, #0x39
+ mov r2, sp
+ bl SetMonData
+._134:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x5
+ bls ._135 @cond_branch
+ add sp, sp, #0x4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._137:
+ .align 2, 0
+._136:
+ .word gPlayerParty
+
+ thumb_func_end debug_80C40C4
+
+ thumb_func_start InitBattleForDebug
+InitBattleForDebug:
+ push {lr}
+ bl SavePlayerParty
+ ldr r1, ._138 @ gUnknown_Debug_2038A0C
+ ldr r0, ._138 + 4 @ gSaveBlock2
+ ldrb r2, [r0, #0x8]
+ mov r0, #0x0
+ strb r2, [r1, #0xd]
+ strb r0, [r1]
+ strb r0, [r1, #0x1]
+ strb r0, [r1, #0x2]
+ strb r0, [r1, #0x3]
+ strb r0, [r1, #0x4]
+ strb r0, [r1, #0x5]
+ strb r0, [r1, #0x6]
+ strb r0, [r1, #0x7]
+ strb r0, [r1, #0x8]
+ strb r0, [r1, #0xc]
+ ldr r1, ._138 + 8 @ byte_3005E30
+ str r0, [r1]
+ bl ZeroPlayerPartyMons
+ bl ZeroEnemyPartyMons
+ mov r0, #0x0
+ bl debug_80C4214
+ ldr r0, ._138 + 12 @ debug_80C47BC
+ mov r1, #0x0
+ bl CreateTask
+ pop {r0}
+ bx r0
+._139:
+ .align 2, 0
+._138:
+ .word gUnknown_Debug_2038A0C
+ .word gSaveBlock2
+ .word byte_3005E30
+ .word debug_80C47BC+1
+
+ thumb_func_end InitBattleForDebug
+
+ thumb_func_start debug_80C41A8
+debug_80C41A8:
+ push {lr}
+ ldr r1, ._140 @ gUnknown_Debug_2038A0C
+ mov r0, #0x0
+ strb r0, [r1, #0x1]
+ strb r0, [r1, #0x2]
+ bl ZeroPlayerPartyMons
+ bl ZeroEnemyPartyMons
+ mov r0, #0x0
+ bl debug_80C4214
+ ldr r0, ._140 + 4 @ debug_80C47BC
+ mov r1, #0x0
+ bl CreateTask
+ pop {r0}
+ bx r0
+._141:
+ .align 2, 0
+._140:
+ .word gUnknown_Debug_2038A0C
+ .word debug_80C47BC+1
+
+ thumb_func_end debug_80C41A8
+
+ thumb_func_start debug_80C41D4
+debug_80C41D4:
+ push {lr}
+ mov r0, #0x0
+ bl debug_80C40C4
+ mov r0, #0x0
+ bl debug_80C4214
+ ldr r0, ._142 @ debug_80C42B8
+ mov r1, #0x0
+ bl CreateTask
+ pop {r0}
+ bx r0
+._143:
+ .align 2, 0
+._142:
+ .word debug_80C42B8+1
+
+ thumb_func_end debug_80C41D4
+
+ thumb_func_start debug_80C41F4
+debug_80C41F4:
+ push {lr}
+ mov r0, #0x1
+ bl debug_80C40C4
+ mov r0, #0x1
+ bl debug_80C4214
+ ldr r0, ._144 @ debug_80C42B8
+ mov r1, #0x0
+ bl CreateTask
+ pop {r0}
+ bx r0
+._145:
+ .align 2, 0
+._144:
+ .word debug_80C42B8+1
+
+ thumb_func_end debug_80C41F4
+
+ thumb_func_start debug_80C4214
+debug_80C4214:
+ push {r4, r5, r6, lr}
+ bl debug_80C35DC
+ ldr r6, ._146 @ 0x4000040
+ mov r4, #0x0
+ strh r4, [r6]
+ ldr r5, ._146 + 4 @ 0x4000044
+ strh r4, [r5]
+ ldr r0, ._146 + 8 @ 0x4000042
+ strh r4, [r0]
+ add r0, r0, #0x4
+ strh r4, [r0]
+ ldr r1, ._146 + 12 @ 0x4000048
+ ldr r2, ._146 + 16 @ 0x1111
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x31
+ strh r0, [r1]
+ add r1, r1, #0x6
+ mov r0, #0xe1
+ strh r0, [r1]
+ ldr r0, ._146 + 20 @ 0x4000052
+ strh r4, [r0]
+ add r1, r1, #0x4
+ mov r0, #0x7
+ strh r0, [r1]
+ ldr r3, ._146 + 24 @ 0x4000208
+ ldrh r2, [r3]
+ strh r4, [r3]
+ ldr r4, ._146 + 28 @ 0x4000200
+ ldrh r0, [r4]
+ mov r1, #0x1
+ orr r0, r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ ldr r0, ._146 + 32 @ debug_80C3758
+ bl SetVBlankCallback
+ ldr r0, ._146 + 36 @ debug_80C370C
+ bl SetMainCallback2
+ mov r1, #0x80
+ lsl r1, r1, #0x13
+ ldr r2, ._146 + 40 @ 0x7140
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._146 + 44 @ 0x1ef
+ add r0, r1, #0
+ strh r0, [r6]
+ ldr r2, ._146 + 48 @ 0x819f
+ add r0, r2, #0
+ strh r0, [r5]
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._147:
+ .align 2, 0
+._146:
+ .word 0x4000040
+ .word 0x4000044
+ .word 0x4000042
+ .word 0x4000048
+ .word 0x1111
+ .word 0x4000052
+ .word 0x4000208
+ .word 0x4000200
+ .word debug_80C3758+1
+ .word debug_80C370C+1
+ .word 0x7140
+ .word 0x1ef
+ .word 0x819f
+
+ thumb_func_end debug_80C4214
+
+ thumb_func_start debug_80C42B8
+debug_80C42B8:
+ push {r4, r5, lr}
+ add sp, sp, #0xffffffe4
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r1, ._150 @ gUnknown_Debug_083F8194
+ mov r0, sp
+ mov r2, #0xc
+ bl memcpy
+ add r4, sp, #0xc
+ ldr r1, ._150 + 4 @ gUnknown_Debug_083F81A0
+ add r0, r4, #0
+ mov r2, #0xd
+ bl memcpy
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x1
+ mov r2, #0x11
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #0x11
+ bl Menu_PrintText
+ bl debug_80C4694
+ bl debug_80C4704
+ ldr r0, ._150 + 8 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0]
+ cmp r0, #0
+ beq ._148 @cond_branch
+ ldr r0, ._150 + 12 @ gTasks
+ lsl r1, r5, #0x2
+ add r1, r1, r5
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._150 + 16 @ debug_80C44EC
+ b ._149
+._151:
+ .align 2, 0
+._150:
+ .word gUnknown_Debug_083F8194
+ .word gUnknown_Debug_083F81A0
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C44EC+1
+._148:
+ ldr r0, ._152 @ gTasks
+ lsl r1, r5, #0x2
+ add r1, r1, r5
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._152 + 4 @ debug_80C4348
+._149:
+ str r0, [r1]
+ add sp, sp, #0x1c
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._153:
+ .align 2, 0
+._152:
+ .word gTasks
+ .word debug_80C4348+1
+
+ thumb_func_end debug_80C42B8
+
+ thumb_func_start debug_80C4348
+debug_80C4348:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._154 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x1]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._154 + 4 @ 0x4000042
+ ldr r2, ._154 + 8 @ 0x177
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ add r2, r2, #0x8
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._154 + 12 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._154 + 16 @ debug_80C43A8
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._155:
+ .align 2, 0
+._154:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x177
+ .word gTasks
+ .word debug_80C43A8+1
+
+ thumb_func_end debug_80C4348
+
+ thumb_func_start debug_80C43A8
+debug_80C43A8:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r1, ._158 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r2
+ add r3, r1, #0
+ cmp r0, #0
+ beq ._156 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r0, ._158 + 4 @ gUnknown_Debug_2038A0C
+ ldrb r1, [r0, #0x1]
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._158 + 8 @ gPlayerParty
+ add r0, r0, r1
+ ldr r1, ._158 + 12 @ debug_80C41D4
+ bl debug_sub_80A433C
+ add r0, r4, #0
+ bl DestroyTask
+ b ._180
+._159:
+ .align 2, 0
+._158:
+ .word gMain
+ .word gUnknown_Debug_2038A0C
+ .word gPlayerParty
+ .word debug_80C41D4+1
+._156:
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._160 @cond_branch
+ ldr r0, ._162 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._162 + 4 @ debug_80C4F48
+ str r0, [r1]
+ b ._180
+._163:
+ .align 2, 0
+._162:
+ .word gTasks
+ .word debug_80C4F48+1
+._160:
+ mov r0, #0x8
+ and r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0
+ beq ._164 @cond_branch
+ bl debug_80C4774
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._180 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ bl CalculatePlayerPartyCount
+ bl CalculateEnemyPartyCount
+ ldr r0, ._167 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._167 + 4 @ debug_80C4D14
+ str r0, [r1]
+ b ._180
+._168:
+ .align 2, 0
+._167:
+ .word gTasks
+ .word debug_80C4D14+1
+._164:
+ mov r0, #0x88
+ lsl r0, r0, #0x1
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._169 @cond_branch
+ str r1, [sp]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r0, ._171 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._171 + 4 @ debug_80C44EC
+ str r0, [r1]
+ b ._180
+._172:
+ .align 2, 0
+._171:
+ .word gTasks
+ .word debug_80C44EC+1
+._169:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._174 @cond_branch
+ ldr r1, ._176 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x1]
+ cmp r0, #0
+ beq ._174 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1, #0x1]
+ b ._175
+._177:
+ .align 2, 0
+._176:
+ .word gUnknown_Debug_2038A0C
+._174:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._180 @cond_branch
+ ldr r5, ._181 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r5, #0x1]
+ cmp r0, #0x4
+ bhi ._180 @cond_branch
+ add r1, r0, #0
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._181 + 4 @ gPlayerParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._180 @cond_branch
+ ldrb r0, [r5, #0x1]
+ add r0, r0, #0x1
+ strb r0, [r5, #0x1]
+._175:
+ ldr r1, ._181 + 8 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._181 + 12 @ debug_80C4348
+ str r1, [r0]
+._180:
+ add sp, sp, #0x4
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._182:
+ .align 2, 0
+._181:
+ .word gUnknown_Debug_2038A0C
+ .word gPlayerParty
+ .word gTasks
+ .word debug_80C4348+1
+
+ thumb_func_end debug_80C43A8
+
+ thumb_func_start debug_80C44EC
+debug_80C44EC:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._183 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x2]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r1, #0x10
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._183 + 4 @ 0x4000042
+ ldr r2, ._183 + 8 @ 0x79ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._183 + 12 @ 0x17f
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._183 + 16 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._183 + 20 @ debug_80C4550
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._184:
+ .align 2, 0
+._183:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x79ef
+ .word 0x17f
+ .word gTasks
+ .word debug_80C4550+1
+
+ thumb_func_end debug_80C44EC
+
+ thumb_func_start debug_80C4550
+debug_80C4550:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r1, ._187 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r2
+ add r3, r1, #0
+ cmp r0, #0
+ beq ._185 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r0, ._187 + 4 @ gUnknown_Debug_2038A0C
+ ldrb r1, [r0, #0x2]
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._187 + 8 @ gEnemyParty
+ add r0, r0, r1
+ ldr r1, ._187 + 12 @ debug_80C41F4
+ bl debug_sub_80A433C
+ add r0, r4, #0
+ bl DestroyTask
+ b ._209
+._188:
+ .align 2, 0
+._187:
+ .word gMain
+ .word gUnknown_Debug_2038A0C
+ .word gEnemyParty
+ .word debug_80C41F4+1
+._185:
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._189 @cond_branch
+ ldr r0, ._191 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._191 + 4 @ debug_80C4F48
+ str r0, [r1]
+ b ._209
+._192:
+ .align 2, 0
+._191:
+ .word gTasks
+ .word debug_80C4F48+1
+._189:
+ mov r0, #0x8
+ and r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0
+ beq ._193 @cond_branch
+ bl debug_80C4774
+ lsl r0, r0, #0x18
+ cmp r0, #0
+ beq ._209 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ bl CalculatePlayerPartyCount
+ bl CalculateEnemyPartyCount
+ ldr r0, ._196 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._196 + 4 @ debug_80C4D14
+ str r0, [r1]
+ b ._209
+._197:
+ .align 2, 0
+._196:
+ .word gTasks
+ .word debug_80C4D14+1
+._193:
+ mov r0, #0x88
+ lsl r0, r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._198 @cond_branch
+ str r1, [sp]
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r0, ._200 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._200 + 4 @ debug_80C4348
+ str r0, [r1]
+ b ._209
+._201:
+ .align 2, 0
+._200:
+ .word gTasks
+ .word debug_80C4348+1
+._198:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._203 @cond_branch
+ ldr r1, ._205 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x2]
+ cmp r0, #0
+ beq ._203 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1, #0x2]
+ b ._204
+._206:
+ .align 2, 0
+._205:
+ .word gUnknown_Debug_2038A0C
+._203:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._209 @cond_branch
+ ldr r5, ._210 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r5, #0x2]
+ cmp r0, #0x4
+ bhi ._209 @cond_branch
+ add r1, r0, #0
+ mov r0, #0x64
+ mul r0, r0, r1
+ ldr r1, ._210 + 4 @ gEnemyParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._209 @cond_branch
+ ldrb r0, [r5, #0x2]
+ add r0, r0, #0x1
+ strb r0, [r5, #0x2]
+._204:
+ ldr r1, ._210 + 8 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._210 + 12 @ debug_80C44EC
+ str r1, [r0]
+._209:
+ add sp, sp, #0x4
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._211:
+ .align 2, 0
+._210:
+ .word gUnknown_Debug_2038A0C
+ .word gEnemyParty
+ .word gTasks
+ .word debug_80C44EC+1
+
+ thumb_func_end debug_80C4550
+
+ thumb_func_start debug_80C4694
+debug_80C4694:
+ push {r4, r5, lr}
+ add sp, sp, #0xffffffe4
+ ldr r1, ._213 @ gUnknown_Debug_083F81AD
+ mov r0, sp
+ mov r2, #0xd
+ bl memcpy
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r4, #0x0
+ add r5, sp, #0x10
+._212:
+ mov r0, #0x64
+ mul r0, r0, r4
+ ldr r1, ._213 + 4 @ gPlayerParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r5, #0
+ bl debug_80C405C
+ lsl r2, r4, #0x19
+ mov r0, #0xc0
+ lsl r0, r0, #0x12
+ add r2, r2, r0
+ lsr r2, r2, #0x18
+ add r0, r5, #0
+ mov r1, #0x2
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ bls ._212 @cond_branch
+ add sp, sp, #0x1c
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._214:
+ .align 2, 0
+._213:
+ .word gUnknown_Debug_083F81AD
+ .word gPlayerParty
+
+ thumb_func_end debug_80C4694
+
+ thumb_func_start debug_80C4704
+debug_80C4704:
+ push {r4, r5, lr}
+ add sp, sp, #0xffffffe4
+ ldr r1, ._216 @ gUnknown_Debug_083F81BA
+ mov r0, sp
+ mov r2, #0xd
+ bl memcpy
+ mov r0, #0xf
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x11
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r4, #0x0
+ add r5, sp, #0x10
+._215:
+ mov r0, #0x64
+ mul r0, r0, r4
+ ldr r1, ._216 + 4 @ gEnemyParty
+ add r0, r0, r1
+ mov r1, #0xb
+ bl GetMonData
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ add r0, r5, #0
+ bl debug_80C405C
+ lsl r2, r4, #0x19
+ mov r0, #0xc0
+ lsl r0, r0, #0x12
+ add r2, r2, r0
+ lsr r2, r2, #0x18
+ add r0, r5, #0
+ mov r1, #0x11
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ bls ._215 @cond_branch
+ add sp, sp, #0x1c
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._217:
+ .align 2, 0
+._216:
+ .word gUnknown_Debug_083F81BA
+ .word gEnemyParty
+
+ thumb_func_end debug_80C4704
+
+ thumb_func_start debug_80C4774
+debug_80C4774:
+ push {r4, lr}
+ ldr r0, ._221 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0xc]
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0x64
+ add r4, r0, #0
+ mul r4, r4, r1
+ ldr r0, ._221 + 4 @ gPlayerParty
+ add r0, r4, r0
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._219 @cond_branch
+ ldr r0, ._221 + 8 @ gEnemyParty
+ add r0, r4, r0
+ mov r1, #0xb
+ bl GetMonData
+ cmp r0, #0
+ beq ._219 @cond_branch
+ mov r0, #0x1
+ b ._220
+._222:
+ .align 2, 0
+._221:
+ .word gUnknown_Debug_2038A0C
+ .word gPlayerParty
+ .word gEnemyParty
+._219:
+ mov r0, #0x0
+._220:
+ pop {r4}
+ pop {r1}
+ bx r1
+
+ thumb_func_end debug_80C4774
+
+ thumb_func_start debug_80C47BC
+debug_80C47BC:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xffffffc0
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r1, ._224 @ gUnknown_Debug_083F81C7
+ mov r0, sp
+ mov r2, #0xf
+ bl memcpy
+ add r4, sp, #0x10
+ ldr r1, ._224 + 4 @ gUnknown_Debug_083F81A0
+ add r0, r4, #0
+ mov r2, #0xd
+ bl memcpy
+ add r6, sp, #0x20
+ ldr r1, ._224 + 8 @ gUnknown_Debug_083F81D6
+ add r0, r6, #0
+ mov r2, #0xf
+ bl memcpy
+ add r5, sp, #0x30
+ ldr r1, ._224 + 12 @ gUnknown_Debug_083F81E5
+ add r0, r5, #0
+ mov r2, #0x10
+ bl memcpy
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x1
+ mov r2, #0x11
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0x14
+ mov r2, #0x11
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ add r0, r6, #0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r4, #0x0
+ ldr r6, ._224 + 16 @ gUnknown_Debug_083F8068
+._223:
+ lsl r0, r4, #0x3
+ add r0, r0, r6
+ ldr r0, [r0]
+ lsl r2, r4, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r2, r2, r1
+ lsr r2, r2, #0x18
+ mov r1, #0x2
+ bl Menu_PrintText
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x4
+ bls ._223 @cond_branch
+ mov r0, #0xf
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ add r0, r5, #0
+ mov r1, #0x11
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._224 + 20 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x4]
+ bl debug_80C4C44
+ ldr r1, ._224 + 24 @ gTasks
+ lsl r0, r7, #0x2
+ add r0, r0, r7
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._224 + 28 @ debug_80C48A0
+ str r1, [r0]
+ add sp, sp, #0x40
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._225:
+ .align 2, 0
+._224:
+ .word gUnknown_Debug_083F81C7
+ .word gUnknown_Debug_083F81A0
+ .word gUnknown_Debug_083F81D6
+ .word gUnknown_Debug_083F81E5
+ .word gUnknown_Debug_083F8068
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C48A0+1
+
+ thumb_func_end debug_80C47BC
+
+ thumb_func_start debug_80C48A0
+debug_80C48A0:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._226 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x3]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._226 + 4 @ 0x4000042
+ ldr r2, ._226 + 8 @ 0x177
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ add r2, r2, #0x8
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._226 + 12 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._226 + 16 @ debug_80C4900
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._227:
+ .align 2, 0
+._226:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x177
+ .word gTasks
+ .word debug_80C4900+1
+
+ thumb_func_end debug_80C48A0
+
+ thumb_func_start debug_80C4900
+debug_80C4900:
+ push {r4, r5, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r1, ._230 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ add r3, r1, #0
+ cmp r4, #0
+ beq ._228 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ mov r4, #0x0
+ str r4, [sp]
+ mov r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r0, ._230 + 4 @ debug_80C370C
+ bl SetMainCallback2
+ bl LoadPlayerParty
+ ldr r1, ._230 + 8 @ gSaveBlock2
+ ldr r0, ._230 + 12 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0xd]
+ strb r0, [r1, #0x8]
+ ldr r0, ._230 + 16 @ gBattleTypeFlags
+ mov r1, #0x0
+ strh r4, [r0]
+ ldr r0, ._230 + 20 @ gUnknown_02023A14_50
+ strb r1, [r0]
+ ldr r1, ._230 + 24 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._230 + 28 @ debug_80C373C
+ b ._229
+._231:
+ .align 2, 0
+._230:
+ .word gMain
+ .word debug_80C370C+1
+ .word gSaveBlock2
+ .word gUnknown_Debug_2038A0C
+ .word gBattleTypeFlags
+ .word gUnknown_02023A14_50
+ .word gTasks
+ .word debug_80C373C+1
+._228:
+ mov r0, #0x8
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._232 @cond_branch
+ mov r0, #0x1
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._233 @cond_branch
+._232:
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._236 @ gBattleTypeFlags
+ ldr r3, ._236 + 4 @ gUnknown_Debug_083F8068
+ ldr r2, ._236 + 8 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r2, #0x3]
+ lsl r0, r0, #0x3
+ add r0, r0, r3
+ ldrb r0, [r0, #0x4]
+ strh r0, [r1]
+ ldr r1, ._236 + 12 @ gUnknown_02023A14_50
+ mov r0, #0x8
+ strb r0, [r1]
+ ldrb r0, [r2, #0x3]
+ lsl r0, r0, #0x3
+ add r0, r0, r3
+ ldrb r0, [r0, #0x5]
+ strb r0, [r2, #0xc]
+ ldrb r0, [r2, #0x3]
+ sub r0, r0, #0x1
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x1
+ bhi ._234 @cond_branch
+ str r4, [sp]
+ mov r0, #0x0
+ mov r1, #0x1
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r0, ._236 + 16 @ gTasks
+ lsl r1, r5, #0x2
+ add r1, r1, r5
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._236 + 20 @ debug_80C4A60
+ str r0, [r1]
+ b ._247
+._237:
+ .align 2, 0
+._236:
+ .word gBattleTypeFlags
+ .word gUnknown_Debug_083F8068
+ .word gUnknown_Debug_2038A0C
+ .word gUnknown_02023A14_50
+ .word gTasks
+ .word debug_80C4A60+1
+._234:
+ ldr r0, ._239 @ gTasks
+ lsl r1, r5, #0x2
+ add r1, r1, r5
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._239 + 4 @ debug_80C4F48
+ str r0, [r1]
+ b ._247
+._240:
+ .align 2, 0
+._239:
+ .word gTasks
+ .word debug_80C4F48+1
+._233:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._242 @cond_branch
+ ldr r1, ._244 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x3]
+ cmp r0, #0
+ beq ._242 @cond_branch
+ sub r0, r0, #0x1
+ b ._243
+._245:
+ .align 2, 0
+._244:
+ .word gUnknown_Debug_2038A0C
+._242:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._247 @cond_branch
+ ldr r1, ._248 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x3]
+ cmp r0, #0x1
+ bhi ._247 @cond_branch
+ add r0, r0, #0x1
+._243:
+ strb r0, [r1, #0x3]
+ ldr r1, ._248 + 4 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._248 + 8 @ debug_80C48A0
+._229:
+ str r1, [r0]
+._247:
+ add sp, sp, #0x4
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._249:
+ .align 2, 0
+._248:
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C48A0+1
+
+ thumb_func_end debug_80C4900
+
+ thumb_func_start debug_80C4A60
+debug_80C4A60:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._250 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x5]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r1, #0x10
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._250 + 4 @ 0x4000042
+ ldr r2, ._250 + 8 @ 0x79ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._250 + 12 @ 0x17f
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._250 + 16 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._250 + 20 @ debug_80C4AC4
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._251:
+ .align 2, 0
+._250:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x79ef
+ .word 0x17f
+ .word gTasks
+ .word debug_80C4AC4+1
+
+ thumb_func_end debug_80C4A60
+
+ thumb_func_start debug_80C4AC4
+debug_80C4AC4:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r7, ._255 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r7, #0x4]
+ mov ip, r0
+ ldrb r5, [r7, #0x5]
+ mov r1, ip
+ add r0, r1, r5
+ lsl r0, r0, #0x18
+ lsr r1, r0, #0x18
+ ldr r2, ._255 + 4 @ gMain
+ mov r8, r2
+ ldrh r2, [r2, #0x2e]
+ mov r3, #0x1
+ and r3, r3, r2
+ add r4, r7, #0
+ cmp r3, #0
+ beq ._252 @cond_branch
+ ldr r0, ._255 + 8 @ gUnknown_Debug_083F80D8
+ lsl r1, r1, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r1, [r1]
+ ldr r3, ._255 + 12 @ byte_3005E30
+ ldr r2, [r3]
+ add r0, r2, #0
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._253 @cond_branch
+ ldr r0, ._255 + 16 @ 0xffff
+ eor r1, r1, r0
+ and r2, r2, r1
+ b ._254
+._256:
+ .align 2, 0
+._255:
+ .word gUnknown_Debug_2038A0C
+ .word gMain
+ .word gUnknown_Debug_083F80D8
+ .word byte_3005E30
+ .word 0xffff
+._253:
+ orr r2, r2, r1
+._254:
+ str r2, [r3]
+ ldrb r0, [r4, #0x4]
+ bl debug_80C4C44
+ ldr r1, ._258 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._258 + 4 @ debug_80C4A60
+ str r1, [r0]
+ b ._274
+._259:
+ .align 2, 0
+._258:
+ .word gTasks
+ .word debug_80C4A60+1
+._252:
+ mov r0, #0x2
+ and r0, r0, r2
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ cmp r4, #0
+ beq ._260 @cond_branch
+ str r3, [sp]
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r0, ._262 @ gTasks
+ lsl r1, r6, #0x2
+ add r1, r1, r6
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._262 + 4 @ debug_80C48A0
+ b ._261
+._263:
+ .align 2, 0
+._262:
+ .word gTasks
+ .word debug_80C48A0+1
+._260:
+ mov r0, #0x8
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._264 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._266 @ gTrainerBattleOpponent
+ mov r2, #0x80
+ lsl r2, r2, #0x3
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._266 + 4 @ 0x2017000
+ ldrb r2, [r1, #0x1]
+ mov r0, #0x11
+ neg r0, r0
+ and r0, r0, r2
+ strb r0, [r1, #0x1]
+ mov r0, #0xac
+ strb r0, [r1, #0x2]
+ mov r0, #0xff
+ strb r0, [r1, #0x3]
+ strb r4, [r1, #0x9]
+ strb r4, [r1, #0xa]
+ strb r4, [r1, #0xb]
+ strb r4, [r1, #0xc]
+ ldr r1, ._266 + 8 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._266 + 12 @ debug_80C4F48
+ str r1, [r0]
+ b ._274
+._267:
+ .align 2, 0
+._266:
+ .word gTrainerBattleOpponent
+ .word 0x2017000
+ .word gTasks
+ .word debug_80C4F48+1
+._264:
+ mov r0, r8
+ ldrh r1, [r0, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._268 @cond_branch
+ lsl r0, r5, #0x18
+ cmp r0, #0
+ beq ._269 @cond_branch
+ sub r0, r5, #1
+ strb r0, [r7, #0x5]
+ b ._277
+._269:
+ mov r1, ip
+ lsl r0, r1, #0x18
+ cmp r0, #0
+ beq ._277 @cond_branch
+ mov r0, ip
+ sub r0, r0, #0x1
+ b ._272
+._268:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._274 @cond_branch
+ lsl r0, r5, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x8
+ bhi ._274 @cond_branch
+ cmp r0, #0x4
+ bhi ._275 @cond_branch
+ add r0, r5, #1
+ strb r0, [r7, #0x5]
+ b ._277
+._275:
+ mov r2, ip
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x3
+ bhi ._277 @cond_branch
+ mov r0, ip
+ add r0, r0, #0x1
+._272:
+ strb r0, [r7, #0x4]
+ ldrb r0, [r7, #0x4]
+ bl debug_80C4C44
+._277:
+ ldr r0, ._278 @ gTasks
+ lsl r1, r6, #0x2
+ add r1, r1, r6
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._278 + 4 @ debug_80C4A60
+._261:
+ str r0, [r1]
+._274:
+ add sp, sp, #0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._279:
+ .align 2, 0
+._278:
+ .word gTasks
+ .word debug_80C4A60+1
+
+ thumb_func_end debug_80C4AC4
+
+ thumb_func_start debug_80C4C44
+debug_80C4C44:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xfffffff0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov sl, r0
+ mov r2, #0x0
+ mov r5, sp
+._290:
+ mov r0, sl
+ add r6, r2, r0
+ add r4, r6, #0
+ add r1, r2, #1
+ mov r8, r1
+ cmp r4, #0x9
+ bgt ._280 @cond_branch
+ mov r3, #0x0
+ ldr r1, ._288 @ gUnknown_Debug_083F80D8
+ lsl r0, r4, #0x3
+ add r0, r0, r1
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ ldr r7, ._288 + 4 @ byte_3005E30
+ mov r9, r7
+ lsl r2, r2, #0x1
+ mov ip, r2
+ cmp r0, #0xff
+ beq ._282 @cond_branch
+ add r7, r1, #0
+._283:
+ add r0, r3, #3
+ mov r1, sp
+ add r2, r1, r0
+ lsl r1, r6, #0x3
+ add r1, r1, r7
+ ldr r0, [r1]
+ add r0, r0, r3
+ ldrb r0, [r0]
+ strb r0, [r2]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ ldr r0, [r1]
+ add r0, r0, r3
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._282 @cond_branch
+ cmp r3, #0xb
+ bls ._283 @cond_branch
+._282:
+ cmp r3, #0xb
+ bhi ._284 @cond_branch
+ mov r1, #0x0
+._285:
+ add r0, r3, #3
+ add r0, r0, sp
+ strb r1, [r0]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ cmp r3, #0xb
+ bls ._285 @cond_branch
+._284:
+ mov r0, #0xff
+ strb r0, [r5, #0xe]
+ mov r0, #0xfc
+ strb r0, [r5]
+ mov r2, #0x1
+ strb r2, [r5, #0x1]
+ add r1, r2, #0
+ LSL r1, r4
+ mov r3, r9
+ ldr r0, [r3]
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._286 @cond_branch
+ mov r0, #0x3
+ strb r0, [r5, #0x2]
+ b ._287
+._289:
+ .align 2, 0
+._288:
+ .word gUnknown_Debug_083F80D8
+ .word byte_3005E30
+._286:
+ strb r2, [r5, #0x2]
+._287:
+ mov r2, ip
+ add r2, r2, #0x3
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r0, sp
+ mov r1, #0x11
+ bl Menu_PrintText
+._280:
+ mov r7, r8
+ lsl r0, r7, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x5
+ bls ._290 @cond_branch
+ add sp, sp, #0x10
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C4C44
+
+ thumb_func_start debug_80C4D14
+debug_80C4D14:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xffffffd0
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r1, ._291 @ gUnknown_Debug_083F81C7
+ mov r0, sp
+ mov r2, #0xf
+ bl memcpy
+ add r5, sp, #0x10
+ ldr r1, ._291 + 4 @ gUnknown_Debug_083F81F5
+ add r0, r5, #0
+ mov r2, #0xd
+ bl memcpy
+ add r6, sp, #0x20
+ ldr r1, ._291 + 8 @ gUnknown_Debug_083F8202
+ add r0, r6, #0
+ mov r2, #0xf
+ bl memcpy
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x1
+ mov r2, #0x11
+ bl Menu_PrintText
+ add r0, r5, #0
+ mov r1, #0x14
+ mov r2, #0x11
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ add r0, r6, #0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._291 + 12 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x6]
+ bl debug_80C4F00
+ mov r0, #0xf
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r1, ._291 + 16 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._291 + 20 @ debug_80C4DB8
+ str r1, [r0]
+ add sp, sp, #0x30
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._292:
+ .align 2, 0
+._291:
+ .word gUnknown_Debug_083F81C7
+ .word gUnknown_Debug_083F81F5
+ .word gUnknown_Debug_083F8202
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C4DB8+1
+
+ thumb_func_end debug_80C4D14
+
+ thumb_func_start debug_80C4DB8
+debug_80C4DB8:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._293 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x7]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._293 + 4 @ 0x4000042
+ ldr r2, ._293 + 8 @ 0x177
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ add r2, r2, #0x8
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._293 + 12 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._293 + 16 @ debug_80C4E18
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._294:
+ .align 2, 0
+._293:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x177
+ .word gTasks
+ .word debug_80C4E18+1
+
+ thumb_func_end debug_80C4DB8
+
+ thumb_func_start debug_80C4E18
+debug_80C4E18:
+ push {r4, r5, r6, r7, lr}
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r5, ._297 @ gUnknown_Debug_2038A0C
+ ldrb r3, [r5, #0x6]
+ ldrb r2, [r5, #0x7]
+ add r0, r3, r2
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r7, ._297 + 4 @ gMain
+ ldrh r1, [r7, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._295 @cond_branch
+ ldr r0, ._297 + 8 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._297 + 12 @ debug_80C42B8
+ b ._296
+._298:
+ .align 2, 0
+._297:
+ .word gUnknown_Debug_2038A0C
+ .word gMain
+ .word gTasks
+ .word debug_80C42B8+1
+._295:
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ bne ._299 @cond_branch
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._300 @cond_branch
+._299:
+ mov r0, #0x5
+ bl PlaySE
+ ldr r2, ._302 @ gBattleTerrain
+ ldr r1, ._302 + 4 @ gUnknown_Debug_083F814C
+ lsl r0, r6, #0x3
+ add r0, r0, r1
+ ldrb r0, [r0, #0x4]
+ strb r0, [r2]
+ ldr r1, ._302 + 8 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._302 + 12 @ debug_80C5158
+ str r1, [r0]
+ b ._310
+._303:
+ .align 2, 0
+._302:
+ .word gBattleTerrain
+ .word gUnknown_Debug_083F814C
+ .word gTasks
+ .word debug_80C5158+1
+._300:
+ ldrh r1, [r7, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._304 @cond_branch
+ lsl r0, r2, #0x18
+ cmp r0, #0
+ beq ._305 @cond_branch
+ sub r0, r2, #1
+ strb r0, [r5, #0x7]
+ b ._313
+._305:
+ lsl r0, r3, #0x18
+ cmp r0, #0
+ beq ._313 @cond_branch
+ sub r0, r3, #1
+ b ._308
+._304:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._310 @cond_branch
+ lsl r0, r2, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x7
+ bhi ._310 @cond_branch
+ cmp r0, #0x4
+ bhi ._311 @cond_branch
+ add r0, r2, #1
+ strb r0, [r5, #0x7]
+ b ._313
+._311:
+ lsl r0, r3, #0x18
+ lsr r0, r0, #0x18
+ cmp r0, #0x2
+ bhi ._313 @cond_branch
+ add r0, r3, #1
+._308:
+ strb r0, [r5, #0x6]
+ ldrb r0, [r5, #0x6]
+ bl debug_80C4F00
+._313:
+ ldr r0, ._314 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._314 + 4 @ debug_80C4DB8
+._296:
+ str r0, [r1]
+._310:
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._315:
+ .align 2, 0
+._314:
+ .word gTasks
+ .word debug_80C4DB8+1
+
+ thumb_func_end debug_80C4E18
+
+ thumb_func_start debug_80C4F00
+debug_80C4F00:
+ push {r4, r5, r6, lr}
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ mov r0, #0x1
+ mov r1, #0x3
+ mov r2, #0xd
+ mov r3, #0xe
+ bl Menu_BlankWindowRect
+ mov r4, #0x0
+ ldr r6, ._318 @ gUnknown_Debug_083F814C
+._317:
+ cmp r4, #0x8
+ bhi ._316 @cond_branch
+ add r0, r4, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r6
+ ldr r0, [r0]
+ lsl r2, r4, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r2, r2, r1
+ lsr r2, r2, #0x18
+ mov r1, #0x2
+ bl Menu_PrintText
+._316:
+ add r0, r4, #1
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ cmp r4, #0x5
+ bls ._317 @cond_branch
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._319:
+ .align 2, 0
+._318:
+ .word gUnknown_Debug_083F814C
+
+ thumb_func_end debug_80C4F00
+
+ thumb_func_start debug_80C4F48
+debug_80C4F48:
+ push {r4, r5, r6, lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6}
+ add sp, sp, #0xffffffc4
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r1, ._320 @ gUnknown_Debug_083F8211
+ mov r0, sp
+ mov r2, #0x11
+ bl memcpy
+ add r6, sp, #0x14
+ ldr r1, ._320 + 4 @ gUnknown_Debug_083F81A0
+ add r0, r6, #0
+ mov r2, #0xd
+ bl memcpy
+ add r5, sp, #0x24
+ ldr r1, ._320 + 8 @ gUnknown_Debug_083F8222
+ add r0, r5, #0
+ mov r2, #0xd
+ bl memcpy
+ add r0, sp, #0x34
+ mov r9, r0
+ ldr r1, ._320 + 12 @ gUnknown_Debug_083F822F
+ mov r2, #0x4
+ bl memcpy
+ add r0, sp, #0x38
+ mov r8, r0
+ ldr r1, ._320 + 16 @ gUnknown_Debug_083F8233
+ mov r2, #0x4
+ bl memcpy
+ mov r0, #0x0
+ mov r1, #0x10
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, sp
+ mov r1, #0x1
+ mov r2, #0x11
+ bl Menu_PrintText
+ add r0, r6, #0
+ mov r1, #0x14
+ mov r2, #0x11
+ bl Menu_PrintText
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ add r0, r5, #0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r0, #0x1
+ mov r1, #0x3
+ mov r2, #0xd
+ mov r3, #0xe
+ bl Menu_BlankWindowRect
+ add r0, r5, #0
+ mov r1, #0x2
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r0, r9
+ mov r1, #0x2
+ mov r2, #0x3
+ bl Menu_PrintText
+ mov r0, r8
+ mov r1, #0x2
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0xf
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0xf
+ bl Menu_DrawStdWindowFrame
+ ldr r1, ._320 + 20 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._320 + 24 @ debug_80C5038
+ str r1, [r0]
+ add sp, sp, #0x3c
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._321:
+ .align 2, 0
+._320:
+ .word gUnknown_Debug_083F8211
+ .word gUnknown_Debug_083F81A0
+ .word gUnknown_Debug_083F8222
+ .word gUnknown_Debug_083F822F
+ .word gUnknown_Debug_083F8233
+ .word gTasks
+ .word debug_80C5038+1
+
+ thumb_func_end debug_80C4F48
+
+ thumb_func_start debug_80C5038
+debug_80C5038:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ ldr r0, ._322 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x8]
+ lsl r0, r0, #0x19
+ mov r1, #0xc0
+ lsl r1, r1, #0x12
+ add r0, r0, r1
+ lsr r0, r0, #0x18
+ mov r1, #0x1
+ str r1, [sp]
+ mov r2, #0x1
+ mov r3, #0xe
+ bl debug_80C38E4
+ ldr r1, ._322 + 4 @ 0x4000042
+ ldr r2, ._322 + 8 @ 0x177
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ add r2, r2, #0x8
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._322 + 12 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._322 + 16 @ debug_80C5098
+ str r1, [r0]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._323:
+ .align 2, 0
+._322:
+ .word gUnknown_Debug_2038A0C
+ .word 0x4000042
+ .word 0x177
+ .word gTasks
+ .word debug_80C5098+1
+
+ thumb_func_end debug_80C5038
+
+ thumb_func_start debug_80C5098
+debug_80C5098:
+ push {r4, lr}
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ ldr r1, ._326 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r2
+ add r3, r1, #0
+ cmp r0, #0
+ beq ._324 @cond_branch
+ ldr r0, ._326 + 4 @ gTasks
+ lsl r1, r4, #0x2
+ add r1, r1, r4
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._326 + 8 @ debug_80C47BC
+ str r0, [r1]
+ b ._339
+._327:
+ .align 2, 0
+._326:
+ .word gMain
+ .word gTasks
+ .word debug_80C47BC+1
+._324:
+ mov r0, #0x8
+ and r0, r0, r2
+ cmp r0, #0
+ bne ._328 @cond_branch
+ mov r0, #0x1
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._329 @cond_branch
+._328:
+ mov r0, #0x5
+ bl PlaySE
+ ldr r1, ._331 @ gSaveBlock2
+ ldr r0, ._331 + 4 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r0, #0x8]
+ strb r0, [r1, #0x8]
+ ldr r1, ._331 + 8 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._331 + 12 @ debug_80C42B8
+ b ._330
+._332:
+ .align 2, 0
+._331:
+ .word gSaveBlock2
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C42B8+1
+._329:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._334 @cond_branch
+ ldr r1, ._336 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x8]
+ cmp r0, #0
+ beq ._334 @cond_branch
+ sub r0, r0, #0x1
+ b ._335
+._337:
+ .align 2, 0
+._336:
+ .word gUnknown_Debug_2038A0C
+._334:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._339 @cond_branch
+ ldr r1, ._340 @ gUnknown_Debug_2038A0C
+ ldrb r0, [r1, #0x8]
+ cmp r0, #0
+ bne ._339 @cond_branch
+ add r0, r0, #0x1
+._335:
+ strb r0, [r1, #0x8]
+ ldr r1, ._340 + 4 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._340 + 8 @ debug_80C5038
+._330:
+ str r1, [r0]
+._339:
+ pop {r4}
+ pop {r0}
+ bx r0
+._341:
+ .align 2, 0
+._340:
+ .word gUnknown_Debug_2038A0C
+ .word gTasks
+ .word debug_80C5038+1
+
+ thumb_func_end debug_80C5098
+
+ thumb_func_start debug_80C5158
+debug_80C5158:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._342 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._342 + 4 @ debug_80C5174
+ str r0, [r1]
+ bx lr
+._343:
+ .align 2, 0
+._342:
+ .word gTasks
+ .word debug_80C5174+1
+
+ thumb_func_end debug_80C5158
+
+ thumb_func_start debug_80C5174
+debug_80C5174:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._344 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._344 + 4 @ debug_80C5190
+ str r0, [r1]
+ bx lr
+._345:
+ .align 2, 0
+._344:
+ .word gTasks
+ .word debug_80C5190+1
+
+ thumb_func_end debug_80C5174
+
+ thumb_func_start debug_80C5190
+debug_80C5190:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._346 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._346 + 4 @ debug_80C51AC
+ str r0, [r1]
+ bx lr
+._347:
+ .align 2, 0
+._346:
+ .word gTasks
+ .word debug_80C51AC+1
+
+ thumb_func_end debug_80C5190
+
+ thumb_func_start debug_80C51AC
+debug_80C51AC:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._348 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._348 + 4 @ debug_80C51C8
+ str r0, [r1]
+ bx lr
+._349:
+ .align 2, 0
+._348:
+ .word gTasks
+ .word debug_80C51C8+1
+
+ thumb_func_end debug_80C51AC
+
+ thumb_func_start debug_80C51C8
+debug_80C51C8:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._350 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._350 + 4 @ debug_80C51E4
+ str r0, [r1]
+ bx lr
+._351:
+ .align 2, 0
+._350:
+ .word gTasks
+ .word debug_80C51E4+1
+
+ thumb_func_end debug_80C51C8
+
+ thumb_func_start debug_80C51E4
+debug_80C51E4:
+ push {lr}
+ bl sub_80408BC
+ ldr r0, ._352 @ gMain
+ ldr r1, ._352 + 4 @ debug_80C41A8
+ str r1, [r0, #0x8]
+ ldr r0, ._352 + 8 @ unref_sub_800D684
+ bl SetMainCallback2
+ pop {r0}
+ bx r0
+._353:
+ .align 2, 0
+._352:
+ .word gMain
+ .word debug_80C41A8+1
+ .word unref_sub_800D684+1
+
+ thumb_func_end debug_80C51E4
+
+ thumb_func_start debug_80C5208
+debug_80C5208:
+ push {r4, r5, r6, lr}
+ ldr r1, ._355 @ gUnknown_Debug_2038A1C
+ ldr r0, ._355 + 4 @ 0x2018000
+ str r0, [r1]
+ mov r3, #0x0
+ add r6, r1, #0
+ ldr r4, ._355 + 8 @ gSaveBlock2
+ add r5, r6, #0
+ mov r2, #0x0
+._354:
+ ldr r0, [r5]
+ lsl r1, r3, #0x2
+ add r0, r0, #0x64
+ add r0, r0, r1
+ str r2, [r0]
+ add r0, r3, #1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #0x3f
+ bls ._354 @cond_branch
+ ldr r2, [r6]
+ mov r0, #0xfc
+ str r0, [r2, #0x64]
+ ldrb r1, [r4, #0xa]
+ ldrb r0, [r4, #0xb]
+ lsl r0, r0, #0x8
+ orr r1, r1, r0
+ ldrb r0, [r4, #0xc]
+ lsl r0, r0, #0x10
+ orr r1, r1, r0
+ ldrb r0, [r4, #0xd]
+ lsl r0, r0, #0x18
+ orr r1, r1, r0
+ str r1, [r2, #0x70]
+ bl Random
+ add r4, r0, #0
+ bl Random
+ ldr r1, [r6]
+ lsl r4, r4, #0x10
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ orr r4, r4, r0
+ str r4, [r1, #0x74]
+ mov r0, #0x1
+ str r0, [r1, #0x68]
+ str r0, [r1, #0x6c]
+ bl debug_80C5C94
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._356:
+ .align 2, 0
+._355:
+ .word gUnknown_Debug_2038A1C
+ .word 0x2018000
+ .word gSaveBlock2
+
+ thumb_func_end debug_80C5208
+
+ thumb_func_start debug_80C527C
+debug_80C527C:
+ push {r4, r5, r6, r7, lr}
+ add r6, r0, #0
+ mov r5, #0x0
+ ldr r7, ._359 @ gPlayerPartyCount
+._361:
+ mov r0, #0x64
+ add r1, r5, #0
+ mul r1, r1, r0
+ ldr r0, ._359 + 4 @ gPlayerParty
+ add r4, r1, r0
+ add r0, r4, #0
+ mov r1, #0xb
+ mov r2, #0x0
+ bl GetMonData
+ cmp r0, #0
+ bne ._357 @cond_branch
+ add r0, r4, #0
+ add r1, r6, #0
+ mov r2, #0x64
+ bl memcpy
+ add r0, r5, #1
+ strb r0, [r7]
+ mov r0, #0x0
+ b ._358
+._360:
+ .align 2, 0
+._359:
+ .word gPlayerPartyCount
+ .word gPlayerParty
+._357:
+ add r0, r5, #1
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ cmp r5, #0x5
+ bls ._361 @cond_branch
+ ldr r0, ._362 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ bl SendMonToPC
+ mov r0, #0x1
+._358:
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._363:
+ .align 2, 0
+._362:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C527C
+
+ thumb_func_start InitCreatePokemon
+InitCreatePokemon:
+ push {r4, r5, lr}
+ add sp, sp, #0xffffffd4
+ ldr r1, ._364 @ gUnknown_Debug_083F8733
+ add r0, sp, #0x4
+ mov r2, #0x25
+ bl memcpy
+ bl debug_80C35DC
+ mov r0, #0x1
+ neg r0, r0
+ mov r4, #0x0
+ str r4, [sp]
+ mov r1, #0x0
+ mov r2, #0x10
+ mov r3, #0x0
+ bl BeginNormalPaletteFade
+ ldr r0, ._364 + 4 @ 0x4000050
+ mov r5, #0x0
+ strh r4, [r0]
+ add r0, r0, #0x2
+ strh r4, [r0]
+ add r0, r0, #0x2
+ strh r4, [r0]
+ ldr r3, ._364 + 8 @ 0x4000208
+ ldrh r2, [r3]
+ strh r4, [r3]
+ ldr r4, ._364 + 12 @ 0x4000200
+ ldrh r0, [r4]
+ mov r1, #0x1
+ orr r0, r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ ldr r2, ._364 + 16 @ 0x4000004
+ ldrh r0, [r2]
+ mov r1, #0x8
+ orr r0, r0, r1
+ strh r0, [r2]
+ ldr r0, ._364 + 20 @ debug_80C3758
+ bl SetVBlankCallback
+ ldr r0, ._364 + 24 @ debug_80C370C
+ bl SetMainCallback2
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x3
+ bl Menu_DrawStdWindowFrame
+ add r0, sp, #0x4
+ mov r1, #0x1
+ mov r2, #0x1
+ bl Menu_PrintText
+ mov r1, #0x80
+ lsl r1, r1, #0x13
+ mov r2, #0x8a
+ lsl r2, r2, #0x5
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, ._364 + 28 @ debug_80C53A4
+ mov r1, #0x0
+ bl CreateTask
+ bl debug_80C5208
+ ldr r1, ._364 + 32 @ gUnknown_Debug_2038A1C
+ ldr r0, [r1]
+ mov r2, #0xb4
+ lsl r2, r2, #0x1
+ add r0, r0, r2
+ strb r5, [r0]
+ ldr r0, [r1]
+ ldr r1, ._364 + 36 @ 0x169
+ add r0, r0, r1
+ strb r5, [r0]
+ add sp, sp, #0x2c
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+._365:
+ .align 2, 0
+._364:
+ .word gUnknown_Debug_083F8733
+ .word 0x4000050
+ .word 0x4000208
+ .word 0x4000200
+ .word 0x4000004
+ .word debug_80C3758+1
+ .word debug_80C370C+1
+ .word debug_80C53A4+1
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+
+ thumb_func_end InitCreatePokemon
+
+ thumb_func_start debug_80C53A4
+debug_80C53A4:
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ ldr r2, ._366 @ gTasks
+ lsl r1, r0, #0x2
+ add r1, r1, r0
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r0, ._366 + 4 @ debug_80C53C0
+ str r0, [r1]
+ bx lr
+._367:
+ .align 2, 0
+._366:
+ .word gTasks
+ .word debug_80C53C0+1
+
+ thumb_func_end debug_80C53A4
+
+ thumb_func_start debug_80C53C0
+debug_80C53C0:
+ push {r4, lr}
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ bl debug_80C6384
+ mov r0, #0x0
+ bl debug_80C627C
+ ldr r1, ._368 @ gTasks
+ lsl r0, r4, #0x2
+ add r0, r0, r4
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._368 + 4 @ debug_80C53F0
+ str r1, [r0]
+ pop {r4}
+ pop {r0}
+ bx r0
+._369:
+ .align 2, 0
+._368:
+ .word gTasks
+ .word debug_80C53F0+1
+
+ thumb_func_end debug_80C53C0
+
+ thumb_func_start debug_80C53F0
+debug_80C53F0:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r5, r0, #0x18
+ ldr r0, ._372 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r2, #0x1
+ and r2, r2, r1
+ add r4, r0, #0
+ cmp r2, #0
+ beq ._370 @cond_branch
+ ldr r0, ._372 + 4 @ gUnknown_Debug_2038A1C
+ ldr r3, [r0]
+ mov r0, #0xb2
+ lsl r0, r0, #0x1
+ add r2, r3, r0
+ ldr r1, ._372 + 8 @ gUnknown_Debug_083F8698
+ mov r4, #0xb4
+ lsl r4, r4, #0x1
+ add r0, r3, r4
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r6, ._372 + 12 @ 0x169
+ add r1, r3, r6
+ ldrb r1, [r1]
+ ldr r0, [r0]
+ add r0, r0, r1
+ ldrb r1, [r0]
+ lsl r1, r1, #0x2
+ add r0, r3, #0
+ add r0, r0, #0x64
+ add r0, r0, r1
+ ldr r0, [r0]
+ str r0, [r2]
+ mov r0, #0xb5
+ lsl r0, r0, #0x1
+ add r1, r3, r0
+ mov r0, #0x0
+ strb r0, [r1]
+ bl debug_80C643C
+ ldr r1, ._372 + 16 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._372 + 20 @ debug_80C55E4
+ b ._375
+._373:
+ .align 2, 0
+._372:
+ .word gMain
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F8698
+ .word 0x169
+ .word gTasks
+ .word debug_80C55E4+1
+._370:
+ mov r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._374 @cond_branch
+ mov r0, #0x1
+ neg r0, r0
+ str r2, [sp]
+ mov r1, #0x0
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r0, ._376 @ debug_80C370C
+ bl SetMainCallback2
+ ldr r1, ._376 + 4 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._376 + 8 @ debug_80C373C
+ b ._375
+._377:
+ .align 2, 0
+._376:
+ .word debug_80C370C+1
+ .word gTasks
+ .word debug_80C373C+1
+._374:
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._378 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ bl debug_80C5FFC
+ ldr r0, ._381 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ bl debug_80C527C
+ add r4, r0, #0
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ mov r0, #0x3
+ mov r1, #0x8
+ mov r2, #0x1a
+ mov r3, #0xb
+ bl Menu_DrawStdWindowFrame
+ cmp r4, #0
+ beq ._379 @cond_branch
+ ldr r0, ._381 + 4 @ gUnknown_Debug_083F872A
+ mov r1, #0x4
+ mov r2, #0x9
+ bl Menu_PrintText
+ b ._380
+._382:
+ .align 2, 0
+._381:
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F872A
+._379:
+ ldr r0, ._384 @ gUnknown_Debug_083F8720
+ mov r1, #0x4
+ mov r2, #0x9
+ bl Menu_PrintText
+._380:
+ ldr r0, ._384 + 4 @ gTasks
+ lsl r1, r5, #0x2
+ add r1, r1, r5
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._384 + 8 @ debug_80C5708
+ str r0, [r1]
+ b ._400
+._385:
+ .align 2, 0
+._384:
+ .word gUnknown_Debug_083F8720
+ .word gTasks
+ .word debug_80C5708+1
+._378:
+ mov r0, #0x4
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._386 @cond_branch
+ ldr r0, ._388 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ ldr r4, [r0, #0x64]
+ lsl r4, r4, #0x10
+ lsr r4, r4, #0x10
+ add r0, r4, #0
+ mov r1, #0x2
+ bl GetSetPokedexFlag
+ add r0, r4, #0
+ mov r1, #0x3
+ bl GetSetPokedexFlag
+ mov r0, #0x5
+ bl PlaySE
+ b ._400
+._389:
+ .align 2, 0
+._388:
+ .word gUnknown_Debug_2038A1C
+._386:
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._390 @cond_branch
+ mov r0, #0x2
+ bl debug_80C627C
+ b ._400
+._390:
+ mov r0, #0x80
+ and r0, r0, r1
+ lsl r0, r0, #0x10
+ lsr r3, r0, #0x10
+ cmp r3, #0
+ beq ._392 @cond_branch
+ mov r0, #0x1
+ bl debug_80C627C
+ b ._400
+._392:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._395 @cond_branch
+ ldr r2, ._397 @ gUnknown_Debug_2038A1C
+ ldr r0, [r2]
+ mov r6, #0xb4
+ lsl r6, r6, #0x1
+ add r1, r0, r6
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._395 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ ldr r0, [r2]
+ ldr r1, ._397 + 4 @ 0x169
+ add r0, r0, r1
+ strb r3, [r0]
+ b ._396
+._398:
+ .align 2, 0
+._397:
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+._395:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._400 @cond_branch
+ ldr r3, ._401 @ gUnknown_Debug_2038A1C
+ ldr r0, [r3]
+ mov r4, #0xb4
+ lsl r4, r4, #0x1
+ add r2, r0, r4
+ ldrb r0, [r2]
+ cmp r0, #0x4
+ bhi ._400 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x0
+ strb r0, [r2]
+ ldr r0, [r3]
+ ldr r6, ._401 + 4 @ 0x169
+ add r0, r0, r6
+ strb r1, [r0]
+._396:
+ ldr r1, ._401 + 8 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._401 + 12 @ debug_80C53C0
+._375:
+ str r1, [r0]
+._400:
+ add sp, sp, #0x4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._402:
+ .align 2, 0
+._401:
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+ .word gTasks
+ .word debug_80C53C0+1
+
+ thumb_func_end debug_80C53F0
+
+ thumb_func_start debug_80C55E4
+debug_80C55E4:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ add r6, r3, #0
+ ldr r1, ._405 @ gUnknown_Debug_083F8698
+ ldr r2, ._405 + 4 @ gUnknown_Debug_2038A1C
+ ldr r0, [r2]
+ mov ip, r0
+ mov r0, #0xb4
+ lsl r0, r0, #0x1
+ add r0, r0, ip
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._405 + 8 @ 0x169
+ add r1, r1, ip
+ ldrb r1, [r1]
+ ldr r0, [r0]
+ add r0, r0, r1
+ ldrb r5, [r0]
+ add r7, r5, #0
+ ldr r1, ._405 + 12 @ gMain
+ ldrh r4, [r1, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r4
+ mov r8, r2
+ add r2, r1, #0
+ cmp r0, #0
+ beq ._403 @cond_branch
+ ldr r0, ._405 + 16 @ gTasks
+ lsl r1, r3, #0x2
+ add r1, r1, r3
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._405 + 20 @ debug_80C53C0
+ str r0, [r1]
+ b ._422
+._406:
+ .align 2, 0
+._405:
+ .word gUnknown_Debug_083F8698
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+ .word gMain
+ .word gTasks
+ .word debug_80C53C0+1
+._403:
+ mov r0, #0x2
+ and r0, r0, r4
+ cmp r0, #0
+ beq ._407 @cond_branch
+ lsl r1, r5, #0x2
+ mov r0, ip
+ add r0, r0, #0x64
+ add r0, r0, r1
+ mov r1, #0xb2
+ lsl r1, r1, #0x1
+ add r1, r1, ip
+ ldr r1, [r1]
+ str r1, [r0]
+ ldr r1, ._409 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._409 + 4 @ debug_80C53C0
+ str r1, [r0]
+ b ._422
+._410:
+ .align 2, 0
+._409:
+ .word gTasks
+ .word debug_80C53C0+1
+._407:
+ ldrh r1, [r2, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._411 @cond_branch
+ mov r0, #0x1
+ b ._412
+._411:
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._413 @cond_branch
+ mov r0, #0x2
+._412:
+ bl debug_80C6544
+ bl debug_80C643C
+ b ._422
+._413:
+ ldr r0, ._419 @ gUnknown_Debug_083F8554
+ lsl r1, r7, #0x3
+ add r0, r0, #0x4
+ add r1, r1, r0
+ ldr r1, [r1]
+ ldrb r0, [r1, #0x9]
+ cmp r0, #0xff
+ beq ._422 @cond_branch
+ mov r0, #0x20
+ and r0, r0, r4
+ cmp r0, #0
+ beq ._417 @cond_branch
+ mov r0, #0xb5
+ lsl r0, r0, #0x1
+ add ip, ip, r0
+ mov r0, ip
+ ldrb r3, [r0]
+ ldrb r0, [r1, #0x9]
+ sub r0, r0, #0x1
+ cmp r3, r0
+ bge ._417 @cond_branch
+ add r0, r3, #1
+ mov r1, ip
+ strb r0, [r1]
+ bl debug_80C643C
+ b ._422
+._420:
+ .align 2, 0
+._419:
+ .word gUnknown_Debug_083F8554
+._417:
+ ldrh r1, [r2, #0x2e]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._422 @cond_branch
+ mov r2, r8
+ ldr r0, [r2]
+ mov r2, #0xb5
+ lsl r2, r2, #0x1
+ add r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._422 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ bl debug_80C643C
+._422:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C55E4
+
+ thumb_func_start debug_80C5708
+debug_80C5708:
+ push {lr}
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ ldr r0, ._424 @ gMain
+ ldrh r1, [r0, #0x2e]
+ mov r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._423 @cond_branch
+ ldr r0, ._424 + 4 @ gTasks
+ lsl r1, r2, #0x2
+ add r1, r1, r2
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._424 + 8 @ debug_80C53C0
+ str r0, [r1]
+._423:
+ pop {r0}
+ bx r0
+._425:
+ .align 2, 0
+._424:
+ .word gMain
+ .word gTasks
+ .word debug_80C53C0+1
+
+ thumb_func_end debug_80C5708
+
+ thumb_func_start debug_80C5738
+debug_80C5738:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ add r6, r0, #0
+ lsl r1, r1, #0x18
+ lsr r4, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r8, r2
+ cmp r4, #0xfe
+ bne ._426 @cond_branch
+ ldr r1, ._428 @ gUnknown_Debug_083F850A
+ mov r2, #0x7
+ bl debug_80C689C
+ add r0, r6, #7
+ ldr r7, ._428 + 4 @ gUnknown_Debug_2038A1C
+ ldr r1, [r7]
+ add r1, r1, #0xf0
+ ldr r1, [r1]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl debug_80C6678
+ mov r4, #0x0
+ strb r4, [r6, #0x13]
+ strb r4, [r6, #0x14]
+ add r0, r6, #0
+ add r0, r0, #0x15
+ ldr r1, ._428 + 8 @ gUnknown_Debug_083F8514
+ mov r2, #0x7
+ bl debug_80C689C
+ add r0, r6, #0
+ add r0, r0, #0x1c
+ ldr r1, [r7]
+ add r1, r1, #0xf4
+ ldr r1, [r1]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl debug_80C6678
+ add r0, r6, #0
+ add r0, r0, #0x28
+ strb r4, [r0]
+ add r0, r0, #0x1
+ strb r4, [r0]
+ add r0, r0, #0x1
+ ldr r1, ._428 + 12 @ gUnknown_Debug_083F851C
+ mov r2, #0x9
+ bl debug_80C689C
+ add r0, r6, #0
+ add r0, r0, #0x31
+ ldr r1, [r7]
+ add r1, r1, #0xf8
+._431:
+ ldr r1, [r1]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl debug_80C6678
+ b ._517
+._429:
+ .align 2, 0
+._428:
+ .word gUnknown_Debug_083F850A
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F8514
+ .word gUnknown_Debug_083F851C
+._426:
+ cmp r4, #0xfd
+ bne ._430 @cond_branch
+ ldr r1, ._432 @ gUnknown_Debug_083F8524
+ add r0, r6, #0
+ mov r2, #0x9
+ bl debug_80C689C
+ add r0, r6, #0
+ add r0, r0, #0x9
+ ldr r7, ._432 + 4 @ gUnknown_Debug_2038A1C
+ ldr r1, [r7]
+ add r1, r1, #0xfc
+ ldr r1, [r1]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl debug_80C6678
+ mov r4, #0x0
+ strb r4, [r6, #0x15]
+ strb r4, [r6, #0x16]
+ add r0, r6, #0
+ add r0, r0, #0x17
+ ldr r1, ._432 + 8 @ gUnknown_Debug_083F852D
+ mov r2, #0x9
+ bl debug_80C689C
+ add r0, r6, #0
+ add r0, r0, #0x20
+ ldr r1, [r7]
+ mov r2, #0x80
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ ldr r1, [r1]
+ mov r2, #0x3
+ mov r3, #0x1
+ bl debug_80C6678
+ add r0, r6, #0
+ add r0, r0, #0x2c
+ strb r4, [r0]
+ add r0, r0, #0x1
+ strb r4, [r0]
+ add r0, r0, #0x1
+ ldr r1, ._432 + 12 @ gUnknown_Debug_083F8537
+ mov r2, #0x9
+ bl debug_80C689C
+ add r0, r6, #0
+ add r0, r0, #0x37
+ ldr r1, [r7]
+ mov r3, #0x82
+ lsl r3, r3, #0x1
+ add r1, r1, r3
+ b ._431
+._433:
+ .align 2, 0
+._432:
+ .word gUnknown_Debug_083F8524
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F852D
+ .word gUnknown_Debug_083F8537
+._430:
+ mov r1, #0x0
+ lsl r5, r4, #0x3
+ mov r2, #0x0
+._434:
+ add r0, r6, r1
+ strb r2, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0xb
+ bls ._434 @cond_branch
+ ldr r0, ._437 @ gUnknown_Debug_083F8554
+ add r0, r5, r0
+ ldr r1, [r0]
+ add r0, r6, #0
+ mov r2, #0xb
+ bl debug_80C689C
+ mov r1, #0xc
+ mov r2, #0xff
+._435:
+ add r0, r6, r1
+ strb r2, [r0]
+ add r0, r1, #1
+ lsl r0, r0, #0x10
+ lsr r1, r0, #0x10
+ cmp r1, #0xff
+ bls ._435 @cond_branch
+ ldr r0, ._437 @ gUnknown_Debug_083F8554
+ add r0, r0, #0x4
+ add r0, r5, r0
+ ldr r0, [r0]
+ ldrb r2, [r0, #0x9]
+ lsl r0, r2, #0x1a
+ lsr r5, r0, #0x18
+ cmp r4, #0x22
+ bhi ._436 @cond_branch
+ lsl r0, r4, #0x2
+ ldr r1, ._437 + 4 @
+ add r1, r0, r1
+ ldr r1, [r1]
+ add r7, r0, #0
+ mov pc, r1
+._438:
+ .align 2, 0
+._437:
+ .word gUnknown_Debug_083F8554
+ .word ._439
+._439:
+ .word ._440
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._445
+ .word ._446
+ .word ._450
+ .word ._450
+ .word ._450
+ .word ._450
+ .word ._451
+ .word ._452
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._472
+ .word ._473
+ .word ._474
+._436:
+ mov r0, #0xff
+ strb r0, [r6]
+ b ._517
+._440:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._477 @ gUnknown_Debug_2038A1C
+ mov r9, r1
+ ldr r1, [r1]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ mov r3, r8
+ bl debug_80C6678
+ add r1, r5, r6
+ mov r0, #0x0
+ strb r0, [r1, #0xa]
+ mov r0, #0xfc
+ strb r0, [r1, #0xb]
+ mov r0, #0x1
+ strb r0, [r1, #0xc]
+ mov r2, r8
+ strb r2, [r1, #0xd]
+ add r4, r5, #0
+ add r4, r4, #0xe
+ add r4, r6, r4
+ mov r3, r9
+ ldr r0, [r3]
+ add r0, r0, #0x64
+ add r0, r0, r7
+ ldrh r0, [r0]
+ bl NationalPokedexNumToSpecies
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r1, #0xb
+ mul r1, r1, r0
+ ldr r0, ._477 + 4 @ gSpeciesNames
+ add r1, r1, r0
+ add r0, r4, #0
+ mov r2, #0xa
+ bl debug_80C689C
+ b ._517
+._478:
+ .align 2, 0
+._477:
+ .word gUnknown_Debug_2038A1C
+ .word gSpeciesNames
+._445:
+ ldr r0, ._483 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ add r0, r0, #0x64
+ add r0, r0, r7
+ ldr r0, [r0]
+ cmp r0, #0x1
+ beq ._479 @cond_branch
+ cmp r0, #0x1
+ bcc ._480 @cond_branch
+ cmp r0, #0x2
+ beq ._481 @cond_branch
+ b ._517
+._484:
+ .align 2, 0
+._483:
+ .word gUnknown_Debug_2038A1C
+._480:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._486 @ gUnknown_Debug_083F8546
+ b ._488
+._487:
+ .align 2, 0
+._486:
+ .word gUnknown_Debug_083F8546
+._479:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._489 @ gUnknown_Debug_083F8541
+ b ._488
+._490:
+ .align 2, 0
+._489:
+ .word gUnknown_Debug_083F8541
+._481:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._492 @ gUnknown_Debug_083F8544
+._488:
+ mov r2, #0x2
+ bl debug_80C689C
+ b ._517
+._493:
+ .align 2, 0
+._492:
+ .word gUnknown_Debug_083F8544
+._450:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r4, ._495 @ gUnknown_Debug_2038A1C
+ ldr r1, [r4]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ mov r3, r8
+ bl debug_80C6678
+ add r1, r5, r6
+ mov r0, #0x0
+ strb r0, [r1, #0xa]
+ mov r0, #0xfc
+ strb r0, [r1, #0xb]
+ mov r0, #0x1
+ strb r0, [r1, #0xc]
+ mov r0, r8
+ strb r0, [r1, #0xd]
+ add r0, r5, #0
+ add r0, r0, #0xe
+ add r0, r6, r0
+ ldr r1, [r4]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r2, [r1]
+ mov r1, #0xd
+ mul r1, r1, r2
+ ldr r2, ._495 + 4 @ gMoveNames
+ add r1, r1, r2
+ b ._494
+._496:
+ .align 2, 0
+._495:
+ .word gUnknown_Debug_2038A1C
+ .word gMoveNames
+._451:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r4, ._499 @ gUnknown_Debug_2038A1C
+ ldr r1, [r4]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ mov r3, r8
+ bl debug_80C6678
+ add r1, r5, r6
+ mov r0, #0x0
+ strb r0, [r1, #0xa]
+ mov r0, #0xfc
+ strb r0, [r1, #0xb]
+ mov r0, #0x1
+ strb r0, [r1, #0xc]
+ mov r2, r8
+ strb r2, [r1, #0xd]
+ ldr r0, [r4]
+ add r0, r0, #0x64
+ add r0, r0, r7
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._497 @cond_branch
+ add r4, r5, #0
+ add r4, r4, #0xe
+ add r4, r6, r4
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl ItemId_GetName
+ add r1, r0, #0
+ add r0, r4, #0
+ b ._498
+._500:
+ .align 2, 0
+._499:
+ .word gUnknown_Debug_2038A1C
+._497:
+ add r0, r5, #0
+ add r0, r0, #0xe
+ add r0, r6, r0
+ ldr r1, ._502 @ gUnknown_Debug_083F8541
+._498:
+ mov r2, #0x9
+ bl debug_80C689C
+ b ._517
+._503:
+ .align 2, 0
+._502:
+ .word gUnknown_Debug_083F8541
+._452:
+ add r6, r6, #0xc
+ ldr r4, ._505 @ gUnknown_Debug_2038A1C
+ ldr r0, [r4]
+ ldr r0, [r0, #0x64]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl NationalPokedexNumToSpecies
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ ldr r1, [r4]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldrb r1, [r1]
+ bl GetAbilityBySpecies
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r1, #0xd
+ mul r1, r1, r0
+ ldr r0, ._505 + 4 @ gAbilityNames
+ add r1, r1, r0
+ add r0, r6, #0
+._494:
+ mov r2, #0xc
+ bl debug_80C689C
+ b ._517
+._506:
+ .align 2, 0
+._505:
+ .word gUnknown_Debug_2038A1C
+ .word gAbilityNames
+._474:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r2, ._508 @ gUnknown_Debug_083F86E8
+ ldr r1, ._508 + 4 @ gUnknown_Debug_2038A1C
+ ldr r1, [r1]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r1, [r1]
+ b ._514
+._509:
+ .align 2, 0
+._508:
+ .word gUnknown_Debug_083F86E8
+ .word gUnknown_Debug_2038A1C
+._472:
+ add r0, r6, #0
+ add r0, r0, #0xc
+ ldr r1, ._511 @ gUnknown_Debug_2038A1C
+ ldr r1, [r1]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ mov r3, r8
+ bl debug_80C6678
+ b ._517
+._512:
+ .align 2, 0
+._511:
+ .word gUnknown_Debug_2038A1C
+._473:
+ ldr r0, ._515 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ add r0, r0, #0x64
+ add r0, r0, r7
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._513 @cond_branch
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._515 + 4 @ gUnknown_Debug_083F854A
+ b ._514
+._516:
+ .align 2, 0
+._515:
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F854A
+._513:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r1, ._518 @ gUnknown_Debug_083F854D
+._514:
+ mov r2, #0x4
+ bl debug_80C689C
+ b ._517
+._519:
+ .align 2, 0
+._518:
+ .word gUnknown_Debug_083F854D
+._446:
+ add r0, r6, #0
+ add r0, r0, #0xa
+ ldr r2, ._520 @ gNatureNames
+ ldr r1, ._520 + 4 @ gUnknown_Debug_2038A1C
+ ldr r1, [r1]
+ add r1, r1, #0x64
+ add r1, r1, r7
+ ldr r1, [r1]
+ lsl r1, r1, #0x2
+ add r1, r1, r2
+ ldr r1, [r1]
+ mov r2, #0x5
+ bl debug_80C689C
+._517:
+ mov r0, #0x0
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r1}
+ bx r1
+._521:
+ .align 2, 0
+._520:
+ .word gNatureNames
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5738
+
+ thumb_func_start debug_80C5B60
+debug_80C5B60:
+ lsl r0, r0, #0x18
+ ldr r1, ._522 @ gUnknown_Debug_2038A1C
+ ldr r1, [r1]
+ lsr r0, r0, #0x16
+ add r1, r1, #0x64
+ add r1, r1, r0
+ ldr r0, [r1]
+ bx lr
+._523:
+ .align 2, 0
+._522:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5B60
+
+ thumb_func_start debug_80C5B74
+debug_80C5B74:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ lsl r1, r1, #0x18
+ lsr r2, r1, #0x18
+ cmp r2, #0x18
+ bhi ._540 @cond_branch
+ lsl r0, r2, #0x2
+ ldr r1, ._526 @
+ add r1, r0, r1
+ ldr r1, [r1]
+ add r3, r0, #0
+ mov pc, r1
+._527:
+ .align 2, 0
+._526:
+ .word ._525
+._525:
+ .word ._532
+ .word ._529
+ .word ._530
+ .word ._532
+ .word ._532
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._540
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+ .word ._552
+._540:
+ ldr r0, ._554 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ lsl r1, r2, #0x2
+ add r0, r0, #0x64
+ add r0, r0, r1
+ str r6, [r0]
+ b ._562
+._555:
+ .align 2, 0
+._554:
+ .word gUnknown_Debug_2038A1C
+._532:
+ ldr r0, ._557 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ add r0, r0, #0x64
+ add r0, r0, r3
+ str r6, [r0]
+ bl debug_80C5C94
+ b ._562
+._558:
+ .align 2, 0
+._557:
+ .word gUnknown_Debug_2038A1C
+._529:
+ ldr r4, ._560 @ gUnknown_Debug_2038A1C
+ ldr r1, [r4]
+ add r0, r1, #0
+ add r0, r0, #0x64
+ add r0, r0, r3
+ str r6, [r0]
+ ldr r0, [r1, #0x64]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl NationalPokedexNumToSpecies
+ ldr r5, [r4]
+ ldr r4, ._560 + 4 @ gExperienceTables
+ lsl r2, r6, #0x2
+ ldr r3, ._560 + 8 @ gBaseStats
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ lsl r1, r0, #0x3
+ sub r1, r1, r0
+ lsl r1, r1, #0x2
+ add r1, r1, r3
+ ldrb r1, [r1, #0x13]
+ mov r0, #0xca
+ lsl r0, r0, #0x1
+ mul r0, r0, r1
+ add r2, r2, r0
+ add r2, r2, r4
+ ldr r0, [r2]
+ str r0, [r5, #0x6c]
+ bl debug_80C5C94
+ b ._562
+._561:
+ .align 2, 0
+._560:
+ .word gUnknown_Debug_2038A1C
+ .word gExperienceTables
+ .word gBaseStats
+._530:
+ ldr r0, ._563 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ add r0, r0, #0x64
+ add r0, r0, r3
+ str r6, [r0]
+ bl debug_80C5DEC
+ b ._562
+._564:
+ .align 2, 0
+._563:
+ .word gUnknown_Debug_2038A1C
+._552:
+ ldr r0, ._565 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ add r0, r0, #0x64
+ add r0, r0, r3
+ str r6, [r0]
+ bl debug_80C5EF4
+._562:
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._566:
+ .align 2, 0
+._565:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5B74
+
+ thumb_func_start debug_80C5C94
+debug_80C5C94:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffff0
+ ldr r6, ._567 @ gUnknown_Debug_2038A1C
+ ldr r2, [r6]
+ add r0, r2, #0
+ add r0, r0, #0x98
+ ldr r4, [r0]
+ mov r1, #0x1f
+ and r4, r4, r1
+ add r0, r0, #0x8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xa8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0xa
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xb0
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0xf
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xb8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x14
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xc0
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x19
+ orr r4, r4, r0
+ ldr r0, [r2, #0x64]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl NationalPokedexNumToSpecies
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ ldr r0, [r6]
+ ldr r2, [r0, #0x68]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ mov r5, #0x1
+ str r5, [sp]
+ ldr r3, [r0, #0x74]
+ str r3, [sp, #0x4]
+ str r5, [sp, #0x8]
+ ldr r3, [r0, #0x70]
+ str r3, [sp, #0xc]
+ add r3, r4, #0
+ bl CreateMon
+ ldr r0, [r6]
+ bl GetMonGender
+ ldr r1, [r6]
+ add r0, r0, #0x2
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [r1, #0x78]
+ add r0, r1, #0
+ bl GetNature
+ ldr r1, [r6]
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ str r0, [r1, #0x7c]
+ add r0, r1, #0
+ mov r1, #0xd
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0x80
+ str r2, [r1]
+ mov r1, #0xe
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0x84
+ str r2, [r1]
+ mov r1, #0xf
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0x88
+ str r2, [r1]
+ mov r1, #0x10
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0x8c
+ str r2, [r1]
+ mov r1, #0x19
+ bl GetMonData
+ add r1, r0, #0
+ ldr r0, [r6]
+ str r1, [r0, #0x6c]
+ mov r1, #0x3a
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0xf0
+ str r2, [r1]
+ mov r1, #0x3b
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0xf4
+ str r2, [r1]
+ mov r1, #0x3c
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0xf8
+ str r2, [r1]
+ mov r1, #0x3d
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ add r1, r0, #0
+ add r1, r1, #0xfc
+ str r2, [r1]
+ mov r1, #0x3e
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r6]
+ mov r3, #0x80
+ lsl r3, r3, #0x1
+ add r1, r0, r3
+ str r2, [r1]
+ mov r1, #0x3f
+ bl GetMonData
+ ldr r1, [r6]
+ mov r2, #0x82
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ str r0, [r1]
+ add sp, sp, #0x10
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._568:
+ .align 2, 0
+._567:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5C94
+
+ thumb_func_start debug_80C5DEC
+debug_80C5DEC:
+ push {r4, lr}
+ add sp, sp, #0xfffffffc
+ mov r0, #0x0
+ str r0, [sp]
+ ldr r4, ._569 @ gUnknown_Debug_2038A1C
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0x6c
+ mov r1, #0x19
+ bl SetMonData
+ ldr r0, [r4]
+ mov r1, #0xd
+ mov r2, sp
+ bl SetMonData
+ ldr r0, [r4]
+ mov r1, #0xe
+ mov r2, sp
+ bl SetMonData
+ ldr r0, [r4]
+ mov r1, #0xf
+ mov r2, sp
+ bl SetMonData
+ ldr r0, [r4]
+ mov r1, #0x10
+ mov r2, sp
+ bl SetMonData
+ ldr r0, [r4]
+ bl CalculateMonStats
+ ldr r0, [r4]
+ bl GiveMonInitialMoveset
+ ldr r0, [r4]
+ mov r1, #0x38
+ bl GetMonData
+ add r1, r0, #0
+ ldr r0, [r4]
+ str r1, [r0, #0x68]
+ mov r1, #0xd
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0x80
+ str r2, [r1]
+ mov r1, #0xe
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0x84
+ str r2, [r1]
+ mov r1, #0xf
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0x88
+ str r2, [r1]
+ mov r1, #0x10
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0x8c
+ str r2, [r1]
+ mov r1, #0x3a
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf0
+ str r2, [r1]
+ mov r1, #0x3b
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf4
+ str r2, [r1]
+ mov r1, #0x3c
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf8
+ str r2, [r1]
+ mov r1, #0x3d
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xfc
+ str r2, [r1]
+ mov r1, #0x3e
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x80
+ lsl r3, r3, #0x1
+ add r1, r0, r3
+ str r2, [r1]
+ mov r1, #0x3f
+ bl GetMonData
+ ldr r1, [r4]
+ mov r2, #0x82
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ str r0, [r1]
+ add sp, sp, #0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+._570:
+ .align 2, 0
+._569:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5DEC
+
+ thumb_func_start debug_80C5EF4
+debug_80C5EF4:
+ push {r4, lr}
+ ldr r4, ._571 @ gUnknown_Debug_2038A1C
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0x98
+ mov r1, #0x27
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0x9c
+ mov r1, #0x1a
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xa0
+ mov r1, #0x28
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xa4
+ mov r1, #0x1b
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xa8
+ mov r1, #0x29
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xac
+ mov r1, #0x1c
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xb0
+ mov r1, #0x2a
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xb4
+ mov r1, #0x1d
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xb8
+ mov r1, #0x2b
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xbc
+ mov r1, #0x1e
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xc0
+ mov r1, #0x2c
+ bl SetMonData
+ ldr r0, [r4]
+ add r2, r0, #0
+ add r2, r2, #0xc4
+ mov r1, #0x1f
+ bl SetMonData
+ ldr r0, [r4]
+ bl CalculateMonStats
+ ldr r0, [r4]
+ mov r1, #0x3a
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf0
+ str r2, [r1]
+ mov r1, #0x3b
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf4
+ str r2, [r1]
+ mov r1, #0x3c
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xf8
+ str r2, [r1]
+ mov r1, #0x3d
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ add r1, r0, #0
+ add r1, r1, #0xfc
+ str r2, [r1]
+ mov r1, #0x3e
+ bl GetMonData
+ add r2, r0, #0
+ ldr r0, [r4]
+ mov r3, #0x80
+ lsl r3, r3, #0x1
+ add r1, r0, r3
+ str r2, [r1]
+ mov r1, #0x3f
+ bl GetMonData
+ ldr r1, [r4]
+ mov r2, #0x82
+ lsl r2, r2, #0x1
+ add r1, r1, r2
+ str r0, [r1]
+ pop {r4}
+ pop {r0}
+ bx r0
+._572:
+ .align 2, 0
+._571:
+ .word gUnknown_Debug_2038A1C
+
+ thumb_func_end debug_80C5EF4
+
+ thumb_func_start debug_80C5FFC
+debug_80C5FFC:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xffffffe0
+ ldr r1, ._578 @ gUnknown_Debug_083F8758
+ add r0, sp, #0x10
+ mov r2, #0x4
+ bl memcpy
+ add r7, sp, #0x14
+ ldr r1, ._578 + 4 @ gUnknown_Debug_083F875C
+ add r0, r7, #0
+ mov r2, #0x8
+ bl memcpy
+ ldr r5, ._578 + 8 @ gUnknown_Debug_2038A1C
+ ldr r2, [r5]
+ add r0, r2, #0
+ add r0, r0, #0x98
+ ldr r4, [r0]
+ mov r1, #0x1f
+ and r4, r4, r1
+ add r0, r0, #0x8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xa8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0xa
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xb0
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0xf
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xb8
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x14
+ orr r4, r4, r0
+ add r0, r2, #0
+ add r0, r0, #0xc0
+ ldr r0, [r0]
+ and r0, r0, r1
+ lsl r0, r0, #0x19
+ orr r4, r4, r0
+ ldr r0, [r2, #0x64]
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl NationalPokedexNumToSpecies
+ add r1, r0, #0
+ lsl r1, r1, #0x10
+ lsr r1, r1, #0x10
+ ldr r0, [r5]
+ ldr r2, [r0, #0x68]
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsl r4, r4, #0x18
+ lsr r4, r4, #0x18
+ mov r6, #0x1
+ str r6, [sp]
+ ldr r3, [r0, #0x74]
+ str r3, [sp, #0x4]
+ str r6, [sp, #0x8]
+ ldr r3, [r0, #0x70]
+ str r3, [sp, #0xc]
+ add r3, r4, #0
+ bl CreateMon
+ ldr r2, [r5]
+ add r0, r2, #0
+ add r0, r0, #0x80
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._573 @cond_branch
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x10
+ add r0, r2, #0
+ mov r2, #0x0
+ bl SetMonMoveSlot
+._573:
+ ldr r2, [r5]
+ add r0, r2, #0
+ add r0, r0, #0x84
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._574 @cond_branch
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x10
+ add r0, r2, #0
+ mov r2, #0x1
+ bl SetMonMoveSlot
+._574:
+ ldr r2, [r5]
+ add r0, r2, #0
+ add r0, r0, #0x88
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._575 @cond_branch
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x10
+ add r0, r2, #0
+ mov r2, #0x2
+ bl SetMonMoveSlot
+._575:
+ ldr r2, [r5]
+ add r0, r2, #0
+ add r0, r0, #0x8c
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._576 @cond_branch
+ lsl r1, r0, #0x10
+ lsr r1, r1, #0x10
+ add r0, r2, #0
+ mov r2, #0x3
+ bl SetMonMoveSlot
+._576:
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0x6c
+ mov r1, #0x19
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0x98
+ mov r1, #0x27
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0x9c
+ mov r1, #0x1a
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xa0
+ mov r1, #0x28
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xa4
+ mov r1, #0x1b
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xa8
+ mov r1, #0x29
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xac
+ mov r1, #0x1c
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xb0
+ mov r1, #0x2a
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xb4
+ mov r1, #0x1d
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xb8
+ mov r1, #0x2b
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xbc
+ mov r1, #0x1e
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xc0
+ mov r1, #0x2c
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xc4
+ mov r1, #0x1f
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xc8
+ mov r1, #0x16
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xcc
+ mov r1, #0x17
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xd0
+ mov r1, #0x18
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xd4
+ mov r1, #0x21
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xd8
+ mov r1, #0x2f
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xdc
+ mov r1, #0x30
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xe0
+ mov r1, #0x20
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xe4
+ mov r1, #0x22
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0x90
+ mov r1, #0xc
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0x94
+ mov r1, #0x2e
+ bl SetMonData
+ ldr r0, [r5]
+ add r1, r0, #0
+ add r1, r1, #0xec
+ ldr r2, [r1]
+ lsl r2, r2, #0x3
+ ldr r1, ._578 + 12 @ gUnknown_Debug_083F86E8
+ add r2, r2, r1
+ mov r1, #0x37
+ bl SetMonData
+ ldr r0, [r5]
+ add r2, r0, #0
+ add r2, r2, #0xe8
+ mov r1, #0x2d
+ bl SetMonData
+ ldr r1, [r5]
+ add r0, r1, #0
+ add r0, r0, #0xe8
+ ldr r0, [r0]
+ cmp r0, #0
+ beq ._577 @cond_branch
+ add r0, r1, #0
+ mov r1, #0x2
+ add r2, sp, #0x10
+ bl SetMonData
+ add r2, sp, #0x1c
+ strb r6, [r2]
+ ldr r0, [r5]
+ mov r1, #0x3
+ bl SetMonData
+._577:
+ ldr r0, [r5]
+ mov r1, #0x7
+ add r2, r7, #0
+ bl SetMonData
+ mov r2, sp
+ add r2, r2, #0x1e
+ mov r0, #0xff
+ strh r0, [r2]
+ ldr r0, [r5]
+ mov r1, #0x23
+ bl SetMonData
+ ldr r0, [r5]
+ bl CalculateMonStats
+ add sp, sp, #0x20
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._579:
+ .align 2, 0
+._578:
+ .word gUnknown_Debug_083F8758
+ .word gUnknown_Debug_083F875C
+ .word gUnknown_Debug_2038A1C
+ .word gUnknown_Debug_083F86E8+0x4
+
+ thumb_func_end debug_80C5FFC
+
+ thumb_func_start debug_80C627C
+debug_80C627C:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffff8
+ lsl r0, r0, #0x18
+ lsr r4, r0, #0x18
+ add r6, r4, #0
+ ldr r1, ._584 @ gUnknown_Debug_083F7FD4
+ mov r0, sp
+ mov r2, #0x2
+ bl memcpy
+ add r5, sp, #0x4
+ ldr r1, ._584 + 4 @ gUnknown_Debug_083F8764
+ add r0, r5, #0
+ mov r2, #0x2
+ bl memcpy
+ cmp r4, #0x1
+ beq ._580 @cond_branch
+ cmp r4, #0x1
+ bgt ._581 @cond_branch
+ cmp r4, #0
+ beq ._582 @cond_branch
+ b ._595
+._585:
+ .align 2, 0
+._584:
+ .word gUnknown_Debug_083F7FD4
+ .word gUnknown_Debug_083F8764
+._581:
+ cmp r6, #0x2
+ beq ._586 @cond_branch
+ b ._595
+._582:
+ ldr r0, ._589 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ ldr r1, ._589 + 4 @ 0x169
+ add r0, r0, r1
+ b ._588
+._590:
+ .align 2, 0
+._589:
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+._580:
+ ldr r4, ._593 @ gUnknown_Debug_2038A1C
+ ldr r3, [r4]
+ ldr r1, ._593 + 4 @ 0x169
+ add r0, r3, r1
+ ldrb r2, [r0]
+ ldr r1, ._593 + 8 @ gUnknown_Debug_083F8698
+ mov r6, #0xb4
+ lsl r6, r6, #0x1
+ add r0, r3, r6
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldrb r0, [r0, #0x4]
+ sub r0, r0, #0x1
+ cmp r2, r0
+ bge ._595 @cond_branch
+ lsl r2, r2, #0x19
+ mov r0, #0xa0
+ lsl r0, r0, #0x13
+ add r2, r2, r0
+ lsr r2, r2, #0x18
+ add r0, r5, #0
+ mov r1, #0x1
+ bl Menu_PrintText
+ ldr r0, [r4]
+ ldr r2, ._593 + 4 @ 0x169
+ add r1, r0, r2
+ ldrb r0, [r1]
+ add r0, r0, #0x1
+ strb r0, [r1]
+ ldr r0, [r4]
+ add r0, r0, r2
+._588:
+ ldrb r2, [r0]
+ lsl r2, r2, #0x19
+ mov r6, #0xa0
+ lsl r6, r6, #0x13
+ add r2, r2, r6
+ lsr r2, r2, #0x18
+ mov r0, sp
+ mov r1, #0x1
+ bl Menu_PrintText
+ b ._595
+._594:
+ .align 2, 0
+._593:
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+ .word gUnknown_Debug_083F8698
+._586:
+ ldr r4, ._596 @ gUnknown_Debug_2038A1C
+ ldr r0, [r4]
+ ldr r2, ._596 + 4 @ 0x169
+ add r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, #0
+ beq ._595 @cond_branch
+ add r2, r0, #0
+ lsl r2, r2, #0x19
+ mov r6, #0xa0
+ lsl r6, r6, #0x13
+ add r2, r2, r6
+ lsr r2, r2, #0x18
+ add r0, r5, #0
+ mov r1, #0x1
+ bl Menu_PrintText
+ ldr r0, [r4]
+ ldr r2, ._596 + 4 @ 0x169
+ add r1, r0, r2
+ ldrb r0, [r1]
+ sub r0, r0, #0x1
+ strb r0, [r1]
+ ldr r0, [r4]
+ add r0, r0, r2
+ ldrb r2, [r0]
+ lsl r2, r2, #0x19
+ add r2, r2, r6
+ lsr r2, r2, #0x18
+ mov r0, sp
+ mov r1, #0x1
+ bl Menu_PrintText
+._595:
+ add sp, sp, #0x8
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._597:
+ .align 2, 0
+._596:
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+
+ thumb_func_end debug_80C627C
+
+ thumb_func_start debug_80C6384
+debug_80C6384:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ mov r0, #0x0
+ mov r1, #0x4
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r5, #0x0
+ ldr r3, ._600 @ gUnknown_Debug_083F8698
+ ldr r1, ._600 + 4 @ gUnknown_Debug_2038A1C
+ ldr r0, [r1]
+ mov r2, #0xb4
+ lsl r2, r2, #0x1
+ add r0, r0, r2
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r3
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._598 @cond_branch
+ add r4, r1, #0
+ ldr r0, ._600 + 8 @ 0x16b
+ mov r9, r0
+ mov r8, r3
+ add r7, r2, #0
+ mov r6, #0x1
+._599:
+ ldr r0, [r4]
+ add r0, r0, r9
+ mov r1, #0xfc
+ strb r1, [r0]
+ ldr r0, [r4]
+ add r1, r1, #0x70
+ add r0, r0, r1
+ strb r6, [r0]
+ ldr r0, [r4]
+ ldr r2, ._600 + 12 @ 0x16d
+ add r0, r0, r2
+ strb r6, [r0]
+ ldr r1, [r4]
+ add r2, r2, #0x1
+ add r0, r1, r2
+ add r1, r1, r7
+ ldrb r1, [r1]
+ lsl r1, r1, #0x3
+ add r1, r1, r8
+ ldr r1, [r1]
+ add r1, r1, r5
+ ldrb r1, [r1]
+ mov r2, #0x1
+ bl debug_80C5738
+ ldr r0, [r4]
+ add r0, r0, r9
+ lsl r2, r5, #0x19
+ mov r1, #0xa0
+ lsl r1, r1, #0x13
+ add r2, r2, r1
+ lsr r2, r2, #0x18
+ mov r1, #0x2
+ bl Menu_PrintText
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r0, [r4]
+ add r0, r0, r7
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r8
+ ldr r0, [r0]
+ add r0, r0, r5
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ bne ._599 @cond_branch
+._598:
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._601:
+ .align 2, 0
+._600:
+ .word gUnknown_Debug_083F8698
+ .word gUnknown_Debug_2038A1C
+ .word 0x16b
+ .word 0x16d
+
+ thumb_func_end debug_80C6384
+
+ thumb_func_start debug_80C643C
+debug_80C643C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ mov r0, #0x2
+ mov r1, #0x5
+ mov r2, #0x1c
+ mov r3, #0x12
+ bl Menu_BlankWindowRect
+ mov r5, #0x0
+ ldr r6, ._605 @ gUnknown_Debug_083F8698
+ ldr r1, ._605 + 4 @ gUnknown_Debug_2038A1C
+ ldr r0, [r1]
+ mov r3, #0xb4
+ lsl r3, r3, #0x1
+ add r0, r0, r3
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r6
+ ldr r0, [r0]
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ beq ._602 @cond_branch
+ add r4, r1, #0
+ mov r0, #0x1
+ mov r8, r0
+._607:
+ ldr r0, [r4]
+ ldr r7, ._605 + 8 @ 0x16b
+ add r2, r0, r7
+ mov r0, #0xfc
+ strb r0, [r2]
+ ldr r0, [r4]
+ mov r2, #0xb6
+ lsl r2, r2, #0x1
+ add r0, r0, r2
+ mov r7, r8
+ strb r7, [r0]
+ ldr r2, [r4]
+ ldr r7, ._605 + 12 @ 0x169
+ add r0, r2, r7
+ ldrb r0, [r0]
+ cmp r5, r0
+ bne ._603 @cond_branch
+ ldr r0, ._605 + 16 @ 0x16d
+ add r2, r2, r0
+ mov r0, #0x2
+ strb r0, [r2]
+ ldr r1, [r1]
+ mov r2, #0xb7
+ lsl r2, r2, #0x1
+ add r0, r1, r2
+ add r1, r1, r3
+ ldrb r1, [r1]
+ lsl r1, r1, #0x3
+ add r1, r1, r6
+ ldr r1, [r1]
+ add r1, r1, r5
+ ldrb r1, [r1]
+ mov r2, #0x2
+ bl debug_80C5738
+ b ._604
+._606:
+ .align 2, 0
+._605:
+ .word gUnknown_Debug_083F8698
+ .word gUnknown_Debug_2038A1C
+ .word 0x16b
+ .word 0x169
+ .word 0x16d
+._603:
+ ldr r3, ._608 @ 0x16d
+ add r0, r2, r3
+ mov r7, r8
+ strb r7, [r0]
+ ldr r1, [r1]
+ mov r2, #0xb7
+ lsl r2, r2, #0x1
+ add r0, r1, r2
+ ldr r2, ._608 + 4 @ gUnknown_Debug_083F8698
+ sub r3, r3, #0x5
+ add r1, r1, r3
+ ldrb r1, [r1]
+ lsl r1, r1, #0x3
+ add r1, r1, r2
+ ldr r1, [r1]
+ add r1, r1, r5
+ ldrb r1, [r1]
+ mov r2, #0x1
+ bl debug_80C5738
+._604:
+ ldr r0, [r4]
+ ldr r7, ._608 + 8 @ 0x16b
+ add r0, r0, r7
+ lsl r2, r5, #0x19
+ mov r1, #0xa0
+ lsl r1, r1, #0x13
+ add r2, r2, r1
+ lsr r2, r2, #0x18
+ mov r1, #0x2
+ bl Menu_PrintText
+ add r0, r5, #1
+ lsl r0, r0, #0x10
+ lsr r5, r0, #0x10
+ ldr r6, ._608 + 4 @ gUnknown_Debug_083F8698
+ add r1, r4, #0
+ ldr r0, [r4]
+ mov r3, #0xb4
+ lsl r3, r3, #0x1
+ add r0, r0, r3
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r6
+ ldr r0, [r0]
+ add r0, r0, r5
+ ldrb r0, [r0]
+ cmp r0, #0xff
+ bne ._607 @cond_branch
+._602:
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._609:
+ .align 2, 0
+._608:
+ .word 0x16d
+ .word gUnknown_Debug_083F8698
+ .word 0x16b
+
+ thumb_func_end debug_80C643C
+
+ thumb_func_start debug_80C6544
+debug_80C6544:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r9, r0
+ ldr r0, ._614 @ gUnknown_Debug_083F8698
+ mov r8, r0
+ ldr r6, ._614 + 4 @ gUnknown_Debug_2038A1C
+ ldr r1, [r6]
+ mov r5, #0xb4
+ lsl r5, r5, #0x1
+ add r0, r1, r5
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r8
+ ldr r4, ._614 + 8 @ 0x169
+ add r1, r1, r4
+ ldrb r1, [r1]
+ ldr r0, [r0]
+ add r0, r0, r1
+ ldrb r0, [r0]
+ bl debug_80C5B60
+ add r7, r0, #0
+ ldr r2, ._614 + 12 @ gUnknown_Debug_083F8554
+ ldr r3, [r6]
+ add r5, r3, r5
+ ldrb r0, [r5]
+ lsl r0, r0, #0x3
+ add r0, r0, r8
+ add r4, r3, r4
+ ldrb r1, [r4]
+ ldr r0, [r0]
+ add r0, r0, r1
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r2, r2, #0x4
+ add r0, r0, r2
+ ldr r1, [r0]
+ ldr r5, [r1]
+ ldr r4, [r1, #0x4]
+ ldr r2, ._614 + 16 @ gUnknown_Debug_083F8768
+ mov r6, #0xb5
+ lsl r6, r6, #0x1
+ add r0, r3, r6
+ ldrb r0, [r0]
+ lsl r0, r0, #0x2
+ add r0, r0, r2
+ ldr r3, [r0]
+ ldrb r0, [r1, #0x8]
+ cmp r0, #0
+ bne ._623 @cond_branch
+ mov r0, r9
+ cmp r0, #0x1
+ beq ._611 @cond_branch
+ cmp r0, #0x2
+ beq ._612 @cond_branch
+ b ._623
+._615:
+ .align 2, 0
+._614:
+ .word gUnknown_Debug_083F8698
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+ .word gUnknown_Debug_083F8554
+ .word gUnknown_Debug_083F8768
+._611:
+ sub r0, r4, r3
+ cmp r7, r0
+ bcs ._616 @cond_branch
+ add r7, r7, r3
+ b ._623
+._616:
+ cmp r7, r4
+ bcc ._622 @cond_branch
+ b ._619
+._612:
+ add r0, r5, r3
+ cmp r7, r0
+ bls ._620 @cond_branch
+ sub r7, r7, r3
+ b ._623
+._620:
+ cmp r7, r5
+ bls ._622 @cond_branch
+._619:
+ add r7, r5, #0
+ b ._623
+._622:
+ add r7, r4, #0
+._623:
+ ldr r1, ._624 @ gUnknown_Debug_083F8698
+ ldr r0, ._624 + 4 @ gUnknown_Debug_2038A1C
+ ldr r2, [r0]
+ mov r3, #0xb4
+ lsl r3, r3, #0x1
+ add r0, r2, r3
+ ldrb r0, [r0]
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r6, ._624 + 8 @ 0x169
+ add r1, r2, r6
+ ldrb r1, [r1]
+ ldr r0, [r0]
+ add r0, r0, r1
+ ldrb r1, [r0]
+ add r0, r7, #0
+ bl debug_80C5B74
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._625:
+ .align 2, 0
+._624:
+ .word gUnknown_Debug_083F8698
+ .word gUnknown_Debug_2038A1C
+ .word 0x169
+
+ thumb_func_end debug_80C6544
+
+ thumb_func_start debug_80C6630
+debug_80C6630:
+ push {r4, r5, lr}
+ add r4, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ mov r0, #0xfc
+ strb r0, [r4]
+ add r4, r4, #0x1
+ mov r0, #0x1
+ strb r0, [r4]
+ add r4, r4, #0x1
+ cmp r2, #0x2
+ bne ._626 @cond_branch
+ ldr r0, ._629 @ gUnknown_Debug_2038A1C
+ ldr r0, [r0]
+ mov r5, #0xb5
+ lsl r5, r5, #0x1
+ add r0, r0, r5
+ ldrb r0, [r0]
+ cmp r3, r0
+ beq ._627 @cond_branch
+ strb r2, [r4]
+ b ._628
+._630:
+ .align 2, 0
+._629:
+ .word gUnknown_Debug_2038A1C
+._627:
+ mov r0, #0x4
+._626:
+ strb r0, [r4]
+._628:
+ add r0, r1, #0
+ add r0, r0, #0xa1
+ strb r0, [r4, #0x1]
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C6630
+
+ thumb_func_start debug_80C6678
+debug_80C6678:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6, r7}
+ mov r9, r0
+ add r6, r1, #0
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ mov r8, r3
+ mov r7, #0x0
+ sub r0, r2, #1
+ cmp r0, #0x9
+ bhi ._644 @cond_branch
+ lsl r0, r0, #0x2
+ ldr r1, ._633 @
+ add r0, r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+._634:
+ .align 2, 0
+._633:
+ .word ._632
+._632:
+ .word ._635
+ .word ._636
+ .word ._637
+ .word ._638
+ .word ._639
+ .word ._640
+ .word ._641
+ .word ._642
+ .word ._643
+ .word ._644
+._644:
+ mov r0, r9
+ add r4, r0, r7
+ ldr r5, ._645 @ 0x3b9aca00
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x9
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._643:
+ mov r1, r9
+ add r4, r1, r7
+ ldr r5, ._645 + 4 @ 0x5f5e100
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x8
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._642:
+ mov r0, r9
+ add r4, r0, r7
+ ldr r5, ._645 + 8 @ 0x989680
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x7
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._641:
+ mov r1, r9
+ add r4, r1, r7
+ ldr r5, ._645 + 12 @ 0xf4240
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x6
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._640:
+ mov r0, r9
+ add r4, r0, r7
+ ldr r5, ._645 + 16 @ 0x186a0
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x5
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._639:
+ mov r1, r9
+ add r4, r1, r7
+ ldr r5, ._645 + 20 @ 0x2710
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x4
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._638:
+ mov r0, r9
+ add r4, r0, r7
+ mov r5, #0xfa
+ lsl r5, r5, #0x2
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x3
+ bl debug_80C6630
+ add r0, r6, #0
+ add r1, r5, #0
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._637:
+ mov r1, r9
+ add r4, r1, r7
+ add r0, r6, #0
+ mov r1, #0x64
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x2
+ bl debug_80C6630
+ add r0, r6, #0
+ mov r1, #0x64
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._636:
+ mov r0, r9
+ add r4, r0, r7
+ add r0, r6, #0
+ mov r1, #0xa
+ bl __udivsi3
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ add r0, r4, #0
+ mov r2, r8
+ mov r3, #0x1
+ bl debug_80C6630
+ add r0, r6, #0
+ mov r1, #0xa
+ bl __umodsi3
+ add r6, r0, #0
+ add r0, r7, #4
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+._635:
+ mov r1, r9
+ add r0, r1, r7
+ lsl r1, r6, #0x18
+ lsr r1, r1, #0x18
+ mov r2, r8
+ mov r3, #0x0
+ bl debug_80C6630
+ pop {r3, r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._646:
+ .align 2, 0
+._645:
+ .word 0x3b9aca00
+ .word 0x5f5e100
+ .word 0x989680
+ .word 0xf4240
+ .word 0x186a0
+ .word 0x2710
+
+ thumb_func_end debug_80C6678
+
+ thumb_func_start debug_80C689C
+debug_80C689C:
+ push {r4, r5, lr}
+ add r5, r0, #0
+ add r4, r1, #0
+ lsl r2, r2, #0x18
+ lsr r2, r2, #0x18
+ mov r3, #0x0
+ ldrb r0, [r4]
+ b ._647
+._649:
+ add r1, r5, r3
+ add r0, r4, r3
+ ldrb r0, [r0]
+ strb r0, [r1]
+ add r0, r3, #1
+ lsl r0, r0, #0x18
+ lsr r3, r0, #0x18
+ add r0, r4, r3
+ ldrb r0, [r0]
+._647:
+ cmp r0, #0xff
+ beq ._648 @cond_branch
+ cmp r3, r2
+ bcc ._649 @cond_branch
+._648:
+ pop {r4, r5}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C689C
+
+ thumb_func_start debug_80C68CC
+debug_80C68CC:
+ push {r4, r5, r6, r7, lr}
+ add sp, sp, #0xfffffff8
+ lsl r0, r0, #0x10
+ lsr r4, r0, #0x10
+ lsl r1, r1, #0x18
+ lsr r6, r1, #0x18
+ lsl r2, r2, #0x18
+ lsr r5, r2, #0x18
+ lsl r3, r3, #0x18
+ lsr r3, r3, #0x18
+ mov r2, #0x0
+ mov r1, #0x0
+._650:
+ mov r7, sp
+ add r0, r7, r2
+ strb r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x3
+ bls ._650 @cond_branch
+ mov r1, sp
+ mov r0, #0xff
+ strb r0, [r1, #0x4]
+ cmp r3, #0x2
+ beq ._651 @cond_branch
+ cmp r3, #0x2
+ bgt ._652 @cond_branch
+ cmp r3, #0x1
+ beq ._653 @cond_branch
+ b ._654
+._652:
+ cmp r3, #0x3
+ beq ._655 @cond_branch
+._654:
+ mov r1, sp
+ lsr r0, r4, #0xc
+ strb r0, [r1]
+._655:
+ mov r1, sp
+ mov r0, #0xf0
+ lsl r0, r0, #0x4
+ and r0, r0, r4
+ lsr r0, r0, #0x8
+ strb r0, [r1, #0x1]
+._651:
+ mov r1, sp
+ mov r0, #0xf0
+ and r0, r0, r4
+ lsr r0, r0, #0x4
+ strb r0, [r1, #0x2]
+._653:
+ mov r2, sp
+ mov r1, #0xf
+ add r0, r4, #0
+ and r0, r0, r1
+ strb r0, [r2, #0x3]
+ mov r2, #0x0
+._658:
+ mov r0, sp
+ add r1, r0, r2
+ ldrb r0, [r1]
+ cmp r0, #0x9
+ bhi ._656 @cond_branch
+ add r0, r0, #0xa1
+ b ._657
+._656:
+ add r0, r0, #0xb1
+._657:
+ strb r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x3
+ bls ._658 @cond_branch
+ mov r0, #0x4
+ sub r0, r0, r3
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ add r0, r0, sp
+ add r1, r6, #0
+ add r2, r5, #0
+ bl Menu_PrintText
+ add sp, sp, #0x8
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C68CC
+
+ thumb_func_start InitSeePokemonGraphics
+InitSeePokemonGraphics:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffff8
+ bl debug_80C35DC
+ ldr r1, ._659 @ byte_83F88EC
+ ldr r2, ._659 + 4 @ 0x600e000
+ ldr r0, ._659 + 8 @ 0x40000d4
+ str r1, [r0]
+ str r2, [r0, #0x4]
+ ldr r1, ._659 + 12 @ 0x80000400
+ str r1, [r0, #0x8]
+ ldr r0, [r0, #0x8]
+ ldr r0, ._659 + 16 @ word_83F888C
+ mov r1, #0x80
+ mov r2, #0x60
+ bl LoadPalette
+ ldr r1, ._659 + 20 @ 0x7fff
+ add r0, sp, #0x4
+ strh r1, [r0]
+ mov r1, #0x0
+ mov r2, #0x2
+ bl LoadPalette
+ mov r0, #0x1
+ neg r0, r0
+ mov r5, #0x0
+ str r5, [sp]
+ mov r1, #0x0
+ mov r2, #0x10
+ mov r3, #0x0
+ bl BeginNormalPaletteFade
+ ldr r0, ._659 + 24 @ 0x4000040
+ mov r6, #0x0
+ strh r5, [r0]
+ add r0, r0, #0x4
+ strh r5, [r0]
+ sub r0, r0, #0x2
+ strh r5, [r0]
+ add r0, r0, #0x4
+ strh r5, [r0]
+ ldr r1, ._659 + 28 @ 0x4000048
+ mov r0, #0x3f
+ strh r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x1f
+ strh r0, [r1]
+ add r1, r1, #0x6
+ mov r0, #0xf1
+ strh r0, [r1]
+ ldr r0, ._659 + 32 @ 0x4000052
+ strh r5, [r0]
+ add r1, r1, #0x4
+ mov r0, #0x7
+ strh r0, [r1]
+ ldr r3, ._659 + 36 @ 0x4000208
+ ldrh r2, [r3]
+ strh r5, [r3]
+ ldr r4, ._659 + 40 @ 0x4000200
+ ldrh r0, [r4]
+ mov r1, #0x1
+ orr r0, r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ ldr r0, ._659 + 44 @ debug_80C3758
+ bl SetVBlankCallback
+ ldr r0, ._659 + 48 @ debug_80C370C
+ bl SetMainCallback2
+ bl sub_809D51C
+ ldr r1, ._659 + 52 @ 0x4000008
+ ldr r2, ._659 + 56 @ 0x1f0b
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ ldr r2, ._659 + 60 @ 0x1e0a
+ add r0, r2, #0
+ strh r0, [r1]
+ sub r1, r1, #0xa
+ mov r2, #0xcd
+ lsl r2, r2, #0x6
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, ._659 + 64 @ debug_80C6B00
+ mov r1, #0x0
+ bl CreateTask
+ ldr r1, ._659 + 68 @ gUnknown_Debug_2038A20
+ ldr r0, ._659 + 72 @ 0x2018000
+ str r0, [r1]
+ ldr r1, ._659 + 76 @ 0x115
+ strh r1, [r0]
+ strb r6, [r0, #0x2]
+ strb r6, [r0, #0x3]
+ strb r6, [r0, #0x5]
+ strb r6, [r0, #0x7]
+ strb r6, [r0, #0xa]
+ strb r6, [r0, #0x8]
+ ldr r4, ._659 + 80 @ gSpriteTemplate_83F8874
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ ldr r6, ._659 + 84 @ gSprites
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ strh r5, [r0, #0x2e]
+ mov r1, #0x0
+ bl StartSpriteAnim
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ mov r1, #0x1
+ strh r1, [r0, #0x2e]
+ bl StartSpriteAnim
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ mov r1, #0x2
+ strh r1, [r0, #0x2e]
+ bl StartSpriteAnim
+ add sp, sp, #0x8
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._660:
+ .align 2, 0
+._659:
+ .word byte_83F88EC
+ .word 0x600e000
+ .word 0x40000d4
+ .word 0x80000400
+ .word word_83F888C
+ .word 0x7fff
+ .word 0x4000040
+ .word 0x4000048
+ .word 0x4000052
+ .word 0x4000208
+ .word 0x4000200
+ .word debug_80C3758+1
+ .word debug_80C370C+1
+ .word 0x4000008
+ .word 0x1f0b
+ .word 0x1e0a
+ .word debug_80C6B00+1
+ .word gUnknown_Debug_2038A20
+ .word 0x2018000
+ .word 0x115
+ .word gSpriteTemplate_83F8874
+ .word gSprites
+
+ thumb_func_end InitSeePokemonGraphics
+
+ thumb_func_start debug_80C6B00
+debug_80C6B00:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xffffffec
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r1, ._666 @ gUnknown_Debug_083F8815
+ mov r0, sp
+ mov r2, #0x12
+ bl memcpy
+ mov r0, #0xa
+ mov r1, #0x0
+ mov r2, #0xf
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x9
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0xa
+ mov r2, #0x9
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x10
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._666 + 4 @ gUnknown_Debug_083F87D0
+ mov r1, #0x11
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._666 + 8 @ gUnknown_Debug_083F87D8
+ mov r1, #0x1b
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._666 + 12 @ gUnknown_Debug_083F87E0
+ mov r1, #0x11
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0xa
+ mov r1, #0x8
+ mov r2, #0x1d
+ mov r3, #0xc
+ bl Menu_DrawStdWindowFrame
+ mov r2, #0x0
+ ldr r4, ._666 + 16 @ 0x600fa56
+ ldr r0, ._666 + 20 @ 0xa311
+ add r3, r0, #0
+._661:
+ lsl r0, r2, #0x1
+ add r0, r0, r4
+ add r1, r2, r3
+ strh r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0xe
+ bls ._661 @cond_branch
+ mov r2, #0x0
+ ldr r5, ._666 + 24 @ gUnknown_Debug_083F87F4
+ lsl r6, r7, #0x2
+ mov r8, r6
+ ldr r4, ._666 + 28 @ 0x600f256
+ ldr r0, ._666 + 32 @ 0x8301
+ add r3, r0, #0
+._662:
+ lsl r0, r2, #0x1
+ add r0, r0, r4
+ add r1, r2, r3
+ strh r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0xe
+ bls ._662 @cond_branch
+ add r0, r5, #0
+ mov r1, #0x14
+ mov r2, #0xa
+ bl Menu_PrintText
+ mov r0, #0xa
+ mov r1, #0xd
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r1, sp
+ mov r0, #0x23
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r4, ._666 + 36 @ 0x600f396
+ mov r5, #0x93
+ lsl r5, r5, #0x8
+ add r3, r5, #0
+._663:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._663 @cond_branch
+ mov r1, sp
+ mov r0, #0x24
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r5, ._666 + 40 @ gUnknown_Debug_083F8801
+ ldr r4, ._666 + 44 @ 0x600f3d6
+ mov r0, #0x93
+ lsl r0, r0, #0x8
+ add r3, r0, #0
+._664:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._664 @cond_branch
+ mov r1, sp
+ mov r0, #0x25
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r4, ._666 + 48 @ 0x600f416
+ mov r0, #0x93
+ lsl r0, r0, #0x8
+ add r3, r0, #0
+._665:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._665 @cond_branch
+ add r0, r5, #0
+ mov r1, #0xf
+ mov r2, #0x11
+ bl Menu_PrintText
+ ldr r1, ._666 + 52 @ 0x4000040
+ ldr r2, ._666 + 56 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r5, ._666 + 60 @ 0x699f
+ add r0, r5, #0
+ strh r0, [r1]
+ ldr r1, ._666 + 64 @ gTasks
+ mov r6, r8
+ add r0, r6, r7
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._666 + 68 @ debug_80C6CB8
+ str r1, [r0]
+ add sp, sp, #0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._667:
+ .align 2, 0
+._666:
+ .word gUnknown_Debug_083F8815
+ .word gUnknown_Debug_083F87D0
+ .word gUnknown_Debug_083F87D8
+ .word gUnknown_Debug_083F87E0
+ .word 0x600fa56
+ .word 0xa311
+ .word gUnknown_Debug_083F87F4
+ .word 0x600f256
+ .word 0x8301
+ .word 0x600f396
+ .word gUnknown_Debug_083F8801
+ .word 0x600f3d6
+ .word 0x600f416
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+ .word gTasks
+ .word debug_80C6CB8+1
+
+ thumb_func_end debug_80C6B00
+
+ thumb_func_start debug_80C6CB8
+debug_80C6CB8:
+ push {r4, r5, r6, r7, lr}
+ mov r7, sl
+ mov r6, r9
+ mov r5, r8
+ push {r5, r6, r7}
+ add sp, sp, #0xfffffff4
+ mov sl, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov sl, r0
+ ldr r5, ._668 @ gUnknown_Debug_2038A20
+ ldr r4, [r5]
+ ldrh r2, [r4]
+ lsl r0, r2, #0x3
+ ldr r1, ._668 + 4 @ gMonFrontPicTable
+ add r0, r0, r1
+ ldr r1, ._668 + 8 @ gMonFrontPicCoords
+ lsl r2, r2, #0x2
+ add r2, r2, r1
+ ldrb r1, [r2]
+ ldrb r2, [r2, #0x1]
+ ldr r3, ._668 + 12 @ gUnknown_081FAF4C
+ mov r8, r3
+ ldr r6, [r3]
+ str r6, [sp, #0x8]
+ ldr r3, [r3, #0x4]
+ str r3, [sp]
+ ldrh r3, [r4]
+ str r3, [sp, #0x4]
+ add r3, r6, #0
+ bl DecompressPicFromTable_2
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ lsl r0, r0, #0x3
+ ldr r7, ._668 + 16 @ gMonPaletteTable
+ add r0, r0, r7
+ bl LoadCompressedObjectPalette
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x1
+ bl GetMonSpriteTemplate_803C56C
+ ldr r0, ._668 + 20 @ gUnknown_02024E8C
+ mov r1, #0x28
+ mov r2, #0x28
+ mov r3, #0x0
+ bl CreateSprite
+ ldr r1, [r5]
+ strb r0, [r1, #0x2]
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ ldr r1, ._668 + 24 @ gSprites
+ add r0, r0, r1
+ ldr r3, ._668 + 28 @ debug_69
+ mov r9, r3
+ str r3, [r0]
+ ldrb r0, [r2, #0x2]
+ lsl r1, r0, #0x4
+ add r1, r1, r0
+ lsl r1, r1, #0x2
+ ldr r6, ._668 + 32 @ gSprites
+ add r1, r1, r6
+ ldrb r2, [r1, #0x5]
+ mov r6, #0xd
+ neg r6, r6
+ add r0, r6, #0
+ and r0, r0, r2
+ strb r0, [r1, #0x5]
+ ldr r4, [r5]
+ ldrh r2, [r4]
+ lsl r0, r2, #0x3
+ ldr r1, ._668 + 36 @ gMonBackPicTable
+ add r0, r0, r1
+ ldr r1, ._668 + 40 @ gMonBackPicCoords
+ lsl r2, r2, #0x2
+ add r2, r2, r1
+ ldrb r1, [r2]
+ ldrb r2, [r2, #0x1]
+ mov r7, r8
+ ldr r3, [r7, #0x8]
+ str r3, [sp]
+ ldrh r3, [r4]
+ str r3, [sp, #0x4]
+ ldr r3, [sp, #0x8]
+ bl DecompressPicFromTable_2
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ lsl r0, r0, #0x3
+ ldr r1, ._668 + 16 @ gMonPaletteTable
+ add r0, r0, r1
+ bl LoadCompressedObjectPalette
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x2
+ bl GetMonSpriteTemplate_803C56C
+ ldr r0, ._668 + 20 @ gUnknown_02024E8C
+ mov r1, #0x28
+ mov r2, #0x78
+ mov r3, #0x0
+ bl CreateSprite
+ ldr r1, [r5]
+ strb r0, [r1, #0x3]
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ ldr r3, ._668 + 24 @ gSprites
+ add r0, r0, r3
+ mov r7, r9
+ str r7, [r0]
+ ldrb r1, [r2, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ ldr r1, ._668 + 32 @ gSprites
+ add r0, r0, r1
+ ldrb r1, [r0, #0x5]
+ and r6, r6, r1
+ strb r6, [r0, #0x5]
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ ldr r1, ._668 + 44 @ sub_809D62C
+ mov r2, #0x0
+ str r2, [sp]
+ str r2, [sp, #0x4]
+ mov r2, #0x68
+ mov r3, #0x2c
+ bl CreateMonIcon
+ ldr r1, [r5]
+ strb r0, [r1, #0x4]
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ bl SpeciesToNationalPokedexNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ mov r2, #0xff
+ lsl r2, r2, #0x2
+ mov r1, #0x2
+ bl sub_8091738
+ ldr r1, ._668 + 48 @ 0x600f858
+ ldr r3, ._668 + 52 @ 0xf3fc
+ add r0, r3, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ ldr r6, ._668 + 56 @ 0xf3fd
+ add r0, r6, #0
+ strh r0, [r1]
+ add r1, r1, #0x3e
+ ldr r7, ._668 + 60 @ 0xf3fe
+ add r0, r7, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ ldr r2, ._668 + 64 @ 0xf3ff
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x11
+ mov r2, #0x3
+ bl debug_80C3800
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x1a
+ mov r2, #0x5
+ bl debug_80C376C
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ ldr r3, ._668 + 32 @ gSprites
+ add r0, r0, r3
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ strb r0, [r2, #0x6]
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ ldr r4, ._668 + 68 @ gPlttBufferUnfaded
+ add r0, r0, r4
+ ldr r6, ._668 + 72 @ 0xffffff00
+ add r1, r4, r6
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ add r0, r0, r4
+ ldr r1, ._668 + 76 @ gPlttBufferFaded
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, ._668 + 80 @ gTasks
+ mov r7, sl
+ lsl r0, r7, #0x2
+ add r0, r0, sl
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._668 + 84 @ debug_80C6EE8
+ str r1, [r0]
+ ldr r0, [r5]
+ mov r1, #0x0
+ strb r1, [r0, #0x9]
+ bl StopCryAndClearCrySongs
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x0
+ bl PlayCry1
+ add sp, sp, #0xc
+ pop {r3, r4, r5}
+ mov r8, r3
+ mov r9, r4
+ mov sl, r5
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._669:
+ .align 2, 0
+._668:
+ .word gUnknown_Debug_2038A20
+ .word gMonFrontPicTable
+ .word gMonFrontPicCoords
+ .word gUnknown_081FAF4C
+ .word gMonPaletteTable
+ .word gUnknown_02024E8C
+ .word gSprites+0x1c
+ .word debug_69+1
+ .word gSprites
+ .word gMonBackPicTable
+ .word gMonBackPicCoords
+ .word sub_809D62C+1
+ .word 0x600f858
+ .word 0xf3fc
+ .word 0xf3fd
+ .word 0xf3fe
+ .word 0xf3ff
+ .word gPlttBufferUnfaded+0x200
+ .word 0xffffff00
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C6EE8+1
+
+ thumb_func_end debug_80C6CB8
+
+ thumb_func_start debug_80C6EE8
+debug_80C6EE8:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ lsl r6, r6, #0x18
+ lsr r6, r6, #0x18
+ ldr r4, ._670 @ gPlttBufferUnfaded
+ ldr r5, ._670 + 4 @ gUnknown_Debug_2038A20
+ ldr r1, [r5]
+ add r1, r1, #0x10
+ add r0, r4, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, ._670 + 8 @ 0xffffff00
+ add r4, r4, r0
+ ldr r3, [r5]
+ ldrb r0, [r3, #0x7]
+ add r0, r0, #0x81
+ lsl r0, r0, #0x1
+ add r0, r0, r4
+ ldrh r4, [r0]
+ mov r1, #0x1f
+ and r1, r1, r4
+ ldrb r2, [r3, #0xc]
+ mov r0, #0x20
+ neg r0, r0
+ and r0, r0, r2
+ orr r0, r0, r1
+ strb r0, [r3, #0xc]
+ ldr r3, [r5]
+ mov r1, #0xf8
+ lsl r1, r1, #0x2
+ and r1, r1, r4
+ ldrh r2, [r3, #0xc]
+ ldr r0, ._670 + 12 @ 0xfffffc1f
+ and r0, r0, r2
+ orr r0, r0, r1
+ strh r0, [r3, #0xc]
+ mov r1, #0xf8
+ lsl r1, r1, #0x7
+ and r1, r1, r4
+ lsr r1, r1, #0x8
+ ldrb r2, [r3, #0xd]
+ mov r0, #0x7d
+ neg r0, r0
+ and r0, r0, r2
+ orr r0, r0, r1
+ strb r0, [r3, #0xd]
+ ldr r2, [r5]
+ ldrb r1, [r2, #0xd]
+ mov r0, #0x7f
+ and r0, r0, r1
+ strb r0, [r2, #0xd]
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x7]
+ add r0, r0, #0x1
+ mov r1, #0xb
+ mov r2, #0xa
+ mov r3, #0x2
+ bl debug_80C68CC
+ ldr r0, ._670 + 16 @ gUnknown_Debug_083F8813
+ mov r1, #0xd
+ mov r2, #0xa
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #0xa
+ mov r3, #0x4
+ bl debug_80C68CC
+ ldr r1, ._670 + 20 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._670 + 24 @ debug_80C6FA8
+ str r1, [r0]
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._671:
+ .align 2, 0
+._670:
+ .word gPlttBufferUnfaded+0x100
+ .word gUnknown_Debug_2038A20
+ .word 0xffffff00
+ .word 0xfffffc1f
+ .word gUnknown_Debug_083F8813
+ .word gTasks
+ .word debug_80C6FA8+1
+
+ thumb_func_end debug_80C6EE8
+
+ thumb_func_start debug_80C6FA8
+debug_80C6FA8:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r1, ._674 @ gMain
+ ldrh r2, [r1, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r2
+ add r4, r1, #0
+ cmp r0, #0
+ beq ._672 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r0, ._674 + 4 @ debug_80C370C
+ bl SetMainCallback2
+ ldr r1, ._674 + 8 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._674 + 12 @ debug_80C373C
+ str r1, [r0]
+ b ._703
+._675:
+ .align 2, 0
+._674:
+ .word gMain
+ .word debug_80C370C+1
+ .word gTasks
+ .word debug_80C373C+1
+._672:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._676 @cond_branch
+ ldr r4, ._678 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ mov r0, #0x0
+ b ._677
+._679:
+ .align 2, 0
+._678:
+ .word gUnknown_Debug_2038A20
+._676:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._680 @cond_branch
+ ldr r4, ._682 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ mov r0, #0x1
+._677:
+ bl debug_80C3878
+ ldr r1, [r4]
+ strh r0, [r1]
+ ldr r1, ._682 + 4 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._682 + 8 @ debug_80C71FC
+ str r1, [r0]
+ b ._703
+._683:
+ .align 2, 0
+._682:
+ .word gUnknown_Debug_2038A20
+ .word gTasks
+ .word debug_80C71FC+1
+._680:
+ mov r3, #0x1
+ and r3, r3, r2
+ cmp r3, #0
+ beq ._684 @cond_branch
+ ldr r0, ._686 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ mov r0, #0x1
+ strb r0, [r1, #0x5]
+ ldr r1, ._686 + 4 @ 0x4000040
+ ldr r2, ._686 + 8 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._686 + 12 @ 0x4167
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._686 + 16 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._686 + 20 @ debug_80C7294
+ str r1, [r0]
+ b ._703
+._687:
+ .align 2, 0
+._686:
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x4167
+ .word gTasks
+ .word debug_80C7294+1
+._684:
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._689 @cond_branch
+ ldr r1, ._691 @ gUnknown_Debug_2038A20
+ ldr r2, [r1]
+ ldrb r0, [r2, #0x7]
+ cmp r0, #0xd
+ bhi ._689 @cond_branch
+ lsl r0, r0, #0x1
+ ldr r2, ._691 + 4 @ 0x5000102
+ add r0, r0, r2
+ strh r3, [r0]
+ ldr r1, [r1]
+ ldrb r0, [r1, #0x7]
+ add r0, r0, #0x1
+ strb r0, [r1, #0x7]
+ b ._695
+._692:
+ .align 2, 0
+._691:
+ .word gUnknown_Debug_2038A20
+ .word 0x5000102
+._689:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._694 @cond_branch
+ ldr r2, ._696 @ gUnknown_Debug_2038A20
+ ldr r1, [r2]
+ ldrb r0, [r1, #0x7]
+ cmp r0, #0
+ beq ._694 @cond_branch
+ lsl r0, r0, #0x1
+ ldr r1, ._696 + 4 @ 0x5000102
+ add r0, r0, r1
+ mov r1, #0x0
+ strh r1, [r0]
+ ldr r1, [r2]
+ ldrb r0, [r1, #0x7]
+ sub r0, r0, #0x1
+ strb r0, [r1, #0x7]
+ b ._695
+._697:
+ .align 2, 0
+._696:
+ .word gUnknown_Debug_2038A20
+ .word 0x5000102
+._694:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._698 @cond_branch
+ ldr r4, ._701 @ gUnknown_Debug_2038A20
+ ldr r2, [r4]
+ ldrb r0, [r2, #0x9]
+ mov r1, #0x1
+ eor r0, r0, r1
+ strb r0, [r2, #0x9]
+ ldr r1, [r4]
+ ldrb r0, [r1, #0x9]
+ cmp r0, #0
+ beq ._699 @cond_branch
+ ldrh r0, [r1]
+ mov r1, #0x0
+ mov r2, #0x0
+ bl GetMonSpritePalFromOtIdPersonality
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x14
+ mov r2, #0x80
+ lsl r2, r2, #0x11
+ add r1, r1, r2
+ lsr r1, r1, #0x10
+ mov r2, #0x20
+ bl LoadCompressedPalette
+ b ._700
+._702:
+ .align 2, 0
+._701:
+ .word gUnknown_Debug_2038A20
+._699:
+ ldrh r0, [r1]
+ mov r1, #0x0
+ mov r2, #0x9
+ bl GetMonSpritePalFromOtIdPersonality
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x14
+ mov r2, #0x80
+ lsl r2, r2, #0x11
+ add r1, r1, r2
+ lsr r1, r1, #0x10
+ mov r2, #0x20
+ bl LoadCompressedPalette
+._700:
+ ldr r5, ._704 @ gUnknown_Debug_2038A20
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ ldr r4, ._704 + 4 @ gPlttBufferUnfaded
+ add r0, r0, r4
+ ldr r2, ._704 + 8 @ 0xffffff00
+ add r1, r4, r2
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ add r0, r0, r4
+ ldr r1, ._704 + 12 @ gPlttBufferFaded
+ mov r2, #0x10
+ bl CpuSet
+._695:
+ ldr r1, ._704 + 16 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._704 + 20 @ debug_80C6EE8
+ str r1, [r0]
+ b ._703
+._705:
+ .align 2, 0
+._704:
+ .word gUnknown_Debug_2038A20
+ .word gPlttBufferUnfaded+0x200
+ .word 0xffffff00
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C6EE8+1
+._698:
+ mov r0, #0x4
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._706 @cond_branch
+ bl StopCryAndClearCrySongs
+ ldr r0, ._707 @ gUnknown_Debug_2038A20
+ ldr r0, [r0]
+ ldrh r0, [r0]
+ mov r1, #0x0
+ bl PlayCry1
+._706:
+ ldr r2, ._707 @ gUnknown_Debug_2038A20
+ ldr r1, [r2]
+ ldrb r0, [r1, #0x8]
+ add r0, r0, #0x4
+ strb r0, [r1, #0x8]
+ ldr r3, [r2]
+ ldrb r1, [r3, #0x8]
+ mov r0, #0x1f
+ and r0, r0, r1
+ strb r0, [r3, #0x8]
+ ldr r0, [r2]
+ ldrb r1, [r0, #0x7]
+ lsl r1, r1, #0x1
+ ldr r2, ._707 + 4 @ 0x5000142
+ add r1, r1, r2
+ ldr r2, ._707 + 8 @ gUnknown_Debug_083F8790
+ ldrb r0, [r0, #0x8]
+ lsl r0, r0, #0x1
+ add r0, r0, r2
+ ldrh r0, [r0]
+ strh r0, [r1]
+._703:
+ add sp, sp, #0x4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._708:
+ .align 2, 0
+._707:
+ .word gUnknown_Debug_2038A20
+ .word 0x5000142
+ .word gUnknown_Debug_083F8790
+
+ thumb_func_end debug_80C6FA8
+
+ thumb_func_start debug_80C71FC
+debug_80C71FC:
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ ldr r6, ._709 @ gSprites
+ ldr r4, ._709 + 4 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl DestroySprite
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl DestroySprite
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x4]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl sub_809D510
+ ldr r1, ._709 + 8 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._709 + 12 @ debug_80C6CB8
+ str r1, [r0]
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._710:
+ .align 2, 0
+._709:
+ .word gSprites
+ .word gUnknown_Debug_2038A20
+ .word gTasks
+ .word debug_80C6CB8+1
+
+ thumb_func_end debug_80C71FC
+
+ thumb_func_start debug_80C7294
+debug_80C7294:
+ push {r4, r5, r6, r7, lr}
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, ._713 @ gMain
+ ldrh r2, [r0, #0x2e]
+ mov r1, #0x1
+ and r1, r1, r2
+ add r3, r0, #0
+ cmp r1, #0
+ beq ._711 @cond_branch
+ ldr r0, ._713 + 4 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ mov r0, #0x0
+ strb r0, [r1, #0x5]
+ ldr r1, ._713 + 8 @ 0x4000040
+ ldr r2, ._713 + 12 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._713 + 16 @ 0x699f
+ add r0, r2, #0
+ strh r0, [r1]
+ b ._712
+._714:
+ .align 2, 0
+._713:
+ .word gMain
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+._711:
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._715 @cond_branch
+ ldr r6, ._717 @ gUnknown_Debug_2038A20
+ ldr r0, [r6]
+ strb r1, [r0, #0x5]
+ ldr r1, ._717 + 4 @ 0x4000040
+ ldr r2, ._717 + 8 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._717 + 12 @ 0x699f
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, [r6]
+ add r0, r0, #0x10
+ ldr r4, ._717 + 16 @ gPlttBufferUnfaded
+ add r1, r4, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r6]
+ add r0, r0, #0x10
+ ldr r5, ._717 + 20 @ gPlttBufferFaded
+ add r1, r5, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, [r6]
+ add r0, r1, #0
+ add r0, r0, #0x10
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x5
+ mov r2, #0x80
+ lsl r2, r2, #0x1
+ add r4, r4, r2
+ add r1, r1, r4
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, [r6]
+ add r0, r1, #0
+ add r0, r0, #0x10
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x5
+ mov r2, #0x80
+ lsl r2, r2, #0x1
+ add r5, r5, r2
+ add r1, r1, r5
+ mov r2, #0x10
+ bl CpuSet
+._712:
+ ldr r1, ._717 + 24 @ gTasks
+ lsl r0, r7, #0x2
+ add r0, r0, r7
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._717 + 28 @ debug_80C6EE8
+ str r1, [r0]
+ b ._754
+._718:
+ .align 2, 0
+._717:
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+ .word gPlttBufferUnfaded+0x100
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C6EE8+1
+._715:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._720 @cond_branch
+ ldr r0, ._722 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa]
+ cmp r0, #0x1
+ bhi ._720 @cond_branch
+ add r0, r0, #0x1
+ strb r0, [r1, #0xa]
+ b ._754
+._723:
+ .align 2, 0
+._722:
+ .word gUnknown_Debug_2038A20
+._720:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._725 @cond_branch
+ ldr r0, ._727 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa]
+ cmp r0, #0
+ beq ._725 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1, #0xa]
+ b ._754
+._728:
+ .align 2, 0
+._727:
+ .word gUnknown_Debug_2038A20
+._725:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._729 @cond_branch
+ ldr r0, ._734 @ gUnknown_Debug_2038A20
+ ldr r2, [r0]
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0x1
+ beq ._730 @cond_branch
+ cmp r0, #0x1
+ bgt ._731 @cond_branch
+ cmp r0, #0
+ beq ._732 @cond_branch
+ b ._754
+._735:
+ .align 2, 0
+._734:
+ .word gUnknown_Debug_2038A20
+._731:
+ cmp r0, #0x2
+ beq ._736 @cond_branch
+ b ._754
+._732:
+ ldrb r3, [r2, #0xc]
+ lsl r1, r3, #0x1b
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._761 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ mov r1, #0x20
+ neg r1, r1
+ and r1, r1, r3
+ orr r1, r1, r0
+ strb r1, [r2, #0xc]
+ b ._761
+._730:
+ ldrh r3, [r2, #0xc]
+ lsl r1, r3, #0x16
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._761 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ ldr r1, ._742 @ 0xfffffc1f
+ and r1, r1, r3
+ orr r1, r1, r0
+ strh r1, [r2, #0xc]
+ b ._761
+._743:
+ .align 2, 0
+._742:
+ .word 0xfffffc1f
+._736:
+ ldrb r3, [r2, #0xd]
+ lsl r1, r3, #0x19
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._761 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x2
+ mov r1, #0x7d
+ neg r1, r1
+ and r1, r1, r3
+ orr r1, r1, r0
+ strb r1, [r2, #0xd]
+ b ._761
+._729:
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._754 @cond_branch
+ ldr r0, ._751 @ gUnknown_Debug_2038A20
+ ldr r3, [r0]
+ ldrb r0, [r3, #0xa]
+ cmp r0, #0x1
+ beq ._747 @cond_branch
+ cmp r0, #0x1
+ bgt ._748 @cond_branch
+ cmp r0, #0
+ beq ._749 @cond_branch
+ b ._754
+._752:
+ .align 2, 0
+._751:
+ .word gUnknown_Debug_2038A20
+._748:
+ cmp r0, #0x2
+ beq ._753 @cond_branch
+ b ._754
+._749:
+ ldrb r2, [r3, #0xc]
+ mov r0, #0x1f
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._761 @cond_branch
+ lsl r0, r2, #0x1b
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ mov r1, #0x20
+ neg r1, r1
+ and r1, r1, r2
+ orr r1, r1, r0
+ strb r1, [r3, #0xc]
+ b ._761
+._747:
+ ldrh r2, [r3, #0xc]
+ mov r0, #0xf8
+ lsl r0, r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._761 @cond_branch
+ lsl r0, r2, #0x16
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ ldr r1, ._759 @ 0xfffffc1f
+ and r1, r1, r2
+ orr r1, r1, r0
+ strh r1, [r3, #0xc]
+ b ._761
+._760:
+ .align 2, 0
+._759:
+ .word 0xfffffc1f
+._753:
+ ldrb r2, [r3, #0xd]
+ mov r0, #0x7c
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._761 @cond_branch
+ lsl r0, r2, #0x19
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x2
+ mov r1, #0x7d
+ neg r1, r1
+ and r1, r1, r2
+ orr r1, r1, r0
+ strb r1, [r3, #0xd]
+._761:
+ ldr r0, ._762 @ gTasks
+ lsl r1, r7, #0x2
+ add r1, r1, r7
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._762 + 4 @ debug_80C74E4
+ str r0, [r1]
+._754:
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._763:
+ .align 2, 0
+._762:
+ .word gTasks
+ .word debug_80C74E4+1
+
+ thumb_func_end debug_80C7294
+
+ thumb_func_start debug_80C74E4
+debug_80C74E4:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add r5, r0, #0
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ ldr r0, ._764 @ gUnknown_Debug_2038A20
+ ldr r3, [r0]
+ ldrb r0, [r3, #0xc]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1b
+ ldrh r2, [r3, #0xc]
+ mov r1, #0xf8
+ lsl r1, r1, #0x2
+ and r1, r1, r2
+ add r0, r0, r1
+ ldrb r1, [r3, #0xd]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1b
+ lsl r1, r1, #0xa
+ add r0, r0, r1
+ ldr r6, ._764 + 4 @ gPlttBufferUnfaded
+ ldrb r1, [r3, #0x7]
+ add r1, r1, #0x81
+ lsl r1, r1, #0x1
+ add r1, r1, r6
+ strh r0, [r1]
+ ldr r1, ._764 + 8 @ gPlttBufferFaded
+ mov r8, r1
+ ldrb r1, [r3, #0x7]
+ add r1, r1, #0x81
+ lsl r1, r1, #0x1
+ add r1, r1, r8
+ strh r0, [r1]
+ ldrb r1, [r3, #0x6]
+ lsl r1, r1, #0x4
+ ldrb r2, [r3, #0x7]
+ ldr r4, ._764 + 12 @ 0x101
+ add r2, r2, r4
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ add r1, r1, r6
+ strh r0, [r1]
+ ldrb r1, [r3, #0x6]
+ lsl r1, r1, #0x4
+ ldrb r2, [r3, #0x7]
+ add r2, r2, r4
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ add r1, r1, r8
+ strh r0, [r1]
+ mov r1, #0xe
+ mov r2, #0xa
+ mov r3, #0x4
+ bl debug_80C68CC
+ ldr r1, ._764 + 16 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._764 + 20 @ debug_80C7294
+ str r1, [r0]
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._765:
+ .align 2, 0
+._764:
+ .word gUnknown_Debug_2038A20
+ .word gPlttBufferUnfaded
+ .word gPlttBufferFaded
+ .word 0x101
+ .word gTasks
+ .word debug_80C7294+1
+
+ thumb_func_end debug_80C74E4
+
+ thumb_func_start debug_80C7584
+debug_80C7584:
+ push {r4, lr}
+ add r2, r0, #0
+ ldr r0, ._771 @ gUnknown_Debug_2038A20
+ ldr r3, [r0]
+ ldrb r1, [r3, #0x5]
+ add r4, r0, #0
+ cmp r1, #0
+ beq ._766 @cond_branch
+ mov r1, #0x2e
+ ldsh r0, [r2, r1]
+ cmp r0, #0x1
+ beq ._767 @cond_branch
+ cmp r0, #0x1
+ ble ._768 @cond_branch
+ cmp r0, #0x2
+ beq ._769 @cond_branch
+._768:
+ ldrb r0, [r3, #0xc]
+ lsl r0, r0, #0x1b
+ b ._773
+._772:
+ .align 2, 0
+._771:
+ .word gUnknown_Debug_2038A20
+._767:
+ ldrh r0, [r3, #0xc]
+ lsl r0, r0, #0x16
+ b ._773
+._769:
+ ldrb r0, [r3, #0xd]
+ lsl r0, r0, #0x19
+._773:
+ lsr r0, r0, #0x1b
+ lsl r0, r0, #0x2
+ strh r0, [r2, #0x24]
+ mov r1, #0x2e
+ ldsh r0, [r2, r1]
+ lsl r0, r0, #0x3
+ strh r0, [r2, #0x26]
+ ldrh r0, [r2, #0x30]
+ add r3, r0, #1
+ strh r3, [r2, #0x30]
+ mov r0, #0x2e
+ ldsh r1, [r2, r0]
+ ldr r0, [r4]
+ ldrb r0, [r0, #0xa]
+ cmp r1, r0
+ bne ._775 @cond_branch
+ mov r0, #0x8
+ and r3, r3, r0
+ cmp r3, #0
+ bne ._775 @cond_branch
+._766:
+ add r0, r2, #0
+ add r0, r0, #0x3e
+ ldrb r1, [r0]
+ mov r2, #0x4
+ orr r1, r1, r2
+ strb r1, [r0]
+ b ._776
+._775:
+ add r2, r2, #0x3e
+ ldrb r1, [r2]
+ mov r0, #0x5
+ neg r0, r0
+ and r0, r0, r1
+ strb r0, [r2]
+._776:
+ pop {r4}
+ pop {r0}
+ bx r0
+
+ thumb_func_end debug_80C7584
+
+ thumb_func_start InitSeeTrainers
+InitSeeTrainers:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffffc
+ bl debug_80C35DC
+ ldr r1, ._777 @ byte_83F88EC
+ ldr r2, ._777 + 4 @ 0x600e000
+ ldr r0, ._777 + 8 @ 0x40000d4
+ str r1, [r0]
+ str r2, [r0, #0x4]
+ ldr r1, ._777 + 12 @ 0x80000400
+ str r1, [r0, #0x8]
+ ldr r0, [r0, #0x8]
+ ldr r0, ._777 + 16 @ word_83F888C
+ mov r1, #0x80
+ mov r2, #0x60
+ bl LoadPalette
+ mov r0, #0x1
+ neg r0, r0
+ mov r5, #0x0
+ str r5, [sp]
+ mov r1, #0x0
+ mov r2, #0x10
+ mov r3, #0x0
+ bl BeginNormalPaletteFade
+ ldr r0, ._777 + 20 @ 0x4000040
+ mov r6, #0x0
+ strh r5, [r0]
+ add r0, r0, #0x4
+ strh r5, [r0]
+ sub r0, r0, #0x2
+ strh r5, [r0]
+ add r0, r0, #0x4
+ strh r5, [r0]
+ ldr r1, ._777 + 24 @ 0x4000048
+ mov r0, #0x3f
+ strh r0, [r1]
+ add r1, r1, #0x2
+ mov r0, #0x1f
+ strh r0, [r1]
+ add r1, r1, #0x6
+ mov r0, #0xf1
+ strh r0, [r1]
+ ldr r0, ._777 + 28 @ 0x4000052
+ strh r5, [r0]
+ add r1, r1, #0x4
+ mov r0, #0x7
+ strh r0, [r1]
+ ldr r3, ._777 + 32 @ 0x4000208
+ ldrh r2, [r3]
+ strh r5, [r3]
+ ldr r4, ._777 + 36 @ 0x4000200
+ ldrh r0, [r4]
+ mov r1, #0x1
+ orr r0, r0, r1
+ strh r0, [r4]
+ strh r2, [r3]
+ ldr r0, ._777 + 40 @ debug_80C3758
+ bl SetVBlankCallback
+ ldr r0, ._777 + 44 @ debug_80C370C
+ bl SetMainCallback2
+ ldr r1, ._777 + 48 @ 0x4000008
+ ldr r2, ._777 + 52 @ 0x1f0b
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x2
+ ldr r2, ._777 + 56 @ 0x1e0a
+ add r0, r2, #0
+ strh r0, [r1]
+ sub r1, r1, #0xa
+ mov r2, #0xcd
+ lsl r2, r2, #0x6
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, ._777 + 60 @ debug_80C777C
+ mov r1, #0x0
+ bl CreateTask
+ ldr r1, ._777 + 64 @ gUnknown_Debug_2038A20
+ ldr r0, ._777 + 68 @ 0x2018000
+ str r0, [r1]
+ strh r5, [r0]
+ strb r6, [r0, #0x2]
+ strb r6, [r0, #0x3]
+ strb r6, [r0, #0x5]
+ strb r6, [r0, #0x7]
+ strb r6, [r0, #0xa]
+ strb r6, [r0, #0x8]
+ ldr r4, ._777 + 72 @ gSpriteTemplate_83F8874
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ ldr r6, ._777 + 76 @ gSprites
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ strh r5, [r0, #0x2e]
+ mov r1, #0x0
+ bl StartSpriteAnim
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ mov r1, #0x1
+ strh r1, [r0, #0x2e]
+ bl StartSpriteAnim
+ add r0, r4, #0
+ mov r1, #0x6c
+ mov r2, #0x74
+ mov r3, #0x0
+ bl CreateSprite
+ add r1, r0, #0
+ lsl r1, r1, #0x18
+ lsr r1, r1, #0x18
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ mov r1, #0x2
+ strh r1, [r0, #0x2e]
+ bl StartSpriteAnim
+ add sp, sp, #0x4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._778:
+ .align 2, 0
+._777:
+ .word byte_83F88EC
+ .word 0x600e000
+ .word 0x40000d4
+ .word 0x80000400
+ .word word_83F888C
+ .word 0x4000040
+ .word 0x4000048
+ .word 0x4000052
+ .word 0x4000208
+ .word 0x4000200
+ .word debug_80C3758+1
+ .word debug_80C370C+1
+ .word 0x4000008
+ .word 0x1f0b
+ .word 0x1e0a
+ .word debug_80C777C+1
+ .word gUnknown_Debug_2038A20
+ .word 0x2018000
+ .word gSpriteTemplate_83F8874
+ .word gSprites
+
+ thumb_func_end InitSeeTrainers
+
+ thumb_func_start debug_80C777C
+debug_80C777C:
+ push {r4, r5, r6, r7, lr}
+ mov r7, r8
+ push {r7}
+ add sp, sp, #0xffffffec
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r1, ._784 @ gUnknown_Debug_083F8815
+ mov r0, sp
+ mov r2, #0x12
+ bl memcpy
+ mov r0, #0x9
+ mov r1, #0x0
+ mov r2, #0xe
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0x0
+ mov r2, #0x9
+ mov r3, #0x9
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0x0
+ mov r1, #0xa
+ mov r2, #0x9
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r0, #0xe
+ mov r1, #0x0
+ mov r2, #0x1d
+ mov r3, #0x7
+ bl Menu_DrawStdWindowFrame
+ ldr r0, ._784 + 4 @ gUnknown_Debug_083F87D0
+ mov r1, #0xf
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._784 + 8 @ gUnknown_Debug_083F87D8
+ mov r1, #0x19
+ mov r2, #0x1
+ bl Menu_PrintText
+ ldr r0, ._784 + 12 @ gUnknown_Debug_083F87E0
+ mov r1, #0xf
+ mov r2, #0x5
+ bl Menu_PrintText
+ mov r0, #0xa
+ mov r1, #0x8
+ mov r2, #0x1d
+ mov r3, #0xc
+ bl Menu_DrawStdWindowFrame
+ mov r2, #0x0
+ ldr r4, ._784 + 16 @ 0x600fa56
+ ldr r0, ._784 + 20 @ 0xa311
+ add r3, r0, #0
+._779:
+ lsl r0, r2, #0x1
+ add r0, r0, r4
+ add r1, r2, r3
+ strh r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0xe
+ bls ._779 @cond_branch
+ mov r2, #0x0
+ ldr r5, ._784 + 24 @ gUnknown_Debug_083F87F4
+ lsl r6, r7, #0x2
+ mov r8, r6
+ ldr r4, ._784 + 28 @ 0x600f256
+ ldr r0, ._784 + 32 @ 0x8301
+ add r3, r0, #0
+._780:
+ lsl r0, r2, #0x1
+ add r0, r0, r4
+ add r1, r2, r3
+ strh r1, [r0]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0xe
+ bls ._780 @cond_branch
+ add r0, r5, #0
+ mov r1, #0x14
+ mov r2, #0xa
+ bl Menu_PrintText
+ mov r0, #0xa
+ mov r1, #0xd
+ mov r2, #0x1d
+ mov r3, #0x13
+ bl Menu_DrawStdWindowFrame
+ mov r1, sp
+ mov r0, #0x23
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r4, ._784 + 36 @ 0x600f396
+ mov r5, #0x93
+ lsl r5, r5, #0x8
+ add r3, r5, #0
+._781:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._781 @cond_branch
+ mov r1, sp
+ mov r0, #0x24
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r5, ._784 + 40 @ gUnknown_Debug_083F8801
+ ldr r4, ._784 + 44 @ 0x600f3d6
+ mov r0, #0x93
+ lsl r0, r0, #0x8
+ add r3, r0, #0
+._782:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._782 @cond_branch
+ mov r1, sp
+ mov r0, #0x25
+ strb r0, [r1]
+ mov r2, #0x0
+ ldr r4, ._784 + 48 @ 0x600f416
+ mov r0, #0x93
+ lsl r0, r0, #0x8
+ add r3, r0, #0
+._783:
+ lsl r1, r2, #0x1
+ add r1, r1, r4
+ mov r6, sp
+ add r0, r6, r2
+ ldrb r0, [r0]
+ add r0, r0, r3
+ strh r0, [r1]
+ add r0, r2, #1
+ lsl r0, r0, #0x18
+ lsr r2, r0, #0x18
+ cmp r2, #0x11
+ bls ._783 @cond_branch
+ add r0, r5, #0
+ mov r1, #0xf
+ mov r2, #0x11
+ bl Menu_PrintText
+ ldr r1, ._784 + 52 @ 0x4000040
+ ldr r2, ._784 + 56 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r5, ._784 + 60 @ 0x699f
+ add r0, r5, #0
+ strh r0, [r1]
+ ldr r1, ._784 + 64 @ gTasks
+ mov r6, r8
+ add r0, r6, r7
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._784 + 68 @ debug_80C7934
+ str r1, [r0]
+ add sp, sp, #0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._785:
+ .align 2, 0
+._784:
+ .word gUnknown_Debug_083F8815
+ .word gUnknown_Debug_083F87D0
+ .word gUnknown_Debug_083F87D8
+ .word gUnknown_Debug_083F87E0
+ .word 0x600fa56
+ .word 0xa311
+ .word gUnknown_Debug_083F87F4
+ .word 0x600f256
+ .word 0x8301
+ .word 0x600f396
+ .word gUnknown_Debug_083F8801
+ .word 0x600f3d6
+ .word 0x600f416
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+ .word gTasks
+ .word debug_80C7934+1
+
+ thumb_func_end debug_80C777C
+
+ thumb_func_start debug_80C7934
+debug_80C7934:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add sp, sp, #0xfffffff8
+ mov r8, r0
+ lsl r0, r0, #0x18
+ lsr r0, r0, #0x18
+ mov r8, r0
+ ldr r5, ._786 @ gUnknown_Debug_2038A20
+ ldr r6, [r5]
+ ldrh r2, [r6]
+ lsl r0, r2, #0x3
+ ldr r1, ._786 + 4 @ gTrainerFrontPicTable
+ add r0, r0, r1
+ ldr r1, ._786 + 8 @ gTrainerFrontPicCoords
+ lsl r2, r2, #0x2
+ add r2, r2, r1
+ ldrb r1, [r2]
+ ldrb r2, [r2, #0x1]
+ ldr r4, ._786 + 12 @ gUnknown_081FAF4C
+ ldr r3, [r4]
+ ldr r4, [r4, #0x4]
+ str r4, [sp]
+ ldrh r4, [r6]
+ str r4, [sp, #0x4]
+ bl DecompressPicFromTable_2
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ lsl r0, r0, #0x3
+ ldr r1, ._786 + 16 @ gTrainerFrontPicPaletteTable
+ add r0, r0, r1
+ bl LoadCompressedObjectPalette
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x1
+ bl GetMonSpriteTemplate_803C5A0
+ ldr r0, ._786 + 20 @ gUnknown_02024E8C
+ mov r1, #0x28
+ mov r2, #0x28
+ mov r3, #0x0
+ bl CreateSprite
+ ldr r1, [r5]
+ mov r6, #0x0
+ strb r0, [r1, #0x2]
+ ldr r4, ._786 + 24 @ gSprites
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r1, r4, #0
+ add r1, r1, #0x1c
+ add r0, r0, r1
+ ldr r1, ._786 + 28 @ debug_69
+ str r1, [r0]
+ ldrb r0, [r2, #0x2]
+ lsl r1, r0, #0x4
+ add r1, r1, r0
+ lsl r1, r1, #0x2
+ add r1, r1, r4
+ ldrb r2, [r1, #0x5]
+ mov r0, #0xd
+ neg r0, r0
+ and r0, r0, r2
+ strb r0, [r1, #0x5]
+ ldr r0, [r5]
+ ldrh r0, [r0]
+ mov r1, #0x1a
+ mov r2, #0x5
+ bl debug_80C376C
+ ldr r2, [r5]
+ ldrb r1, [r2, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r4
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ strb r0, [r2, #0x6]
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ ldr r4, ._786 + 32 @ gPlttBufferUnfaded
+ add r0, r0, r4
+ ldr r2, ._786 + 36 @ 0xffffff00
+ add r1, r4, r2
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ add r0, r0, r4
+ ldr r1, ._786 + 40 @ gPlttBufferFaded
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, ._786 + 44 @ gTasks
+ mov r2, r8
+ lsl r0, r2, #0x2
+ add r0, r0, r8
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._786 + 48 @ debug_80C7A54
+ str r1, [r0]
+ ldr r0, [r5]
+ strb r6, [r0, #0x9]
+ add sp, sp, #0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._787:
+ .align 2, 0
+._786:
+ .word gUnknown_Debug_2038A20
+ .word gTrainerFrontPicTable
+ .word gTrainerFrontPicCoords
+ .word gUnknown_081FAF4C
+ .word gTrainerFrontPicPaletteTable
+ .word gUnknown_02024E8C
+ .word gSprites
+ .word debug_69+1
+ .word gPlttBufferUnfaded+0x200
+ .word 0xffffff00
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C7A54+1
+
+ thumb_func_end debug_80C7934
+
+ thumb_func_start debug_80C7A54
+debug_80C7A54:
+ push {r4, r5, r6, lr}
+ add r6, r0, #0
+ lsl r6, r6, #0x18
+ lsr r6, r6, #0x18
+ ldr r4, ._788 @ gPlttBufferUnfaded
+ ldr r5, ._788 + 4 @ gUnknown_Debug_2038A20
+ ldr r1, [r5]
+ add r1, r1, #0x10
+ add r0, r4, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, ._788 + 8 @ 0xffffff00
+ add r4, r4, r0
+ ldr r3, [r5]
+ ldrb r0, [r3, #0x7]
+ add r0, r0, #0x81
+ lsl r0, r0, #0x1
+ add r0, r0, r4
+ ldrh r4, [r0]
+ mov r1, #0x1f
+ and r1, r1, r4
+ ldrb r2, [r3, #0xc]
+ mov r0, #0x20
+ neg r0, r0
+ and r0, r0, r2
+ orr r0, r0, r1
+ strb r0, [r3, #0xc]
+ ldr r3, [r5]
+ mov r1, #0xf8
+ lsl r1, r1, #0x2
+ and r1, r1, r4
+ ldrh r2, [r3, #0xc]
+ ldr r0, ._788 + 12 @ 0xfffffc1f
+ and r0, r0, r2
+ orr r0, r0, r1
+ strh r0, [r3, #0xc]
+ mov r1, #0xf8
+ lsl r1, r1, #0x7
+ and r1, r1, r4
+ lsr r1, r1, #0x8
+ ldrb r2, [r3, #0xd]
+ mov r0, #0x7d
+ neg r0, r0
+ and r0, r0, r2
+ orr r0, r0, r1
+ strb r0, [r3, #0xd]
+ ldr r2, [r5]
+ ldrb r1, [r2, #0xd]
+ mov r0, #0x7f
+ and r0, r0, r1
+ strb r0, [r2, #0xd]
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x7]
+ add r0, r0, #0x1
+ mov r1, #0xb
+ mov r2, #0xa
+ mov r3, #0x2
+ bl debug_80C68CC
+ ldr r0, ._788 + 16 @ gUnknown_Debug_083F8813
+ mov r1, #0xd
+ mov r2, #0xa
+ bl Menu_PrintText
+ add r0, r4, #0
+ mov r1, #0xe
+ mov r2, #0xa
+ mov r3, #0x4
+ bl debug_80C68CC
+ ldr r1, ._788 + 20 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._788 + 24 @ debug_80C7B14
+ str r1, [r0]
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._789:
+ .align 2, 0
+._788:
+ .word gPlttBufferUnfaded+0x100
+ .word gUnknown_Debug_2038A20
+ .word 0xffffff00
+ .word 0xfffffc1f
+ .word gUnknown_Debug_083F8813
+ .word gTasks
+ .word debug_80C7B14+1
+
+ thumb_func_end debug_80C7A54
+
+ thumb_func_start debug_80C7B14
+debug_80C7B14:
+ push {r4, r5, r6, lr}
+ add sp, sp, #0xfffffffc
+ lsl r0, r0, #0x18
+ lsr r6, r0, #0x18
+ ldr r1, ._792 @ gMain
+ ldrh r3, [r1, #0x2e]
+ mov r0, #0x2
+ and r0, r0, r3
+ add r4, r1, #0
+ cmp r0, #0
+ beq ._790 @cond_branch
+ mov r0, #0x5
+ bl PlaySE
+ mov r0, #0x1
+ neg r0, r0
+ mov r1, #0x0
+ str r1, [sp]
+ mov r2, #0x0
+ mov r3, #0x10
+ bl BeginNormalPaletteFade
+ ldr r0, ._792 + 4 @ debug_80C370C
+ bl SetMainCallback2
+ ldr r1, ._792 + 8 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._792 + 12 @ debug_80C373C
+ str r1, [r0]
+ b ._821
+._793:
+ .align 2, 0
+._792:
+ .word gMain
+ .word debug_80C370C+1
+ .word gTasks
+ .word debug_80C373C+1
+._790:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0x80
+ lsl r0, r0, #0x1
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._794 @cond_branch
+ ldr r4, ._796 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ mov r0, #0x0
+ b ._795
+._797:
+ .align 2, 0
+._796:
+ .word gUnknown_Debug_2038A20
+._794:
+ mov r0, #0x80
+ lsl r0, r0, #0x2
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._798 @cond_branch
+ ldr r4, ._800 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrh r1, [r0]
+ mov r0, #0x1
+._795:
+ bl debug_80C38B4
+ ldr r1, [r4]
+ strh r0, [r1]
+ ldr r1, ._800 + 4 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._800 + 8 @ debug_80C7D44
+ str r1, [r0]
+ b ._821
+._801:
+ .align 2, 0
+._800:
+ .word gUnknown_Debug_2038A20
+ .word gTasks
+ .word debug_80C7D44+1
+._798:
+ mov r2, #0x1
+ and r2, r2, r3
+ cmp r2, #0
+ beq ._802 @cond_branch
+ ldr r0, ._804 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ mov r0, #0x1
+ strb r0, [r1, #0x5]
+ ldr r1, ._804 + 4 @ 0x4000040
+ ldr r2, ._804 + 8 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._804 + 12 @ 0x4167
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r1, ._804 + 16 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._804 + 20 @ debug_80C7DDC
+ str r1, [r0]
+ b ._821
+._805:
+ .align 2, 0
+._804:
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x4167
+ .word gTasks
+ .word debug_80C7DDC+1
+._802:
+ mov r0, #0x10
+ and r0, r0, r1
+ ldr r3, ._809 @ gUnknown_Debug_2038A20
+ cmp r0, #0
+ beq ._807 @cond_branch
+ ldr r1, [r3]
+ ldrb r0, [r1, #0x7]
+ cmp r0, #0xd
+ bhi ._807 @cond_branch
+ lsl r0, r0, #0x1
+ ldr r1, ._809 + 4 @ 0x5000102
+ add r0, r0, r1
+ strh r2, [r0]
+ ldr r1, [r3]
+ ldrb r0, [r1, #0x7]
+ add r0, r0, #0x1
+ strb r0, [r1, #0x7]
+ b ._813
+._810:
+ .align 2, 0
+._809:
+ .word gUnknown_Debug_2038A20
+ .word 0x5000102
+._807:
+ ldrh r1, [r4, #0x30]
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._812 @cond_branch
+ ldr r1, [r3]
+ ldrb r0, [r1, #0x7]
+ cmp r0, #0
+ beq ._812 @cond_branch
+ lsl r0, r0, #0x1
+ ldr r2, ._814 @ 0x5000102
+ add r0, r0, r2
+ mov r1, #0x0
+ strh r1, [r0]
+ ldr r1, [r3]
+ ldrb r0, [r1, #0x7]
+ sub r0, r0, #0x1
+ strb r0, [r1, #0x7]
+ b ._813
+._815:
+ .align 2, 0
+._814:
+ .word 0x5000102
+._812:
+ ldrh r1, [r4, #0x2e]
+ mov r0, #0x8
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._816 @cond_branch
+ ldr r4, ._819 @ gUnknown_Debug_2038A20
+ ldr r2, [r4]
+ ldrb r0, [r2, #0x9]
+ mov r1, #0x1
+ eor r0, r0, r1
+ strb r0, [r2, #0x9]
+ ldr r1, [r4]
+ ldrb r0, [r1, #0x9]
+ cmp r0, #0
+ beq ._817 @cond_branch
+ ldrh r0, [r1]
+ mov r1, #0x0
+ mov r2, #0x0
+ bl GetMonSpritePalFromOtIdPersonality
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x14
+ mov r2, #0x80
+ lsl r2, r2, #0x11
+ add r1, r1, r2
+ lsr r1, r1, #0x10
+ mov r2, #0x20
+ bl LoadCompressedPalette
+ b ._818
+._820:
+ .align 2, 0
+._819:
+ .word gUnknown_Debug_2038A20
+._817:
+ ldrh r0, [r1]
+ mov r1, #0x0
+ mov r2, #0x9
+ bl GetMonSpritePalFromOtIdPersonality
+ ldr r1, [r4]
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x14
+ mov r2, #0x80
+ lsl r2, r2, #0x11
+ add r1, r1, r2
+ lsr r1, r1, #0x10
+ mov r2, #0x20
+ bl LoadCompressedPalette
+._818:
+ ldr r5, ._822 @ gUnknown_Debug_2038A20
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ ldr r4, ._822 + 4 @ gPlttBufferUnfaded
+ add r0, r0, r4
+ ldr r2, ._822 + 8 @ 0xffffff00
+ add r1, r4, r2
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r5]
+ ldrb r0, [r0, #0x6]
+ lsl r0, r0, #0x5
+ add r0, r0, r4
+ ldr r1, ._822 + 12 @ gPlttBufferFaded
+ mov r2, #0x10
+ bl CpuSet
+._813:
+ ldr r1, ._822 + 16 @ gTasks
+ lsl r0, r6, #0x2
+ add r0, r0, r6
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._822 + 20 @ debug_80C7A54
+ str r1, [r0]
+ b ._821
+._823:
+ .align 2, 0
+._822:
+ .word gUnknown_Debug_2038A20
+ .word gPlttBufferUnfaded+0x200
+ .word 0xffffff00
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C7A54+1
+._816:
+ ldr r1, [r3]
+ ldrb r0, [r1, #0x8]
+ add r0, r0, #0x4
+ strb r0, [r1, #0x8]
+ ldr r2, [r3]
+ ldrb r1, [r2, #0x8]
+ mov r0, #0x1f
+ and r0, r0, r1
+ strb r0, [r2, #0x8]
+ ldr r0, [r3]
+ ldrb r1, [r0, #0x7]
+ lsl r1, r1, #0x1
+ ldr r2, ._824 @ 0x5000142
+ add r1, r1, r2
+ ldr r2, ._824 + 4 @ gUnknown_Debug_083F8790
+ ldrb r0, [r0, #0x8]
+ lsl r0, r0, #0x1
+ add r0, r0, r2
+ ldrh r0, [r0]
+ strh r0, [r1]
+._821:
+ add sp, sp, #0x4
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._825:
+ .align 2, 0
+._824:
+ .word 0x5000142
+ .word gUnknown_Debug_083F8790
+
+ thumb_func_end debug_80C7B14
+
+ thumb_func_start debug_80C7D44
+debug_80C7D44:
+ push {r4, r5, r6, lr}
+ add r5, r0, #0
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ ldr r6, ._826 @ gSprites
+ ldr r4, ._826 + 4 @ gUnknown_Debug_2038A20
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x2]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl DestroySprite
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ ldrb r0, [r0, #0x5]
+ lsr r0, r0, #0x4
+ bl GetSpritePaletteTagByPaletteNum
+ lsl r0, r0, #0x10
+ lsr r0, r0, #0x10
+ bl FreeSpritePaletteByTag
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x3]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl DestroySprite
+ ldr r0, [r4]
+ ldrb r1, [r0, #0x4]
+ lsl r0, r1, #0x4
+ add r0, r0, r1
+ lsl r0, r0, #0x2
+ add r0, r0, r6
+ bl sub_809D510
+ ldr r1, ._826 + 8 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._826 + 12 @ debug_80C7934
+ str r1, [r0]
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._827:
+ .align 2, 0
+._826:
+ .word gSprites
+ .word gUnknown_Debug_2038A20
+ .word gTasks
+ .word debug_80C7934+1
+
+ thumb_func_end debug_80C7D44
+
+ thumb_func_start debug_80C7DDC
+debug_80C7DDC:
+ push {r4, r5, r6, r7, lr}
+ lsl r0, r0, #0x18
+ lsr r7, r0, #0x18
+ ldr r0, ._830 @ gMain
+ ldrh r2, [r0, #0x2e]
+ mov r1, #0x1
+ and r1, r1, r2
+ add r3, r0, #0
+ cmp r1, #0
+ beq ._828 @cond_branch
+ ldr r0, ._830 + 4 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ mov r0, #0x0
+ strb r0, [r1, #0x5]
+ ldr r1, ._830 + 8 @ 0x4000040
+ ldr r2, ._830 + 12 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._830 + 16 @ 0x699f
+ add r0, r2, #0
+ strh r0, [r1]
+ b ._829
+._831:
+ .align 2, 0
+._830:
+ .word gMain
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+._828:
+ mov r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._832 @cond_branch
+ ldr r6, ._834 @ gUnknown_Debug_2038A20
+ ldr r0, [r6]
+ strb r1, [r0, #0x5]
+ ldr r1, ._834 + 4 @ 0x4000040
+ ldr r2, ._834 + 8 @ 0x51ef
+ add r0, r2, #0
+ strh r0, [r1]
+ add r1, r1, #0x4
+ ldr r2, ._834 + 12 @ 0x699f
+ add r0, r2, #0
+ strh r0, [r1]
+ ldr r0, [r6]
+ add r0, r0, #0x10
+ ldr r4, ._834 + 16 @ gPlttBufferUnfaded
+ add r1, r4, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r0, [r6]
+ add r0, r0, #0x10
+ ldr r5, ._834 + 20 @ gPlttBufferFaded
+ add r1, r5, #0
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, [r6]
+ add r0, r1, #0
+ add r0, r0, #0x10
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x5
+ mov r2, #0x80
+ lsl r2, r2, #0x1
+ add r4, r4, r2
+ add r1, r1, r4
+ mov r2, #0x10
+ bl CpuSet
+ ldr r1, [r6]
+ add r0, r1, #0
+ add r0, r0, #0x10
+ ldrb r1, [r1, #0x6]
+ lsl r1, r1, #0x5
+ mov r2, #0x80
+ lsl r2, r2, #0x1
+ add r5, r5, r2
+ add r1, r1, r5
+ mov r2, #0x10
+ bl CpuSet
+._829:
+ ldr r1, ._834 + 24 @ gTasks
+ lsl r0, r7, #0x2
+ add r0, r0, r7
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._834 + 28 @ debug_80C7A54
+ str r1, [r0]
+ b ._871
+._835:
+ .align 2, 0
+._834:
+ .word gUnknown_Debug_2038A20
+ .word 0x4000040
+ .word 0x51ef
+ .word 0x699f
+ .word gPlttBufferUnfaded+0x100
+ .word gPlttBufferFaded+0x100
+ .word gTasks
+ .word debug_80C7A54+1
+._832:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x80
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._837 @cond_branch
+ ldr r0, ._839 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa]
+ cmp r0, #0x1
+ bhi ._837 @cond_branch
+ add r0, r0, #0x1
+ strb r0, [r1, #0xa]
+ b ._871
+._840:
+ .align 2, 0
+._839:
+ .word gUnknown_Debug_2038A20
+._837:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x40
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._842 @cond_branch
+ ldr r0, ._844 @ gUnknown_Debug_2038A20
+ ldr r1, [r0]
+ ldrb r0, [r1, #0xa]
+ cmp r0, #0
+ beq ._842 @cond_branch
+ sub r0, r0, #0x1
+ strb r0, [r1, #0xa]
+ b ._871
+._845:
+ .align 2, 0
+._844:
+ .word gUnknown_Debug_2038A20
+._842:
+ ldrh r1, [r3, #0x30]
+ mov r0, #0x10
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._846 @cond_branch
+ ldr r0, ._851 @ gUnknown_Debug_2038A20
+ ldr r2, [r0]
+ ldrb r0, [r2, #0xa]
+ cmp r0, #0x1
+ beq ._847 @cond_branch
+ cmp r0, #0x1
+ bgt ._848 @cond_branch
+ cmp r0, #0
+ beq ._849 @cond_branch
+ b ._871
+._852:
+ .align 2, 0
+._851:
+ .word gUnknown_Debug_2038A20
+._848:
+ cmp r0, #0x2
+ beq ._853 @cond_branch
+ b ._871
+._849:
+ ldrb r3, [r2, #0xc]
+ lsl r1, r3, #0x1b
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._878 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ mov r1, #0x20
+ neg r1, r1
+ and r1, r1, r3
+ orr r1, r1, r0
+ strb r1, [r2, #0xc]
+ b ._878
+._847:
+ ldrh r3, [r2, #0xc]
+ lsl r1, r3, #0x16
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._878 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ ldr r1, ._859 @ 0xfffffc1f
+ and r1, r1, r3
+ orr r1, r1, r0
+ strh r1, [r2, #0xc]
+ b ._878
+._860:
+ .align 2, 0
+._859:
+ .word 0xfffffc1f
+._853:
+ ldrb r3, [r2, #0xd]
+ lsl r1, r3, #0x19
+ lsr r0, r1, #0x1b
+ cmp r0, #0x1e
+ bhi ._878 @cond_branch
+ add r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x2
+ mov r1, #0x7d
+ neg r1, r1
+ and r1, r1, r3
+ orr r1, r1, r0
+ strb r1, [r2, #0xd]
+ b ._878
+._846:
+ mov r0, #0x20
+ and r0, r0, r1
+ cmp r0, #0
+ beq ._871 @cond_branch
+ ldr r0, ._868 @ gUnknown_Debug_2038A20
+ ldr r3, [r0]
+ ldrb r0, [r3, #0xa]
+ cmp r0, #0x1
+ beq ._864 @cond_branch
+ cmp r0, #0x1
+ bgt ._865 @cond_branch
+ cmp r0, #0
+ beq ._866 @cond_branch
+ b ._871
+._869:
+ .align 2, 0
+._868:
+ .word gUnknown_Debug_2038A20
+._865:
+ cmp r0, #0x2
+ beq ._870 @cond_branch
+ b ._871
+._866:
+ ldrb r2, [r3, #0xc]
+ mov r0, #0x1f
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._878 @cond_branch
+ lsl r0, r2, #0x1b
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ mov r1, #0x20
+ neg r1, r1
+ and r1, r1, r2
+ orr r1, r1, r0
+ strb r1, [r3, #0xc]
+ b ._878
+._864:
+ ldrh r2, [r3, #0xc]
+ mov r0, #0xf8
+ lsl r0, r0, #0x2
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._878 @cond_branch
+ lsl r0, r2, #0x16
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x5
+ ldr r1, ._876 @ 0xfffffc1f
+ and r1, r1, r2
+ orr r1, r1, r0
+ strh r1, [r3, #0xc]
+ b ._878
+._877:
+ .align 2, 0
+._876:
+ .word 0xfffffc1f
+._870:
+ ldrb r2, [r3, #0xd]
+ mov r0, #0x7c
+ and r0, r0, r2
+ cmp r0, #0
+ beq ._878 @cond_branch
+ lsl r0, r2, #0x19
+ lsr r0, r0, #0x1b
+ sub r0, r0, #0x1
+ mov r1, #0x1f
+ and r0, r0, r1
+ lsl r0, r0, #0x2
+ mov r1, #0x7d
+ neg r1, r1
+ and r1, r1, r2
+ orr r1, r1, r0
+ strb r1, [r3, #0xd]
+._878:
+ ldr r0, ._879 @ gTasks
+ lsl r1, r7, #0x2
+ add r1, r1, r7
+ lsl r1, r1, #0x3
+ add r1, r1, r0
+ ldr r0, ._879 + 4 @ debug_80C802C
+ str r0, [r1]
+._871:
+ pop {r4, r5, r6, r7}
+ pop {r0}
+ bx r0
+._880:
+ .align 2, 0
+._879:
+ .word gTasks
+ .word debug_80C802C+1
+
+ thumb_func_end debug_80C7DDC
+
+ thumb_func_start debug_80C802C
+debug_80C802C:
+ push {r4, r5, r6, lr}
+ mov r6, r8
+ push {r6}
+ add r5, r0, #0
+ lsl r5, r5, #0x18
+ lsr r5, r5, #0x18
+ ldr r0, ._881 @ gUnknown_Debug_2038A20
+ ldr r3, [r0]
+ ldrb r0, [r3, #0xc]
+ lsl r0, r0, #0x1b
+ lsr r0, r0, #0x1b
+ ldrh r2, [r3, #0xc]
+ mov r1, #0xf8
+ lsl r1, r1, #0x2
+ and r1, r1, r2
+ add r0, r0, r1
+ ldrb r1, [r3, #0xd]
+ lsl r1, r1, #0x19
+ lsr r1, r1, #0x1b
+ lsl r1, r1, #0xa
+ add r0, r0, r1
+ ldr r6, ._881 + 4 @ gPlttBufferUnfaded
+ ldrb r1, [r3, #0x7]
+ add r1, r1, #0x81
+ lsl r1, r1, #0x1
+ add r1, r1, r6
+ strh r0, [r1]
+ ldr r1, ._881 + 8 @ gPlttBufferFaded
+ mov r8, r1
+ ldrb r1, [r3, #0x7]
+ add r1, r1, #0x81
+ lsl r1, r1, #0x1
+ add r1, r1, r8
+ strh r0, [r1]
+ ldrb r1, [r3, #0x6]
+ lsl r1, r1, #0x4
+ ldrb r2, [r3, #0x7]
+ ldr r4, ._881 + 12 @ 0x101
+ add r2, r2, r4
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ add r1, r1, r6
+ strh r0, [r1]
+ ldrb r1, [r3, #0x6]
+ lsl r1, r1, #0x4
+ ldrb r2, [r3, #0x7]
+ add r2, r2, r4
+ add r1, r1, r2
+ lsl r1, r1, #0x1
+ add r1, r1, r8
+ strh r0, [r1]
+ mov r1, #0xe
+ mov r2, #0xa
+ mov r3, #0x4
+ bl debug_80C68CC
+ ldr r1, ._881 + 16 @ gTasks
+ lsl r0, r5, #0x2
+ add r0, r0, r5
+ lsl r0, r0, #0x3
+ add r0, r0, r1
+ ldr r1, ._881 + 20 @ debug_80C7DDC
+ str r1, [r0]
+ pop {r3}
+ mov r8, r3
+ pop {r4, r5, r6}
+ pop {r0}
+ bx r0
+._882:
+ .align 2, 0
+._881:
+ .word gUnknown_Debug_2038A20
+ .word gPlttBufferUnfaded
+ .word gPlttBufferFaded
+ .word 0x101
+ .word gTasks
+ .word debug_80C7DDC+1
+
+ thumb_func_end debug_80C802C
+
+ .align 2, 0
+
+.endif
diff --git a/asm/water.s b/asm/water.s
index 45fb7f82a..2f0ebb8f8 100644
--- a/asm/water.s
+++ b/asm/water.s
@@ -2053,7 +2053,7 @@ sub_80D4AD0: @ 80D4AD0
strh r1, [r0, 0x36]
ldrh r1, [r6, 0x1A]
strh r1, [r0, 0x38]
- bl sub_80786EC
+ bl InitAnimSpriteTranslationOverDuration
adds r5, 0x1C
adds r4, r5
ldr r0, _080D4B38 @ =sub_80D4B3C
@@ -2075,7 +2075,7 @@ _080D4B38: .4byte sub_80D4B3C
sub_80D4B3C: @ 80D4B3C
push {r4-r6,lr}
adds r6, r0, 0
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
lsls r0, 24
cmp r0, 0
beq _080D4B96
@@ -2110,7 +2110,7 @@ sub_80D4B3C: @ 80D4B3C
mvns r1, r1
strh r1, [r6, 0x38]
adds r0, r6, 0
- bl sub_80786EC
+ bl InitAnimSpriteTranslationOverDuration
ldr r0, _080D4BA0 @ =sub_80D4BA4
str r0, [r6, 0x1C]
_080D4B96:
@@ -2126,7 +2126,7 @@ _080D4BA0: .4byte sub_80D4BA4
sub_80D4BA4: @ 80D4BA4
push {r4-r6,lr}
adds r5, r0, 0
- bl sub_8078718
+ bl TranslateAnimSpriteLinearAndSine
lsls r0, 24
cmp r0, 0
beq _080D4BE0
@@ -2264,7 +2264,7 @@ sub_80D4CA4: @ 80D4CA4
push {r4,r5,lr}
adds r4, r0, 0
movs r1, 0x1
- bl sub_80787B0
+ bl InitAnimSpritePos
ldr r5, _080D4CE0 @ =gAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
diff --git a/asmdiff_de_debug.sh b/asmdiff_de_debug.sh
new file mode 100755
index 000000000..837b88cd2
--- /dev/null
+++ b/asmdiff_de_debug.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_de_debug.gba > baserom_de_debug.dump
+$OBJDUMP $OPTIONS pokeruby_de_debug.gba > pokeruby_de_debug.dump
+diff baserom_de_debug.dump pokeruby_de_debug.dump
diff --git a/charmap.txt b/charmap.txt
index 1c68994df..e6ad2c05b 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -44,6 +44,7 @@ SUPER_ER = 2C
'+' = 2E
LV = 34
'=' = 35
+';' = 36
'¿' = 51
'¡' = 52
PK = 53
@@ -59,6 +60,10 @@ UP_ARROW = 79
DOWN_ARROW = 7A
LEFT_ARROW = 7B
RIGHT_ARROW = 7C
+SUPER_E = 84
+'<' = 85
+'>' = 86
+SUPER_RE = A0
'0' = A1
'1' = A2
'2' = A3
diff --git a/config.mk b/config.mk
index 9f901658e..bdcf5aa7e 100644
--- a/config.mk
+++ b/config.mk
@@ -4,6 +4,7 @@
GAME_VERSION ?= RUBY
GAME_REVISION ?= 0
GAME_LANGUAGE ?= ENGLISH
+DEBUG ?= 0
COMPARE ?= 1
# Version
@@ -42,3 +43,9 @@ else
$(error unknown language $(GAME_LANGUAGE))
endif
endif
+
+# Debug
+ifeq ($(DEBUG), 1)
+ BUILD_NAME := $(BUILD_NAME)_debug
+endif
+
diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s
index 1569e87c6..7e43905bf 100644
--- a/data-de/event_scripts.s
+++ b/data-de/event_scripts.s
@@ -3279,6 +3279,7 @@ PacifidlogTown_House2_EventScript_1A14DC:: @ 81A14DC
Route101_EventScript_1A14DC:: @ 81A14DC
return
+ .include "data/scripts/debug.inc"
.include "data/scripts/berry_tree.inc"
.include "data/text/berry_tree.inc"
diff --git a/data/battle_ai_scripts.s b/data/battle_ai_scripts.s
index 17b27fae5..ab83f2bf8 100644
--- a/data/battle_ai_scripts.s
+++ b/data/battle_ai_scripts.s
@@ -47,7 +47,7 @@ BattleAIs:: @ 81DA01C
AI_CheckBadMove: @ 81DA09C
is_most_powerful_move
if_equal 0, AI_CheckBadMove_CheckSoundproof
- if_damage_bonus 0, Score_Down10
+ if_damage_bonus 0, Score_Minus10
get_ability TARGET
if_equal ABILITY_VOLT_ABSORB, CheckIfVoltAbsorbCancelsElectric
if_equal ABILITY_WATER_ABSORB, CheckIfWaterAbsorbCancelsWater
@@ -58,39 +58,39 @@ AI_CheckBadMove: @ 81DA09C
CheckIfVoltAbsorbCancelsElectric: @ 81DA0CE
get_type CURRENT_MOVE
- if_arg_equal TYPE_ELECTRIC, Score_Down12
+ if_arg_equal TYPE_ELECTRIC, Score_Minus12
jump AI_CheckBadMove_CheckSoundproof
CheckIfWaterAbsorbCancelsWater: @ 81DA0DB
get_type CURRENT_MOVE
- if_arg_equal TYPE_WATER, Score_Down12
+ if_arg_equal TYPE_WATER, Score_Minus12
jump AI_CheckBadMove_CheckSoundproof
CheckIfFlashFireCancelsFire: @ 81DA0E8
get_type CURRENT_MOVE
- if_arg_equal TYPE_FIRE, Score_Down12
+ if_arg_equal TYPE_FIRE, Score_Minus12
jump AI_CheckBadMove_CheckSoundproof
CheckIfWonderGuardCancelsMove: @ 81DA0F5
if_damage_bonus 80, AI_CheckBadMove_CheckSoundproof
- jump Score_Down10
+ jump Score_Minus10
CheckIfLevitateCancelsGroundMove: @ 81DA100
get_type CURRENT_MOVE
- if_arg_equal TYPE_GROUND, Score_Down10
+ if_arg_equal TYPE_GROUND, Score_Minus10
AI_CheckBadMove_CheckSoundproof: @ 81DA108
get_ability TARGET
if_not_equal ABILITY_SOUNDPROOF, AI_CheckBadMove_CheckEffect
- if_move MOVE_GROWL, Score_Down10
- if_move MOVE_ROAR, Score_Down10
- if_move MOVE_SING, Score_Down10
- if_move MOVE_SUPERSONIC, Score_Down10
- if_move MOVE_SCREECH, Score_Down10
- if_move MOVE_SNORE, Score_Down10
- if_move MOVE_UPROAR, Score_Down10
- if_move MOVE_METAL_SOUND, Score_Down10
- if_move MOVE_GRASS_WHISTLE, Score_Down10
+ if_move MOVE_GROWL, Score_Minus10
+ if_move MOVE_ROAR, Score_Minus10
+ if_move MOVE_SING, Score_Minus10
+ if_move MOVE_SUPERSONIC, Score_Minus10
+ if_move MOVE_SCREECH, Score_Minus10
+ if_move MOVE_SNORE, Score_Minus10
+ if_move MOVE_UPROAR, Score_Minus10
+ if_move MOVE_METAL_SOUND, Score_Minus10
+ if_move MOVE_GRASS_WHISTLE, Score_Minus10
AI_CheckBadMove_CheckEffect: @ 81DA14F
if_effect EFFECT_SLEEP, AI_CBM_Sleep
@@ -173,7 +173,7 @@ AI_CheckBadMove_CheckEffect: @ 81DA14F
if_effect EFFECT_MIRROR_COAT, AI_CBM_HighRiskForDamage
if_effect EFFECT_SKULL_BASH, AI_CBM_HighRiskForDamage
if_effect EFFECT_FUTURE_SIGHT, AI_CBM_FutureSight
- if_effect EFFECT_TELEPORT, Score_Down10
+ if_effect EFFECT_TELEPORT, Score_Minus10
if_effect EFFECT_DEFENSE_CURL, AI_CBM_DefenseUp
if_effect EFFECT_FAKE_OUT, AI_CBM_FakeOut
if_effect EFFECT_STOCKPILE, AI_CBM_Stockpile
@@ -206,100 +206,100 @@ AI_CheckBadMove_CheckEffect: @ 81DA14F
AI_CBM_Sleep: @ 81DA3DE
get_ability TARGET
- if_equal ABILITY_INSOMNIA, Score_Down10
- if_equal ABILITY_VITAL_SPIRIT, Score_Down10
- if_status TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, Score_Down10
+ if_equal ABILITY_INSOMNIA, Score_Minus10
+ if_equal ABILITY_VITAL_SPIRIT, Score_Minus10
+ if_status TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, Score_Minus10
end
AI_CBM_Explosion: @ 81DA3F7
- if_damage_bonus 0, Score_Down10
+ if_damage_bonus 0, Score_Minus10
get_ability TARGET
- if_equal ABILITY_DAMP, Score_Down10
+ if_equal ABILITY_DAMP, Score_Minus10
count_alive_pokemon USER
if_not_equal 0, AI_CBM_Explosion_End
count_alive_pokemon TARGET
- if_not_equal 0, Score_Down10
- jump Score_Down1
+ if_not_equal 0, Score_Minus10
+ jump Score_Minus1
AI_CBM_Explosion_End: @ 81DA41A
end
AI_CBM_Nightmare: @ 81DA41B
- if_status2 TARGET, S_NIGHTMARE, Score_Down10
- if_not_status TARGET, SLP, Score_Down8
+ if_status2 TARGET, S_NIGHTMARE, Score_Minus10
+ if_not_status TARGET, SLP, Score_Minus8
end
AI_CBM_DreamEater: @ 81DA430
- if_not_status TARGET, SLP, Score_Down8
- if_damage_bonus 0, Score_Down10
+ if_not_status TARGET, SLP, Score_Minus8
+ if_damage_bonus 0, Score_Minus10
end
AI_CBM_BellyDrum: @ 81DA441
- if_hp_less_than USER, 51, Score_Down10
+ if_hp_less_than USER, 51, Score_Minus10
AI_CBM_AttackUp: @ 81DA448
- if_stat_level_equal USER, ATTACK, 12, Score_Down10
+ if_stat_level_equal USER, ATTACK, 12, Score_Minus10
end
AI_CBM_DefenseUp: @ 81DA451
- if_stat_level_equal USER, DEFENSE, 12, Score_Down10
+ if_stat_level_equal USER, DEFENSE, 12, Score_Minus10
end
AI_CBM_SpeedUp: @ 81DA45A
- if_stat_level_equal USER, SPEED, 12, Score_Down10
+ if_stat_level_equal USER, SPEED, 12, Score_Minus10
end
AI_CBM_SpAtkUp: @ 81DA463
- if_stat_level_equal USER, SP_ATTACK, 12, Score_Down10
+ if_stat_level_equal USER, SP_ATTACK, 12, Score_Minus10
end
AI_CBM_SpDefUp: @ 81DA46C
- if_stat_level_equal USER, SP_DEFENSE, 12, Score_Down10
+ if_stat_level_equal USER, SP_DEFENSE, 12, Score_Minus10
end
AI_CBM_AccUp: @ 81DA475
- if_stat_level_equal USER, ACCURACY, 12, Score_Down10
+ if_stat_level_equal USER, ACCURACY, 12, Score_Minus10
end
AI_CBM_EvasionUp: @ 81DA47E
- if_stat_level_equal USER, EVASION, 12, Score_Down10
+ if_stat_level_equal USER, EVASION, 12, Score_Minus10
end
AI_CBM_AttackDown: @ 81DA487
- if_stat_level_equal TARGET, ATTACK, 0, Score_Down10
+ if_stat_level_equal TARGET, ATTACK, 0, Score_Minus10
get_ability TARGET
- if_equal ABILITY_HYPER_CUTTER, Score_Down10
+ if_equal ABILITY_HYPER_CUTTER, Score_Minus10
jump CheckIfAbilityBlocksStatChange
AI_CBM_DefenseDown: @ 81DA49C
- if_stat_level_equal TARGET, DEFENSE, 0, Score_Down10
+ if_stat_level_equal TARGET, DEFENSE, 0, Score_Minus10
jump CheckIfAbilityBlocksStatChange
AI_CBM_SpeedDown: @ 81DA4A9
- if_stat_level_equal TARGET, SPEED, 0, Score_Down10
+ if_stat_level_equal TARGET, SPEED, 0, Score_Minus10
jump CheckIfAbilityBlocksStatChange
AI_CBM_SpAtkDown: @ 81DA4B6
- if_stat_level_equal TARGET, SP_ATTACK, 0, Score_Down10
+ if_stat_level_equal TARGET, SP_ATTACK, 0, Score_Minus10
jump CheckIfAbilityBlocksStatChange
AI_CBM_SpDefDown: @ 81DA4C3
- if_stat_level_equal TARGET, SP_DEFENSE, 0, Score_Down10
+ if_stat_level_equal TARGET, SP_DEFENSE, 0, Score_Minus10
jump CheckIfAbilityBlocksStatChange
AI_CBM_AccDown: @ 81DA4D0
- if_stat_level_equal TARGET, ACCURACY, 0, Score_Down10
+ if_stat_level_equal TARGET, ACCURACY, 0, Score_Minus10
get_ability TARGET
- if_equal ABILITY_KEEN_EYE, Score_Down10
+ if_equal ABILITY_KEEN_EYE, Score_Minus10
jump CheckIfAbilityBlocksStatChange
AI_CBM_EvasionDown: @ 81DA4E5
- if_stat_level_equal TARGET, EVASION, 0, Score_Down10
+ if_stat_level_equal TARGET, EVASION, 0, Score_Minus10
CheckIfAbilityBlocksStatChange: @ 81DA4ED
get_ability TARGET
- if_equal ABILITY_CLEAR_BODY, Score_Down10
- if_equal ABILITY_WHITE_SMOKE, Score_Down10
+ if_equal ABILITY_CLEAR_BODY, Score_Minus10
+ if_equal ABILITY_WHITE_SMOKE, Score_Minus10
end
AI_CBM_Haze: @ 81DA4FC
@@ -317,299 +317,299 @@ AI_CBM_Haze: @ 81DA4FC
if_stat_level_more_than TARGET, SP_DEFENSE, 6, AI_CBM_Haze_End
if_stat_level_more_than TARGET, ACCURACY, 6, AI_CBM_Haze_End
if_stat_level_more_than TARGET, EVASION, 6, AI_CBM_Haze_End
- jump Score_Down10
+ jump Score_Minus10
AI_CBM_Haze_End: @ 81DA571
end
AI_CBM_Roar: @ 81DA572
count_alive_pokemon TARGET
- if_equal 0, Score_Down10
+ if_equal 0, Score_Minus10
get_ability TARGET
- if_equal ABILITY_SUCTION_CUPS, Score_Down10
+ if_equal ABILITY_SUCTION_CUPS, Score_Minus10
end
AI_CBM_Toxic: @ 81DA583
get_type ENEMY_TYPE1
- if_equal TYPE_STEEL, Score_Down10
- if_equal TYPE_POISON, Score_Down10
+ if_equal TYPE_STEEL, Score_Minus10
+ if_equal TYPE_POISON, Score_Minus10
get_type PLAYER_TYPE1
- if_equal TYPE_STEEL, Score_Down10
- if_equal TYPE_POISON, Score_Down10
+ if_equal TYPE_STEEL, Score_Minus10
+ if_equal TYPE_POISON, Score_Minus10
get_ability TARGET
- if_equal ABILITY_IMMUNITY, Score_Down10
- if_status TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, Score_Down10
+ if_equal ABILITY_IMMUNITY, Score_Minus10
+ if_status TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, Score_Minus10
end
AI_CBM_LightScreen: @ 81DA5B2
- if_status4 USER, S_LIGHT_SCREEN, Score_Down8
+ if_status4 USER, S_LIGHT_SCREEN, Score_Minus8
end
AI_CBM_OneHitKO: @ 81DA5BD
- if_damage_bonus 0, Score_Down10
+ if_damage_bonus 0, Score_Minus10
get_ability TARGET
- if_equal ABILITY_STURDY, Score_Down10
- if_target_higher_level Score_Down10
+ if_equal ABILITY_STURDY, Score_Minus10
+ if_target_higher_level Score_Minus10
end
AI_CBM_Magnitude: @ 81DA5D2
get_ability TARGET
- if_equal ABILITY_LEVITATE, Score_Down10
+ if_equal ABILITY_LEVITATE, Score_Minus10
AI_CBM_HighRiskForDamage: @ 81DA5DA
- if_damage_bonus 0, Score_Down10
+ if_damage_bonus 0, Score_Minus10
get_ability TARGET
if_not_equal ABILITY_WONDER_GUARD, AI_CBM_HighRiskForDamage_End
if_damage_bonus 80, AI_CBM_HighRiskForDamage_End
- jump Score_Down10
+ jump Score_Minus10
AI_CBM_HighRiskForDamage_End: @ 81DA5F3
end
AI_CBM_Mist: @ 81DA5F4
- if_status4 USER, S_MIST, Score_Down8
+ if_status4 USER, S_MIST, Score_Minus8
end
AI_CBM_FocusEnergy: @ 81DA5FF
- if_status2 USER, S_FOCUS_ENERGY, Score_Down10
+ if_status2 USER, S_FOCUS_ENERGY, Score_Minus10
end
AI_CBM_Confuse: @ 81DA60A
- if_status2 TARGET, S_CONFUSED, Score_Down5
+ if_status2 TARGET, S_CONFUSED, Score_Minus5
get_ability TARGET
- if_equal ABILITY_OWN_TEMPO, Score_Down10
+ if_equal ABILITY_OWN_TEMPO, Score_Minus10
end
AI_CBM_Reflect: @ 81DA61D
- if_status4 USER, S_REFLECT, Score_Down8
+ if_status4 USER, S_REFLECT, Score_Minus8
end
AI_CBM_Paralyze: @ 81DA628
- if_damage_bonus 0, Score_Down10
+ if_damage_bonus 0, Score_Minus10
get_ability TARGET
- if_equal ABILITY_LIMBER, Score_Down10
- if_status TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, Score_Down10
+ if_equal ABILITY_LIMBER, Score_Minus10
+ if_status TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, Score_Minus10
end
AI_CBM_Substitute: @ 81DA641
- if_status2 USER, S_SUBSTITUTE, Score_Down8
- if_hp_less_than USER, 26, Score_Down10
+ if_status2 USER, S_SUBSTITUTE, Score_Minus8
+ if_hp_less_than USER, 26, Score_Minus10
end
AI_CBM_LeechSeed: @ 81DA653
- if_status3 TARGET, S_LEECH_SEED, Score_Down10
+ if_status3 TARGET, S_LEECH_SEED, Score_Minus10
get_type ENEMY_TYPE1
- if_equal TYPE_GRASS, Score_Down10
+ if_equal TYPE_GRASS, Score_Minus10
get_type PLAYER_TYPE1
- if_equal TYPE_GRASS, Score_Down10
+ if_equal TYPE_GRASS, Score_Minus10
end
AI_CBM_Disable: @ 81DA66E
- if_last_move_did_damage TARGET, 0, Score_Down8
+ if_last_move_did_damage TARGET, 0, Score_Minus8
end
AI_CBM_Encore: @ 81DA676
- if_last_move_did_damage TARGET, 1, Score_Down8
+ if_last_move_did_damage TARGET, 1, Score_Minus8
end
AI_CBM_DamageDuringSleep: @ 81DA67E
- if_not_status USER, SLP, Score_Down8
+ if_not_status USER, SLP, Score_Minus8
end
AI_CBM_CantEscape: @ 81DA689
- if_status2 TARGET, S_MEAN_LOOK, Score_Down10
+ if_status2 TARGET, S_MEAN_LOOK, Score_Minus10
end
AI_CBM_Curse: @ 81DA694
- if_stat_level_equal USER, ATTACK, 12, Score_Down10
- if_stat_level_equal USER, DEFENSE, 12, Score_Down8
+ if_stat_level_equal USER, ATTACK, 12, Score_Minus10
+ if_stat_level_equal USER, DEFENSE, 12, Score_Minus8
end
AI_CBM_Spikes: @ 81DA6A5
- if_status4 TARGET, S_SPIKES, Score_Down10
+ if_status4 TARGET, S_SPIKES, Score_Minus10
end
AI_CBM_Foresight: @ 81DA6B0
- if_status2 TARGET, S_FORESIGHT, Score_Down10
+ if_status2 TARGET, S_FORESIGHT, Score_Minus10
end
AI_CBM_PerishSong: @ 81DA6BB
- if_status3 TARGET, S_PERISH_SONG, Score_Down10
+ if_status3 TARGET, S_PERISH_SONG, Score_Minus10
end
AI_CBM_Sandstorm: @ 81DA6C6
get_weather
- if_equal BATTLE_WEATHER_SANDSTORM, Score_Down8
+ if_equal BATTLE_WEATHER_SANDSTORM, Score_Minus8
end
AI_CBM_Attract: @ 81DA6CE
- if_status2 TARGET, S_INFATUATED, Score_Down10
+ if_status2 TARGET, S_INFATUATED, Score_Minus10
get_ability TARGET
- if_equal ABILITY_OBLIVIOUS, Score_Down10
+ if_equal ABILITY_OBLIVIOUS, Score_Minus10
get_gender USER
if_equal 0, AI_CBM_Attract_CheckIfTargetIsFemale
if_equal 254, AI_CBM_Attract_CheckIfTargetIsMale
- jump Score_Down10
+ jump Score_Minus10
AI_CBM_Attract_CheckIfTargetIsFemale: @ 81DA6F3
get_gender TARGET
if_equal 254, AI_CBM_Attract_End
- jump Score_Down10
+ jump Score_Minus10
AI_CBM_Attract_CheckIfTargetIsMale: @ 81DA700
get_gender TARGET
if_equal 0, AI_CBM_Attract_End
- jump Score_Down10
+ jump Score_Minus10
AI_CBM_Attract_End: @ 81DA70D
end
AI_CBM_Safeguard: @ 81DA70E
- if_status4 USER, S_SAFEGUARD, Score_Down8
+ if_status4 USER, S_SAFEGUARD, Score_Minus8
end
AI_CBM_Memento: @ 81DA719
- if_stat_level_equal TARGET, ATTACK, 0, Score_Down10
- if_stat_level_equal TARGET, SP_ATTACK, 0, Score_Down8
+ if_stat_level_equal TARGET, ATTACK, 0, Score_Minus10
+ if_stat_level_equal TARGET, SP_ATTACK, 0, Score_Minus8
AI_CBM_BatonPass: @ 81DA729
count_alive_pokemon USER
- if_equal 0, Score_Down10
+ if_equal 0, Score_Minus10
end
AI_CBM_RainDance: @ 81DA732
get_weather
- if_equal BATTLE_WEATHER_RAIN, Score_Down8
+ if_equal BATTLE_WEATHER_RAIN, Score_Minus8
end
AI_CBM_SunnyDay: @ 81DA73A
get_weather
- if_equal BATTLE_WEATHER_SUN, Score_Down8
+ if_equal BATTLE_WEATHER_SUN, Score_Minus8
end
AI_CBM_FutureSight: @ 81DA742
- if_status4 TARGET, S_FUTURE_SIGHT, Score_Down10
+ if_status4 TARGET, S_FUTURE_SIGHT, Score_Minus10
end
AI_CBM_FakeOut: @ 81DA74D
is_first_turn USER
- if_equal 0, Score_Down10
+ if_equal 0, Score_Minus10
end
AI_CBM_Stockpile: @ 81DA756
get_stockpile_count USER
- if_equal 3, Score_Down10
+ if_equal 3, Score_Minus10
end
AI_CBM_SpitUpAndSwallow: @ 81DA75F
- if_damage_bonus 0, Score_Down10
+ if_damage_bonus 0, Score_Minus10
get_stockpile_count USER
- if_equal 0, Score_Down10
+ if_equal 0, Score_Minus10
end
AI_CBM_Hail: @ 81DA76E
get_weather
- if_equal BATTLE_WEATHER_HAIL, Score_Down8
+ if_equal BATTLE_WEATHER_HAIL, Score_Minus8
end
AI_CBM_Torment: @ 81DA776
- if_status2 TARGET, S_TORMENT, Score_Down10
+ if_status2 TARGET, S_TORMENT, Score_Minus10
end
AI_CBM_WillOWisp: @ 81DA781
get_ability TARGET
- if_equal ABILITY_WATER_VEIL, Score_Down10
- if_status TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, Score_Down10
- if_damage_bonus 0, Score_Down10
- if_damage_bonus 20, Score_Down10
- if_damage_bonus 10, Score_Down10
+ if_equal ABILITY_WATER_VEIL, Score_Minus10
+ if_status TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, Score_Minus10
+ if_damage_bonus 0, Score_Minus10
+ if_damage_bonus 20, Score_Minus10
+ if_damage_bonus 10, Score_Minus10
end
AI_CBM_HelpingHand: @ 81DA7A6
is_double_battle
- if_equal 0, Score_Down10
+ if_equal 0, Score_Minus10
end
AI_CBM_TrickAndKnockOff: @ 81DA7AE
get_ability TARGET
- if_equal ABILITY_STICKY_HOLD, Score_Down10
+ if_equal ABILITY_STICKY_HOLD, Score_Minus10
end
AI_CBM_Ingrain: @ 81DA7B7
- if_status3 USER, S_ROOTED, Score_Down10
+ if_status3 USER, S_ROOTED, Score_Minus10
end
AI_CBM_Recycle: @ 81DA7C2
get_item USER
- if_equal ITEM_NONE, Score_Down10
+ if_equal ITEM_NONE, Score_Minus10
end
AI_CBM_Imprison: @ 81DA7CB
- if_status3 USER, S_IMPRISONED, Score_Down10
+ if_status3 USER, S_IMPRISONED, Score_Minus10
end
AI_CBM_Refresh: @ 81DA7D6
- if_not_status USER, PSN | BRN | PAR | TOX, Score_Down10
+ if_not_status USER, PSN | BRN | PAR | TOX, Score_Minus10
end
AI_CBM_MudSport: @ 81DA7E1
- if_status3 USER, S_MUD_SPORT, Score_Down10
+ if_status3 USER, S_MUD_SPORT, Score_Minus10
end
AI_CBM_Tickle: @ 81DA7EC
- if_stat_level_equal TARGET, ATTACK, 0, Score_Down10
- if_stat_level_equal TARGET, DEFENSE, 0, Score_Down8
+ if_stat_level_equal TARGET, ATTACK, 0, Score_Minus10
+ if_stat_level_equal TARGET, DEFENSE, 0, Score_Minus8
end
AI_CBM_CosmicPower: @ 81DA7FD
- if_stat_level_equal USER, DEFENSE, 12, Score_Down10
- if_stat_level_equal USER, SP_DEFENSE, 12, Score_Down8
+ if_stat_level_equal USER, DEFENSE, 12, Score_Minus10
+ if_stat_level_equal USER, SP_DEFENSE, 12, Score_Minus8
end
AI_CBM_BulkUp: @ 81DA80E
- if_stat_level_equal USER, ATTACK, 12, Score_Down10
- if_stat_level_equal USER, DEFENSE, 12, Score_Down8
+ if_stat_level_equal USER, ATTACK, 12, Score_Minus10
+ if_stat_level_equal USER, DEFENSE, 12, Score_Minus8
end
AI_CBM_WaterSport: @ 81DA81F
- if_status3 USER, S_WATER_SPORT, Score_Down10
+ if_status3 USER, S_WATER_SPORT, Score_Minus10
end
AI_CBM_CalmMind: @ 81DA82A
- if_stat_level_equal USER, SP_ATTACK, 12, Score_Down10
- if_stat_level_equal USER, SP_DEFENSE, 12, Score_Down8
+ if_stat_level_equal USER, SP_ATTACK, 12, Score_Minus10
+ if_stat_level_equal USER, SP_DEFENSE, 12, Score_Minus8
end
AI_CBM_DragonDance: @ 81DA83B
- if_stat_level_equal USER, ATTACK, 12, Score_Down10
- if_stat_level_equal USER, SPEED, 12, Score_Down8
+ if_stat_level_equal USER, ATTACK, 12, Score_Minus10
+ if_stat_level_equal USER, SPEED, 12, Score_Minus8
end
-Score_Down1: @ 81DA84C
+Score_Minus1: @ 81DA84C
score -1
end
-Score_Down2: @ 81DA84F
+Score_Minus2: @ 81DA84F
score -2
end
-Score_Down3: @ 81DA852
+Score_Minus3: @ 81DA852
score -3
end
-Score_Down5: @ 81DA855
+Score_Minus5: @ 81DA855
score -5
end
-Score_Down8: @ 81DA858
+Score_Minus8: @ 81DA858
score -8
end
-Score_Down10: @ 81DA85B
+Score_Minus10: @ 81DA85B
score -10
end
-Score_Down12: @ 81DA85E
+Score_Minus12: @ 81DA85E
score -12
end
@@ -788,7 +788,7 @@ AI_CV_SelfKO_Encourage1: @ 81DAB94
if_hp_less_than USER, 80, AI_CV_SelfKO_Encourage2
if_would_go_first USER, AI_CV_SelfKO_Encourage2
if_random_less_than 50, AI_CV_SelfKO_End
- jump Score_Down3
+ jump Score_Minus3
AI_CV_SelfKO_Encourage2: @ 81DABAC
if_hp_more_than USER, 50, AI_CV_SelfKO_Encourage4
@@ -1354,7 +1354,7 @@ AI_CV_Conversion: @ 81DB17A
AI_CV_Conversion2: @ 81DB183
get_turn_count
if_equal 0, AI_CV_Conversion_End
- if_random_less_than 200, Score_Down2
+ if_random_less_than 200, Score_Minus2
AI_CV_Conversion_End: @ 81DB190
end
@@ -2695,7 +2695,7 @@ AI_CV_DragonDance_End: @ 81DBE96
AI_TryToFaint: @ 81DBE97
if_can_faint AI_TryToFaint_TryToEncourageQuickAttack
is_most_powerful_move
- if_equal 1, Score_Down1
+ if_equal 1, Score_Minus1
end
AI_TryToFaint_TryToEncourageQuickAttack: @ 81DBEA4
diff --git a/data/battle_anim_80CA710.s b/data/battle_anim_80CA710.s
index 562bd3090..b5ca446cf 100644
--- a/data/battle_anim_80CA710.s
+++ b/data/battle_anim_80CA710.s
@@ -20,16 +20,16 @@ gSpriteAnimTable_83D6220:: @ 83D6220
.4byte gSpriteAnim_83D61FC
.align 2
-gBattleAnimSpriteTemplate_83D6224:: @ 83D6224
- spr_template 10067, 10067, gOamData_837DF64, gSpriteAnimTable_83D6220, NULL, gDummySpriteAffineAnimTable, sub_80CA710
+gSleepPowderParticleSpriteTemplate:: @ 83D6224
+ spr_template 10067, 10067, gOamData_837DF64, gSpriteAnimTable_83D6220, NULL, gDummySpriteAffineAnimTable, AnimMovePowderParticle
.align 2
-gBattleAnimSpriteTemplate_83D623C:: @ 83D623C
- spr_template 10068, 10068, gOamData_837DF64, gSpriteAnimTable_83D6220, NULL, gDummySpriteAffineAnimTable, sub_80CA710
+gStunSporeParticleSpriteTemplate:: @ 83D623C
+ spr_template 10068, 10068, gOamData_837DF64, gSpriteAnimTable_83D6220, NULL, gDummySpriteAffineAnimTable, AnimMovePowderParticle
.align 2
-gBattleAnimSpriteTemplate_83D6254:: @ 83D6254
- spr_template 10065, 10065, gOamData_837DF64, gSpriteAnimTable_83D6220, NULL, gDummySpriteAffineAnimTable, sub_80CA710
+gPoisonPowderParticleSpriteTemplate:: @ 83D6254
+ spr_template 10065, 10065, gOamData_837DF64, gSpriteAnimTable_83D6220, NULL, gDummySpriteAffineAnimTable, AnimMovePowderParticle
.align 2
gSpriteAnim_83D626C:: @ 83D626C
@@ -163,8 +163,8 @@ gSpriteAnimTable_83D63C0:: @ 83D63C0
.4byte gSpriteAnim_83D63B4
.align 2
-gBattleAnimSpriteTemplate_83D63C8:: @ 83D63C8
- spr_template 10006, 10006, gOamData_837DF2C, gSpriteAnimTable_83D63C0, NULL, gDummySpriteAffineAnimTable, sub_80CAB18
+gLeechSeedSpriteTemplate:: @ 83D63C8
+ spr_template 10006, 10006, gOamData_837DF2C, gSpriteAnimTable_83D63C0, NULL, gDummySpriteAffineAnimTable, AnimLeechSeed
.align 2
gSpriteAnim_83D63E0:: @ 83D63E0
@@ -243,7 +243,7 @@ gBattleAnimSpriteTemplate_83D649C:: @ 83D649C
.align 2
gBattleAnimSpriteTemplate_83D64B4:: @ 83D64B4
- spr_template 10063, 10063, gOamData_837DF2C, gSpriteAnimTable_83D6494, NULL, gDummySpriteAffineAnimTable, sub_80CB144
+ spr_template 10063, 10063, gOamData_837DF2C, gSpriteAnimTable_83D6494, NULL, gDummySpriteAffineAnimTable, AnimMoveTwisterParticle
.align 2
gSpriteAnim_83D64CC:: @ 83D64CC
@@ -259,7 +259,7 @@ gSpriteAnimTable_83D64E0:: @ 83D64E0
.align 2
gBattleAnimSpriteTemplate_83D64E4:: @ 83D64E4
- spr_template 10160, 10160, gOamData_837DF54, gSpriteAnimTable_83D64E0, NULL, gDummySpriteAffineAnimTable, sub_80CAFD0
+ spr_template 10160, 10160, gOamData_837DF54, gSpriteAnimTable_83D64E0, NULL, gDummySpriteAffineAnimTable, AnimTranslateLinearSingleSineWave
.align 2
gSpriteAffineAnim_83D64FC:: @ 83D64FC
@@ -271,8 +271,8 @@ gSpriteAffineAnimTable_83D650C:: @ 83D650C
.4byte gSpriteAffineAnim_83D64FC
.align 2
-gBattleAnimSpriteTemplate_83D6510:: @ 83D6510
- spr_template 10174, 10174, gOamData_837DF94, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D650C, sub_80CAFD0
+gSwiftStarSpriteTemplate:: @ 83D6510
+ spr_template 10174, 10174, gOamData_837DF94, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D650C, AnimTranslateLinearSingleSineWave
.align 2
gSpriteAnim_83D6528:: @ 83D6528
@@ -737,8 +737,8 @@ gSpriteAnimTable_83D6B24:: @ 83D6B24
.4byte gSpriteAnim_83D6B10
.align 2
-gBattleAnimSpriteTemplate_83D6B28:: @ 83D6B28
- spr_template 10138, 10138, gOamData_837E054, gSpriteAnimTable_83D6B24, NULL, gDummySpriteAffineAnimTable, sub_80CC914
+gCuttingSliceSpriteTemplate:: @ 83D6B28
+ spr_template 10138, 10138, gOamData_837E054, gSpriteAnimTable_83D6B24, NULL, gDummySpriteAffineAnimTable, AnimCuttingSlice
.align 2
gBattleAnimSpriteTemplate_83D6B40:: @ 83D6B40
@@ -1031,7 +1031,7 @@ gBattleAnimSpriteTemplate_83D6EF0:: @ 83D6EF0
.align 2
gBattleAnimSpriteTemplate_83D6F08:: @ 83D6F08
- spr_template 10017, 10017, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807941C
+ spr_template 10017, 10017, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation
.align 2
gSpriteAnim_83D6F20:: @ 83D6F20
@@ -1457,8 +1457,8 @@ gBattleAnimSpriteTemplate_83D748C:: @ 83D748C
spr_template 10005, 10005, gOamData_837E0FC, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D7488, sub_80CF690
.align 2
-gBattleAnimSpriteTemplate_83D74A4:: @ 83D74A4
- spr_template 10003, 10003, gOamData_837E134, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80CF6DC
+gSonicBoomSpriteTemplate:: @ 83D74A4
+ spr_template 10003, 10003, gOamData_837E134, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, AnimSonicBoomProjectile
.align 2
gSpriteTemplate_83D74BC:: @ 83D74BC
@@ -1490,16 +1490,16 @@ gSpriteAffineAnimTable_83D7530:: @ 83D7530
.4byte gSpriteAffineAnim_83D74EC
.align 2
-gBattleAnimSpriteTemplate_83D7534:: @ 83D7534
- spr_template 10163, 10163, gOamData_837E034, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, sub_807941C
+gSupersonicWaveSpriteTemplate:: @ 83D7534
+ spr_template 10163, 10163, gOamData_837E034, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, TranslateAnimSpriteToTargetMonLocation
.align 2
-gBattleAnimSpriteTemplate_83D754C:: @ 83D754C
- spr_template 10164, 10164, gOamData_837E034, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, sub_807941C
+gScreechWaveSpriteTemplate:: @ 83D754C
+ spr_template 10164, 10164, gOamData_837E034, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, TranslateAnimSpriteToTargetMonLocation
.align 2
gBattleAnimSpriteTemplate_83D7564:: @ 83D7564
- spr_template 10260, 10260, gOamData_837E03C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, sub_807941C
+ spr_template 10260, 10260, gOamData_837E03C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D752C, TranslateAnimSpriteToTargetMonLocation
.align 2
gBattleAnimSpriteTemplate_83D757C:: @ 83D757C
@@ -1887,12 +1887,12 @@ gSpriteAffineAnimTable_83D7B10:: @ 83D7B10
.4byte gSpriteAffineAnim_83D7AF8
.align 2
-gBattleAnimSpriteTemplate_83D7B14:: @ 83D7B14
- spr_template 10217, 10217, gOamData_837DF8C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D7B10, sub_80D26A4
+gHiddenPowerOrbSpriteTemplate:: @ 83D7B14
+ spr_template 10217, 10217, gOamData_837DF8C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D7B10, AnimOrbitFast
.align 2
-gBattleAnimSpriteTemplate_83D7B2C:: @ 83D7B2C
- spr_template 10217, 10217, gOamData_837DFEC, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D7B10, sub_80D27E0
+gHiddenPowerOrbScatterSpriteTemplate:: @ 83D7B2C
+ spr_template 10217, 10217, gOamData_837DFEC, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D7B10, AnimOrbitScatter
.align 2
gSpriteAffineAnim_83D7B44:: @ 83D7B44
@@ -2448,20 +2448,20 @@ gSpriteAnimTable_83D95E0:: @ 83D95E0
.4byte gSpriteAnim_83D95C8
.align 2
-gBattleAnimSpriteTemplate_83D95E4:: @ 83D95E4
- spr_template 10029, 10029, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807941C
+gEmberSpriteTemplate:: @ 83D95E4
+ spr_template 10029, 10029, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation
.align 2
-gBattleAnimSpriteTemplate_83D95FC:: @ 83D95FC
- spr_template 10029, 10029, gOamData_837DF34, gSpriteAnimTable_83D95E0, NULL, gDummySpriteAffineAnimTable, sub_80D51A8
+gEmberFlareSpriteTemplate:: @ 83D95FC
+ spr_template 10029, 10029, gOamData_837DF34, gSpriteAnimTable_83D95E0, NULL, gDummySpriteAffineAnimTable, AnimEmberFlare
.align 2
gBattleAnimSpriteTemplate_83D9614:: @ 83D9614
spr_template 10029, 10029, gOamData_837DF34, gSpriteAnimTable_83D95E0, NULL, gDummySpriteAffineAnimTable, sub_80D5210
.align 2
-gBattleAnimSpriteTemplate_83D962C:: @ 83D962C
- spr_template 10029, 10029, gOamData_837DF34, gSpriteAnimTable_83D95E0, NULL, gDummySpriteAffineAnimTable, sub_80D522C
+gFireRingSpriteTemplate:: @ 83D962C
+ spr_template 10029, 10029, gOamData_837DF34, gSpriteAnimTable_83D95E0, NULL, gDummySpriteAffineAnimTable, AnimFireRing
.align 2
gSpriteAnim_83D9644:: @ 83D9644
@@ -2489,8 +2489,8 @@ gSpriteAffineAnimTable_83D9674:: @ 83D9674
.4byte gSpriteAffineAnim_83D9664
.align 2
-gBattleAnimSpriteTemplate_83D967C:: @ 83D967C
- spr_template 10029, 10029, gOamData_837DF34, gSpriteAnimTable_83D9650, NULL, gDummySpriteAffineAnimTable, sub_80D5374
+gFireCrossSpriteTemplate:: @ 83D967C
+ spr_template 10029, 10029, gOamData_837DF34, gSpriteAnimTable_83D9650, NULL, gDummySpriteAffineAnimTable, AnimFireCross
.align 2
gBattleAnimSpriteTemplate_83D9694:: @ 83D9694
@@ -2631,7 +2631,7 @@ gBattleAnimSpriteTemplate_83D985C:: @ 83D985C
.align 2
gBattleAnimSpriteTemplate_83D9874:: @ 83D9874
- spr_template 10171, 10171, gOamData_837DF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807941C
+ spr_template 10171, 10171, gOamData_837DF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation
.align 2
gSpriteAffineAnim_83D988C:: @ 83D988C
@@ -2677,7 +2677,7 @@ gBattleAnimSpriteTemplate_83D9908:: @ 83D9908
spr_template 10011, 10011, gOamData_837DF8C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83D989C, sub_80D6658
.align 2
-gBattleAnimSpriteTemplate_83D9920:: @ 83D9920
+gElectricitySpriteTemplate:: @ 83D9920
spr_template 10011, 10011, gOamData_837DF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80D679C
.align 2
@@ -3137,7 +3137,7 @@ gBattleAnimSpriteTemplate_83D9F0C:: @ 83D9F0C
.align 2
gSpriteTemplate_83D9F24:: @ 83D9F24
- spr_template 10050, 10050, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, unc_080B08A0
+ spr_template 10050, 10050, gOamData_837DF34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_080B08A0
.align 2
gSpriteAnim_83D9F3C:: @ 83D9F3C
@@ -3187,8 +3187,8 @@ gBattleAnimSpriteTemplate_83D9F90:: @ 83D9F90
spr_template 10143, 10143, gOamData_837DF34, gSpriteAnimTable_83D9F64, NULL, gDummySpriteAffineAnimTable, sub_80D9078
.align 2
-gBattleAnimSpriteTemplate_83D9FA8:: @ 83D9FA8
- spr_template 10143, 10143, gOamData_837DF34, gSpriteAnimTable_83D9F64, NULL, gDummySpriteAffineAnimTable, sub_80D90A4
+gFistFootSpriteTemplate:: @ 83D9FA8
+ spr_template 10143, 10143, gOamData_837DF34, gSpriteAnimTable_83D9F64, NULL, gDummySpriteAffineAnimTable, AnimBasicFistOrFoot
.align 2
gBattleAnimSpriteTemplate_83D9FC0:: @ 83D9FC0
@@ -3214,7 +3214,7 @@ gSpriteAffineAnimTable_83DA020:: @ 83DA020
.align 2
gBattleAnimSpriteTemplate_83DA024:: @ 83DA024
- spr_template 10143, 10143, gOamData_837DFF4, gSpriteAnimTable_83D9F64, NULL, gSpriteAffineAnimTable_83DA020, sub_80D943C
+ spr_template 10143, 10143, gOamData_837DFF4, gSpriteAnimTable_83D9F64, NULL, gSpriteAffineAnimTable_83DA020, AnimSpinningKickOrPunch
.align 2
gSpriteAffineAnim_83DA03C:: @ 83DA03C
@@ -3227,12 +3227,12 @@ gSpriteAffineAnimTable_83DA054:: @ 83DA054
.4byte gSpriteAffineAnim_83DA03C
.align 2
-gBattleAnimSpriteTemplate_83DA058:: @ 83DA058
- spr_template 10143, 10143, gOamData_837DFF4, gSpriteAnimTable_83D9F64, NULL, gSpriteAffineAnimTable_83DA054, sub_80D943C
+gMegaPunchKickSpriteTemplate:: @ 83DA058
+ spr_template 10143, 10143, gOamData_837DFF4, gSpriteAnimTable_83D9F64, NULL, gSpriteAffineAnimTable_83DA054, AnimSpinningKickOrPunch
.align 2
-gBattleAnimSpriteTemplate_83DA070:: @ 83DA070
- spr_template 10143, 10143, gOamData_837DF34, gSpriteAnimTable_83D9F68, NULL, gDummySpriteAffineAnimTable, sub_80D94A8
+gStompFootSpriteTemplate:: @ 83DA070
+ spr_template 10143, 10143, gOamData_837DF34, gSpriteAnimTable_83D9F68, NULL, gDummySpriteAffineAnimTable, AnimStompFoot
.align 2
gBattleAnimSpriteTemplate_83DA088:: @ 83DA088
@@ -3447,12 +3447,12 @@ gSpriteAffineAnimTable_83DA34C:: @ 83DA34C
.4byte gSpriteAffineAnim_83DA334
.align 2
-gBattleAnimSpriteTemplate_83DA350:: @ 83DA350
- spr_template 10150, 10150, gOamData_837DF8C, gSpriteAnimTable_83DA274, NULL, gSpriteAffineAnimTable_83DA34C, sub_80D9F88
+gPoisonBubbleSpriteTemplate:: @ 83DA350
+ spr_template 10150, 10150, gOamData_837DF8C, gSpriteAnimTable_83DA274, NULL, gSpriteAffineAnimTable_83DA34C, AnimBubbleEffect
.align 2
-gBattleAnimSpriteTemplate_83DA368:: @ 83DA368
- spr_template 10155, 10155, gOamData_837E0AC, gSpriteAnimTable_83D9310, NULL, gSpriteAffineAnimTable_83DA34C, sub_80D9F88
+gWaterBubbleSpriteTemplate:: @ 83DA368
+ spr_template 10155, 10155, gOamData_837E0AC, gSpriteAnimTable_83D9310, NULL, gSpriteAffineAnimTable_83DA34C, AnimBubbleEffect
.align 2
gBattleAnimSpriteTemplate_83DA380:: @ 83DA380
@@ -3713,7 +3713,7 @@ gBattleAnimSpriteTemplate_83DA76C:: @ 83DA76C
.align 2
gBattleAnimSpriteTemplate_83DA784:: @ 83DA784
- spr_template 10163, 10163, gOamData_837DF74, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807941C
+ spr_template 10163, 10163, gOamData_837DF74, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, TranslateAnimSpriteToTargetMonLocation
.align 2
gSpriteAnim_83DA79C:: @ 83DA79C
@@ -3970,16 +3970,16 @@ gBattleAnimSpriteTemplate_83DAB74:: @ 83DAB74
spr_template 10181, 10181, gOamData_837E11C, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83DAB70, sub_80DCB38
.align 2
-gBattleAnimSpriteTemplate_83DAB8C:: @ 83DAB8C
- spr_template 10161, 10161, gOamData_837DF8C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80DCBCC
+gLinearStingerSpriteTemplate:: @ 83DAB8C
+ spr_template 10161, 10161, gOamData_837DF8C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, AnimTranslateStinger
.align 2
-gBattleAnimSpriteTemplate_83DABA4:: @ 83DABA4
- spr_template 10161, 10161, gOamData_837DF8C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80DCCFC
+gPinMissileSpriteTemplate:: @ 83DABA4
+ spr_template 10161, 10161, gOamData_837DF8C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, AnimMissileArc
.align 2
-gBattleAnimSpriteTemplate_83DABBC:: @ 83DABBC
- spr_template 10262, 10262, gOamData_837DF94, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_80DCCFC
+gIcicleSpearSpriteTemplate:: @ 83DABBC
+ spr_template 10262, 10262, gOamData_837DF94, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, AnimMissileArc
.align 2
gSpriteAffineAnim_83DABD4:: @ 83DABD4
@@ -4151,7 +4151,7 @@ gBattleAnimSpriteTemplate_83DAE00:: @ 83DAE00
.align 2
gBattleAnimSpriteTemplate_83DAE18:: @ 83DAE18
- spr_template 10058, 10058, gOamData_837DF34, gSpriteAnimTable_83DAD58, NULL, gSpriteAffineAnimTable_83DADE0, sub_80CB144
+ spr_template 10058, 10058, gOamData_837DF34, gSpriteAnimTable_83DAD58, NULL, gSpriteAffineAnimTable_83DADE0, AnimMoveTwisterParticle
.align 2
gBattleAnimSpriteTemplate_83DAE30:: @ 83DAE30
@@ -4614,7 +4614,7 @@ gSpriteAffineAnimTable_83DB498:: @ 83DB498
.4byte gSpriteAffineAnim_83DB480
.align 2
-gBattleAnimSpriteTemplate_83DB4A8:: @ 83DB4A8
+gBasicHitSplatSpriteTemplate:: @ 83DB4A8
spr_template 10135, 10135, gOamData_837E0B4, gDummySpriteAnimTable, NULL, gSpriteAffineAnimTable_83DB498, sub_80E27A0
.align 2
diff --git a/data/battle_anim_scripts.s b/data/battle_anim_scripts.s
index 2068db4ff..540d6d531 100644
--- a/data/battle_anim_scripts.s
+++ b/data/battle_anim_scripts.s
@@ -1,3 +1,5 @@
+#include "constants/battle_anim.h"
+#include "constants/moves.h"
#include "constants/songs.h"
.include "include/macros.inc"
.include "include/macros/battle_anim.inc"
@@ -5,10 +7,10 @@
.section script_data, "aw", %progbits
-gUnknown_081C7160:: @ 81C7160
- .2byte 47
- .2byte 195
- .2byte 320
+gSingingMoves:: @ 81C7160
+ .2byte MOVE_SING
+ .2byte MOVE_PERISH_SONG
+ .2byte MOVE_GRASS_WHISTLE
.2byte -1
.align 2
@@ -419,2761 +421,2761 @@ gBattleAnims_Special:: @ 81C7778
.4byte Special_MonToSubstitute
Move_POUND: @ 81C7794
- loadsprite 10135
- monbg 1
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- panse_19 SE_W003, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W003, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_DOUBLE_SLAP: @ 81C77C5
- loadsprite 10135
- monbg 1
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- ifelse _81C77F0, _81C7804
-_81C77D6:
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- panse_19 SE_W003, 63
- wait
- clearmonbg 1
+ choosetwoturnanim Move_DOUBLE_SLAP_FirstHit, Move_DOUBLE_SLAP_SecondHit
+Move_DOUBLE_SLAP_End:
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ playsewithpan SE_W003, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
-_81C77F0:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -8, 0, 1, 2
- jump _81C77D6
-_81C7804:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 8, 0, 1, 2
- jump _81C77D6
+Move_DOUBLE_SLAP_FirstHit:
+ createsprite gBasicHitSplatSpriteTemplate, 2, -8, 0, 1, 2
+ goto Move_DOUBLE_SLAP_End
+Move_DOUBLE_SLAP_SecondHit:
+ createsprite gBasicHitSplatSpriteTemplate, 2, 8, 0, 1, 2
+ goto Move_DOUBLE_SLAP_End
Move_POISON_POWDER: @ 81C7818
- loadsprite 10065
- loadsprite 10150
- panse_1C SE_W077, 63, 10, 6
- sprite gBattleAnimSpriteTemplate_83D6254, 130, -30, -22, 117, 80, 5, 1
- sprite gBattleAnimSpriteTemplate_83D6254, 130, 10, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D6254, 130, -25, -22, 117, 112, 5, 3
- pause 15
- sprite gBattleAnimSpriteTemplate_83D6254, 130, -5, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D6254, 130, 5, -22, 117, 96, 5, 1
- sprite gBattleAnimSpriteTemplate_83D6254, 130, 0, -22, 117, 69, -5, 1
- sprite gBattleAnimSpriteTemplate_83D6254, 130, -15, -22, 117, 112, 5, 2
- pause 30
- sprite gBattleAnimSpriteTemplate_83D6254, 130, -15, -22, 117, 112, 5, 2
- sprite gBattleAnimSpriteTemplate_83D6254, 130, 15, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D6254, 130, -10, -22, 117, 96, 7, 2
- sprite gBattleAnimSpriteTemplate_83D6254, 130, -5, -22, 117, 90, -8, 0
- pause 20
- sprite gBattleAnimSpriteTemplate_83D6254, 130, -10, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D6254, 130, 0, -22, 117, 89, 5, 2
- sprite gBattleAnimSpriteTemplate_83D6254, 130, 20, -22, 117, 112, -8, 2
- sprite gBattleAnimSpriteTemplate_83D6254, 130, 5, -22, 117, 80, 5, 1
- wait
+ loadspritegfx 10065
+ loadspritegfx 10150
+ loopsewithpan SE_W077, 63, 10, 6
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, -30, -22, 117, 80, 5, 1
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, 10, -22, 117, 80, -5, 1
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, -25, -22, 117, 112, 5, 3
+ delay 15
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, -5, -22, 117, 80, -5, 1
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, 5, -22, 117, 96, 5, 1
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, 0, -22, 117, 69, -5, 1
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, -15, -22, 117, 112, 5, 2
+ delay 30
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, -15, -22, 117, 112, 5, 2
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, 15, -22, 117, 80, -5, 1
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, -10, -22, 117, 96, 7, 2
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, -5, -22, 117, 90, -8, 0
+ delay 20
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, -10, -22, 117, 80, -5, 1
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, 0, -22, 117, 89, 5, 2
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, 20, -22, 117, 112, -8, 2
+ createsprite gPoisonPowderParticleSpriteTemplate, 130, 5, -22, 117, 80, 5, 1
+ waitforvisualfinish
end
Move_STUN_SPORE: @ 81C7949
- loadsprite 10068
- panse_1C SE_W077, 63, 10, 6
- sprite gBattleAnimSpriteTemplate_83D623C, 130, -30, -22, 117, 80, 5, 1
- sprite gBattleAnimSpriteTemplate_83D623C, 130, 10, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D623C, 130, -25, -22, 117, 112, 5, 3
- pause 15
- sprite gBattleAnimSpriteTemplate_83D623C, 130, -5, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D623C, 130, 5, -22, 117, 96, 5, 1
- sprite gBattleAnimSpriteTemplate_83D623C, 130, 0, -22, 117, 69, -5, 1
- sprite gBattleAnimSpriteTemplate_83D623C, 130, -15, -22, 117, 112, 5, 2
- pause 30
- sprite gBattleAnimSpriteTemplate_83D623C, 130, -15, -22, 117, 112, 5, 2
- sprite gBattleAnimSpriteTemplate_83D623C, 130, 15, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D623C, 130, -10, -22, 117, 96, 7, 2
- sprite gBattleAnimSpriteTemplate_83D623C, 130, -5, -22, 117, 90, -8, 0
- pause 20
- sprite gBattleAnimSpriteTemplate_83D623C, 130, -10, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D623C, 130, 0, -22, 117, 89, 5, 2
- sprite gBattleAnimSpriteTemplate_83D623C, 130, 20, -22, 117, 112, -8, 2
- sprite gBattleAnimSpriteTemplate_83D623C, 130, 5, -22, 117, 80, 5, 1
- wait
+ loadspritegfx 10068
+ loopsewithpan SE_W077, 63, 10, 6
+ createsprite gStunSporeParticleSpriteTemplate, 130, -30, -22, 117, 80, 5, 1
+ createsprite gStunSporeParticleSpriteTemplate, 130, 10, -22, 117, 80, -5, 1
+ createsprite gStunSporeParticleSpriteTemplate, 130, -25, -22, 117, 112, 5, 3
+ delay 15
+ createsprite gStunSporeParticleSpriteTemplate, 130, -5, -22, 117, 80, -5, 1
+ createsprite gStunSporeParticleSpriteTemplate, 130, 5, -22, 117, 96, 5, 1
+ createsprite gStunSporeParticleSpriteTemplate, 130, 0, -22, 117, 69, -5, 1
+ createsprite gStunSporeParticleSpriteTemplate, 130, -15, -22, 117, 112, 5, 2
+ delay 30
+ createsprite gStunSporeParticleSpriteTemplate, 130, -15, -22, 117, 112, 5, 2
+ createsprite gStunSporeParticleSpriteTemplate, 130, 15, -22, 117, 80, -5, 1
+ createsprite gStunSporeParticleSpriteTemplate, 130, -10, -22, 117, 96, 7, 2
+ createsprite gStunSporeParticleSpriteTemplate, 130, -5, -22, 117, 90, -8, 0
+ delay 20
+ createsprite gStunSporeParticleSpriteTemplate, 130, -10, -22, 117, 80, -5, 1
+ createsprite gStunSporeParticleSpriteTemplate, 130, 0, -22, 117, 89, 5, 2
+ createsprite gStunSporeParticleSpriteTemplate, 130, 20, -22, 117, 112, -8, 2
+ createsprite gStunSporeParticleSpriteTemplate, 130, 5, -22, 117, 80, 5, 1
+ waitforvisualfinish
end
Move_SLEEP_POWDER: @ 81C7A77
- loadsprite 10067
- panse_1C SE_W077, 63, 10, 6
- sprite gBattleAnimSpriteTemplate_83D6224, 130, -30, -22, 117, 80, 5, 1
- sprite gBattleAnimSpriteTemplate_83D6224, 130, 10, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D6224, 130, -25, -22, 117, 112, 5, 3
- pause 15
- sprite gBattleAnimSpriteTemplate_83D6224, 130, -5, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D6224, 130, 5, -22, 117, 96, 5, 1
- sprite gBattleAnimSpriteTemplate_83D6224, 130, 0, -22, 117, 69, -5, 1
- sprite gBattleAnimSpriteTemplate_83D6224, 130, -15, -22, 117, 112, 5, 2
- pause 30
- sprite gBattleAnimSpriteTemplate_83D6224, 130, -15, -22, 117, 112, 5, 2
- sprite gBattleAnimSpriteTemplate_83D6224, 130, 15, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D6224, 130, -10, -22, 117, 96, 7, 2
- sprite gBattleAnimSpriteTemplate_83D6224, 130, -5, -22, 117, 90, -8, 0
- pause 20
- sprite gBattleAnimSpriteTemplate_83D6224, 130, -10, -22, 117, 80, -5, 1
- sprite gBattleAnimSpriteTemplate_83D6224, 130, 0, -22, 117, 89, 5, 2
- sprite gBattleAnimSpriteTemplate_83D6224, 130, 20, -22, 117, 112, -8, 2
- sprite gBattleAnimSpriteTemplate_83D6224, 130, 5, -22, 117, 80, 5, 1
- wait
+ loadspritegfx 10067
+ loopsewithpan SE_W077, 63, 10, 6
+ createsprite gSleepPowderParticleSpriteTemplate, 130, -30, -22, 117, 80, 5, 1
+ createsprite gSleepPowderParticleSpriteTemplate, 130, 10, -22, 117, 80, -5, 1
+ createsprite gSleepPowderParticleSpriteTemplate, 130, -25, -22, 117, 112, 5, 3
+ delay 15
+ createsprite gSleepPowderParticleSpriteTemplate, 130, -5, -22, 117, 80, -5, 1
+ createsprite gSleepPowderParticleSpriteTemplate, 130, 5, -22, 117, 96, 5, 1
+ createsprite gSleepPowderParticleSpriteTemplate, 130, 0, -22, 117, 69, -5, 1
+ createsprite gSleepPowderParticleSpriteTemplate, 130, -15, -22, 117, 112, 5, 2
+ delay 30
+ createsprite gSleepPowderParticleSpriteTemplate, 130, -15, -22, 117, 112, 5, 2
+ createsprite gSleepPowderParticleSpriteTemplate, 130, 15, -22, 117, 80, -5, 1
+ createsprite gSleepPowderParticleSpriteTemplate, 130, -10, -22, 117, 96, 7, 2
+ createsprite gSleepPowderParticleSpriteTemplate, 130, -5, -22, 117, 90, -8, 0
+ delay 20
+ createsprite gSleepPowderParticleSpriteTemplate, 130, -10, -22, 117, 80, -5, 1
+ createsprite gSleepPowderParticleSpriteTemplate, 130, 0, -22, 117, 89, 5, 2
+ createsprite gSleepPowderParticleSpriteTemplate, 130, 20, -22, 117, 112, -8, 2
+ createsprite gSleepPowderParticleSpriteTemplate, 130, 5, -22, 117, 80, 5, 1
+ waitforvisualfinish
end
Move_SWIFT: @ 81C7BA5
- loadsprite 10174
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- panse_19 SE_W129, 192
- sprite gBattleAnimSpriteTemplate_83D6510, 131, 20, -10, 20, 0, 22, 20, 1
- pause 5
- panse_19 SE_W129, 192
- sprite gBattleAnimSpriteTemplate_83D6510, 131, 20, -10, 20, 5, 22, -18, 1
- pause 5
- panse_19 SE_W129, 192
- sprite gBattleAnimSpriteTemplate_83D6510, 131, 20, -10, 20, -10, 22, 15, 1
- createtask sub_80A7FA0, 2, 1, 2, 0, 18, 1
- createtask sub_80A7FA0, 2, 3, 2, 0, 18, 1
- pause 5
- panse_19 SE_W129, 192
- sprite gBattleAnimSpriteTemplate_83D6510, 131, 20, -10, 20, 0, 22, -20, 1
- pause 5
- panse_19 SE_W129, 192
- sprite gBattleAnimSpriteTemplate_83D6510, 131, 20, -10, 20, 0, 22, 12, 1
- pause 5
- wait
- clearmonbg 3
+ loadspritegfx 10174
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W129, 192
+ createsprite gSwiftStarSpriteTemplate, 131, 20, -10, 20, 0, 22, 20, 1
+ delay 5
+ playsewithpan SE_W129, 192
+ createsprite gSwiftStarSpriteTemplate, 131, 20, -10, 20, 5, 22, -18, 1
+ delay 5
+ playsewithpan SE_W129, 192
+ createsprite gSwiftStarSpriteTemplate, 131, 20, -10, 20, -10, 22, 15, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 18, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_DEF_PARTNER, 2, 0, 18, 1
+ delay 5
+ playsewithpan SE_W129, 192
+ createsprite gSwiftStarSpriteTemplate, 131, 20, -10, 20, 0, 22, -20, 1
+ delay 5
+ playsewithpan SE_W129, 192
+ createsprite gSwiftStarSpriteTemplate, 131, 20, -10, 20, 0, 22, 12, 1
+ delay 5
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_STRENGTH: @ 81C7C5E
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- panse_19 SE_W036, 192
- createtask sub_80A8314, 5, 0, 2, 0, 96, 30
- wait
- pause 10
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 4
- createtask sub_80A8500, 2, 1, 18, 6, 2, 4
- pause 4
- panse_19 SE_W025B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 16, 12, 1, 1
- pause 4
- panse_19 SE_W025B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, -16, -12, 1, 1
- pause 4
- panse_19 SE_W025B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 3, 4, 1, 1
- wait
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- wait
- clearmonbg 3
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W036, 192
+ createvisualtask AnimTask_ShakeAndSinkMon, 5, ANIM_BANK_ATTACKER, 2, 0, 96, 30
+ waitforvisualfinish
+ delay 10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 4
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_TARGET, 18, 6, 2, 4
+ delay 4
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 16, 12, 1, 1
+ delay 4
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, -16, -12, 1, 1
+ delay 4
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 3, 4, 1, 1
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_TACKLE: @ 81C7CF2
- loadsprite 10135
- monbg 1
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- panse_19 SE_W004, 63
- wait
- clearmonbg 1
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ playsewithpan SE_W004, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_BODY_SLAM: @ 81C7D30
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- panse_19 SE_W036, 192
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0
- wait
- pause 11
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 26, 0, 0, 5
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 4, -10, 0, 1, 0
- panse_1C SE_W025B, 63, 10, 2
- pause 1
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -28, 0, 0, 3
- wait
- createtask sub_80A8154, 2, 1, 4, 0, 12, 1
- wait
- pause 10
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 6
- pause 5
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 6
- wait
- clearmonbg 3
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W036, 192
+ createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER
+ waitforvisualfinish
+ delay 11
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 26, 0, 0, 5
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 4, -10, 0, 1, 0
+ loopsewithpan SE_W025B, 63, 10, 2
+ delay 1
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -28, 0, 0, 3
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 12, 1
+ waitforvisualfinish
+ delay 10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 6
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 6
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_SUPERSONIC: @ 81C7DBD
- loadsprite 10163
- monbg 2
- monbgprio_2A 0
- setalpha 12, 8
- createtask sub_80A7FA0, 2, 0, 2, 0, 8, 1
- call _81C7DFB
- call _81C7DFB
- call _81C7DFB
- call _81C7DFB
- call _81C7DFB
- call _81C7DFB
- wait
- clearmonbg 2
- blendoff
- end
-_81C7DFB:
- panse_19 SE_W048, 192
- sprite gBattleAnimSpriteTemplate_83D7534, 130, 16, 0, 0, 0, 30, 0
- pause 2
- ret
+ loadspritegfx 10163
+ monbg ANIM_BANK_ATK_PARTNER
+ monbgprio_2A ANIM_BANK_ATTACKER
+ setalpha 12, 8
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 2, 0, 8, 1
+ call Move_SUPERSONIC_CreateWaveSprite
+ call Move_SUPERSONIC_CreateWaveSprite
+ call Move_SUPERSONIC_CreateWaveSprite
+ call Move_SUPERSONIC_CreateWaveSprite
+ call Move_SUPERSONIC_CreateWaveSprite
+ call Move_SUPERSONIC_CreateWaveSprite
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
+ blendoff
+ end
+Move_SUPERSONIC_CreateWaveSprite:
+ playsewithpan SE_W048, 192
+ createsprite gSupersonicWaveSpriteTemplate, 130, 16, 0, 0, 0, 30, 0
+ delay 2
+ return
Move_SCREECH: @ 81C7E15
- loadsprite 10164
- createtask sub_80A7FA0, 2, 0, 3, 0, 2, 1
- call _81C7E48
- call _81C7E48
- pause 16
- createtask sub_80A8B88, 5, 0, 6, 2048, 2, 1
- wait
- end
-_81C7E48:
- panse_19 SE_W103, 192
- sprite gBattleAnimSpriteTemplate_83D754C, 130, 16, 0, 0, 0, 30, 0
- pause 2
- ret
+ loadspritegfx 10164
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 3, 0, 2, 1
+ call Move_SCREECH_CreateWaveSprite
+ call Move_SCREECH_CreateWaveSprite
+ delay 16
+ createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 2, 1
+ waitforvisualfinish
+ end
+Move_SCREECH_CreateWaveSprite:
+ playsewithpan SE_W103, 192
+ createsprite gScreechWaveSpriteTemplate, 130, 16, 0, 0, 0, 30, 0
+ delay 2
+ return
Move_FLAME_WHEEL: @ 81C7E62
- loadsprite 10029
- monbg 3
- monbgprio_2A 1
- sprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 0
- panse_19 SE_W172, 192
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 4
- panse_19 SE_W172, 192
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 8
- panse_19 SE_W172, 192
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 12
- panse_19 SE_W172, 192
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 16
- panse_19 SE_W172, 192
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 20
- panse_19 SE_W172, 192
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 24
- panse_19 SE_W172, 192
- wait
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 6
- pause 4
- createtask sub_80A7E7C, 2, 1, 5, 0, 8, 1
- createtask sub_8079790, 3, 1, 31, 12, 1, 1
- panse_19 SE_W172B, 63
+ loadspritegfx 10029
+ monbg ANIM_BANK_DEF_PARTNER
+ monbgprio_2A ANIM_BANK_TARGET
+ createsprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 0
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 4
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 8
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 12
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 16
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 20
+ playsewithpan SE_W172, 192
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 56, 24
+ playsewithpan SE_W172, 192
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 6
+ delay 4
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 8, 1
+ createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_BANK_TARGET, 31, 12, 1, 1
+ playsewithpan SE_W172B, 63
call _81D11A2
- pause 7
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 9
- wait
- clearmonbg 3
+ delay 7
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 9
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
Unknown_81C7F4C: @ 81C7F4C
- sprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 50
- pause 4
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9694, 3, 0, 0, 50
+ delay 4
+ return
Move_PIN_MISSILE: @ 81C7F5C
- loadsprite 10161
- loadsprite 10135
- monbg 1
+ loadspritegfx 10161
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- panse_19 SE_W026, 192
- sprite gBattleAnimSpriteTemplate_83DABA4, 2, 20, -8, -8, -8, 20, -32
- pause 15
- sprite gBattleAnimSpriteTemplate_83DABA4, 2, 20, -8, 8, 8, 20, -40
- pause 4
- panse_19 SE_W030, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, -8, -8, 1, 2
- createtask sub_80A7FA0, 2, 1, 3, 0, 2, 1
- pause 9
- sprite gBattleAnimSpriteTemplate_83DABA4, 2, 20, -8, 0, 0, 20, -32
- pause 4
- panse_19 SE_W030, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 8, 8, 1, 2
- createtask sub_80A7FA0, 2, 1, 3, 0, 2, 1
- pause 14
- panse_19 SE_W030, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 2
- createtask sub_80A7FA0, 2, 1, 3, 0, 2, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W026, 192
+ createsprite gPinMissileSpriteTemplate, 2, 20, -8, -8, -8, 20, -32
+ delay 15
+ createsprite gPinMissileSpriteTemplate, 2, 20, -8, 8, 8, 20, -40
+ delay 4
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, -8, -8, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 2, 1
+ delay 9
+ createsprite gPinMissileSpriteTemplate, 2, 20, -8, 0, 0, 20, -32
+ delay 4
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 8, 8, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 2, 1
+ delay 14
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 2, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_ICICLE_SPEAR: @ 81C8021
- loadsprite 10262
- loadsprite 10135
- monbg 1
+ loadspritegfx 10262
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- panse_19 SE_W196, 192
- sprite gBattleAnimSpriteTemplate_83DABBC, 2, 20, -8, -8, -8, 20, -32
- pause 15
- sprite gBattleAnimSpriteTemplate_83DABBC, 2, 20, -8, 8, 8, 20, -40
- pause 4
- panse_19 SE_W030, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, -8, -8, 1, 2
- createtask sub_80A7FA0, 2, 1, 3, 0, 2, 1
- pause 9
- sprite gBattleAnimSpriteTemplate_83DABBC, 2, 20, -8, 0, 0, 20, -32
- pause 4
- panse_19 SE_W030, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 8, 8, 1, 2
- createtask sub_80A7FA0, 2, 1, 3, 0, 2, 1
- pause 14
- panse_19 SE_W030, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 2
- createtask sub_80A7FA0, 2, 1, 3, 0, 2, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W196, 192
+ createsprite gIcicleSpearSpriteTemplate, 2, 20, -8, -8, -8, 20, -32
+ delay 15
+ createsprite gIcicleSpearSpriteTemplate, 2, 20, -8, 8, 8, 20, -40
+ delay 4
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, -8, -8, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 2, 1
+ delay 9
+ createsprite gIcicleSpearSpriteTemplate, 2, 20, -8, 0, 0, 20, -32
+ delay 4
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 8, 8, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 2, 1
+ delay 14
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 2, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_TAKE_DOWN: @ 81C80E6
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- panse_19 SE_W036, 192
- createtask sub_80A8920, 5, 0, -24, 8, 23, 10, 40, 10
- pause 35
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 10, 0, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 4, -10, 0, 1, 0
- panse_19 SE_W025B, 63
- pause 1
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -16, 0, 0, 4
- wait
- createtask sub_80A8154, 2, 1, 4, 0, 12, 1
- wait
- pause 2
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5
- pause 3
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 7
- wait
- clearmonbg 3
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W036, 192
+ createvisualtask AnimTask_WindUpLunge, 5, ANIM_BANK_ATTACKER, -24, 8, 23, 10, 40, 10
+ delay 35
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 10, 0, 0
+ createsprite gBasicHitSplatSpriteTemplate, 4, -10, 0, 1, 0
+ playsewithpan SE_W025B, 63
+ delay 1
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -16, 0, 0, 4
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 12, 1
+ waitforvisualfinish
+ delay 2
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5
+ delay 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 7
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_DOUBLE_EDGE: @ 81C817A
- loadsprite 10135
- panse_19 SE_W129, 192
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 2, 4, 2, 32767, 10, 0, 0
- wait
- pause 10
- panse_19 SE_W207, 192
- panse_1D SE_W207, 192, 8
- createtask sub_80A8500, 2, 0, 18, 6, 2, 4
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 16, 16, 32767
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 0, 0, 4
- pause 3
- wait
- panse_19 SE_W025B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 132, -10, 0, 1, 0
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -32, 0, 0, 3
- wait
- createtask sub_80A8E04, 2, 8, -256, 0, 0
- createtask sub_80A8E04, 2, 8, -256, 1, 0
- createtask sub_80A8154, 2, 0, 4, 0, 12, 1
- createtask sub_80A8154, 2, 1, 4, 0, 12, 1
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 32767
- wait
- createtask sub_80A8E04, 2, 8, -256, 0, 1
- createtask sub_80A8E04, 2, 8, -256, 1, 1
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5
- pause 3
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 7
- wait
+ loadspritegfx 10135
+ playsewithpan SE_W129, 192
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 2, 4, 2, 32767, 10, 0, 0
+ waitforvisualfinish
+ delay 10
+ playsewithpan SE_W207, 192
+ waitplaysewithpan SE_W207, 192, 8
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 18, 6, 2, 4
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 16, 16, 32767
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4
+ delay 3
+ waitforvisualfinish
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 132, -10, 0, 1, 0
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -32, 0, 0, 3
+ waitforvisualfinish
+ createvisualtask sub_80A8E04, 2, 8, -256, 0, 0
+ createvisualtask sub_80A8E04, 2, 8, -256, 1, 0
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 4, 0, 12, 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 12, 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 32767
+ waitforvisualfinish
+ createvisualtask sub_80A8E04, 2, 8, -256, 0, 1
+ createvisualtask sub_80A8E04, 2, 8, -256, 1, 1
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5
+ delay 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 7
+ waitforvisualfinish
end
Move_POISON_STING: @ 81C828D
- loadsprite 10161
- loadsprite 10135
- loadsprite 10150
- monbg 1
+ loadspritegfx 10161
+ loadspritegfx 10135
+ loadspritegfx 10150
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- panse_19 SE_W013B, 192
- sprite gBattleAnimSpriteTemplate_83DAB8C, 130, 20, 0, -8, 0, 20
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 2
- createtask sub_80A7FA0, 2, 1, 2, 0, 5, 1
- panse_19 SE_W030, 63
- wait
- call Unknown_81D5F87
- wait
- clearmonbg 1
+ playsewithpan SE_W013B, 192
+ createsprite gLinearStingerSpriteTemplate, 130, 20, 0, -8, 0, 20
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 5, 1
+ playsewithpan SE_W030, 63
+ waitforvisualfinish
+ call PoisonBubblesAnim
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_TWINEEDLE: @ 81C82E2
- loadsprite 10161
- loadsprite 10135
- monbg 1
+ loadspritegfx 10161
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- panse_1C SE_W013B, 192, 6, 2
- sprite gBattleAnimSpriteTemplate_83DAB8C, 130, 10, -4, 0, -4, 20
- sprite gBattleAnimSpriteTemplate_83DAB8C, 130, 20, 12, 10, 12, 20
- pause 20
- createtask sub_80A7FA0, 2, 1, 2, 0, 5, 1
- sprite gBattleAnimSpriteTemplate_83DB4C0, 3, 0, -4, 1, 3
- panse_1C SE_W030, 63, 5, 2
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB4C0, 3, 10, 12, 1, 3
- wait
- clearmonbg 1
+ loopsewithpan SE_W013B, 192, 6, 2
+ createsprite gLinearStingerSpriteTemplate, 130, 10, -4, 0, -4, 20
+ createsprite gLinearStingerSpriteTemplate, 130, 20, 12, 10, 12, 20
+ delay 20
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 5, 1
+ createsprite gBattleAnimSpriteTemplate_83DB4C0, 3, 0, -4, 1, 3
+ loopsewithpan SE_W030, 63, 5, 2
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB4C0, 3, 10, 12, 1, 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_FIRE_BLAST: @ 81C8355
- loadsprite 10029
- createtask_1F sub_812AF30, 144, 145
- call _81C83E9
- call _81C83E9
- call _81C83E9
- pause 24
- createtask sub_80E2A38, 10, 1, 3, 0, 8, 0
- wait
- pause 19
- createtask sub_80A7E7C, 2, 1, 5, 0, 20, 1
- call _81C842D
- pause 3
- call _81C842D
- pause 3
- call _81C842D
- pause 3
- call _81C842D
- pause 3
- call _81C842D
- pause 3
- call _81C842D
- pause 3
- call _81C842D
- pause 3
- call _81C842D
- pause 3
- call _81C842D
- wait
- createtask sub_80E2A38, 10, 1, 2, 8, 0, 0
- wait
- end
-_81C83E9:
- sprite gBattleAnimSpriteTemplate_83D962C, 130, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D962C, 130, 0, 0, 51
- sprite gBattleAnimSpriteTemplate_83D962C, 130, 0, 0, 102
- sprite gBattleAnimSpriteTemplate_83D962C, 130, 0, 0, 153
- sprite gBattleAnimSpriteTemplate_83D962C, 130, 0, 0, 204
- pause 5
- ret
-_81C842D:
- sprite gBattleAnimSpriteTemplate_83D967C, 130, 0, 0, 10, 0, -2
- sprite gBattleAnimSpriteTemplate_83D967C, 130, 0, 0, 13, -2, 0
- sprite gBattleAnimSpriteTemplate_83D967C, 130, 0, 0, 13, 2, 0
- sprite gBattleAnimSpriteTemplate_83D967C, 130, 0, 0, 15, -2, 2
- sprite gBattleAnimSpriteTemplate_83D967C, 130, 0, 0, 15, 2, 2
- ret
+ loadspritegfx 10029
+ createsoundtask sub_812AF30, 144, 145
+ call Move_FIRE_BLAST_CreateFireRing
+ call Move_FIRE_BLAST_CreateFireRing
+ call Move_FIRE_BLAST_CreateFireRing
+ delay 24
+ createvisualtask sub_80E2A38, 10, 1, 3, 0, 8, 0
+ waitforvisualfinish
+ delay 19
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 20, 1
+ call Move_FIRE_BLAST_CreateFireCross
+ delay 3
+ call Move_FIRE_BLAST_CreateFireCross
+ delay 3
+ call Move_FIRE_BLAST_CreateFireCross
+ delay 3
+ call Move_FIRE_BLAST_CreateFireCross
+ delay 3
+ call Move_FIRE_BLAST_CreateFireCross
+ delay 3
+ call Move_FIRE_BLAST_CreateFireCross
+ delay 3
+ call Move_FIRE_BLAST_CreateFireCross
+ delay 3
+ call Move_FIRE_BLAST_CreateFireCross
+ delay 3
+ call Move_FIRE_BLAST_CreateFireCross
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 1, 2, 8, 0, 0
+ waitforvisualfinish
+ end
+Move_FIRE_BLAST_CreateFireRing:
+ createsprite gFireRingSpriteTemplate, 130, 0, 0, 0
+ createsprite gFireRingSpriteTemplate, 130, 0, 0, 51
+ createsprite gFireRingSpriteTemplate, 130, 0, 0, 102
+ createsprite gFireRingSpriteTemplate, 130, 0, 0, 153
+ createsprite gFireRingSpriteTemplate, 130, 0, 0, 204
+ delay 5
+ return
+Move_FIRE_BLAST_CreateFireCross:
+ createsprite gFireCrossSpriteTemplate, 130, 0, 0, 10, 0, -2
+ createsprite gFireCrossSpriteTemplate, 130, 0, 0, 13, -2, 0
+ createsprite gFireCrossSpriteTemplate, 130, 0, 0, 13, 2, 0
+ createsprite gFireCrossSpriteTemplate, 130, 0, 0, 15, -2, 2
+ createsprite gFireCrossSpriteTemplate, 130, 0, 0, 15, 2, 2
+ return
Move_LEECH_SEED: @ 81C8483
- loadsprite 10006
- panse_19 SE_W077, 192
- sprite gBattleAnimSpriteTemplate_83D63C8, 130, 15, 0, 0, 24, 35, -32
- pause 8
- panse_19 SE_W077, 192
- sprite gBattleAnimSpriteTemplate_83D63C8, 130, 15, 0, -16, 24, 35, -40
- pause 8
- panse_19 SE_W077, 192
- sprite gBattleAnimSpriteTemplate_83D63C8, 130, 15, 0, 16, 24, 35, -37
- pause 12
- panse_1C SE_W039, 63, 10, 8
- wait
+ loadspritegfx 10006
+ playsewithpan SE_W077, 192
+ createsprite gLeechSeedSpriteTemplate, 130, 15, 0, 0, 24, 35, -32
+ delay 8
+ playsewithpan SE_W077, 192
+ createsprite gLeechSeedSpriteTemplate, 130, 15, 0, -16, 24, 35, -40
+ delay 8
+ playsewithpan SE_W077, 192
+ createsprite gLeechSeedSpriteTemplate, 130, 15, 0, 16, 24, 35, -37
+ delay 12
+ loopsewithpan SE_W039, 63, 10, 8
+ waitforvisualfinish
end
Move_EMBER: @ 81C84D9
- loadsprite 10029
- panse_1C SE_W052, 192, 5, 2
- sprite gBattleAnimSpriteTemplate_83D95E4, 130, 20, 0, -16, 24, 20, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D95E4, 130, 20, 0, 0, 24, 20, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D95E4, 130, 20, 0, 16, 24, 20, 1
- pause 16
- panse_19 SE_W172, 63
- call _81C8535
- call _81C8535
- call _81C8535
- end
-_81C8535:
- sprite gBattleAnimSpriteTemplate_83D95FC, 130, -24, 24, 24, 24, 20, 1, 1
- pause 4
- ret
+ loadspritegfx 10029
+ loopsewithpan SE_W052, 192, 5, 2
+ createsprite gEmberSpriteTemplate, 130, 20, 0, -16, 24, 20, 1
+ delay 4
+ createsprite gEmberSpriteTemplate, 130, 20, 0, 0, 24, 20, 1
+ delay 4
+ createsprite gEmberSpriteTemplate, 130, 20, 0, 16, 24, 20, 1
+ delay 16
+ playsewithpan SE_W172, 63
+ call Move_EMBER_CreateFlare
+ call Move_EMBER_CreateFlare
+ call Move_EMBER_CreateFlare
+ end
+Move_EMBER_CreateFlare:
+ createsprite gEmberFlareSpriteTemplate, 130, -24, 24, 24, 24, 20, 1, 1
+ delay 4
+ return
Move_MEGA_PUNCH: @ 81C854D
- loadsprite 10135
- loadsprite 10143
- monbg 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 16, 0
- setalpha 12, 8
- panse_19 SE_W025, 63
- sprite gBattleAnimSpriteTemplate_83DA058, 3, 0, 0, 0, 50
- createtask sub_80E2A38, 10, 4, 2, 0, 7, 32767
- pause 50
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg ANIM_BANK_TARGET
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 16, 0
+ setalpha 12, 8
+ playsewithpan SE_W025, 63
+ createsprite gMegaPunchKickSpriteTemplate, 3, 0, 0, 0, 50
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 7, 32767
+ delay 50
call _81C85E9
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 0
- createtask sub_80A7FA0, 2, 1, 4, 0, 22, 1
- createtask sub_80E2A38, 10, 4, 2, 0, 0, 32767
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 8, 0, 0
- panse_19 SE_W233B, 63
- wait
- clearmonbg 1
- blendoff
- pause 2
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 22, 1
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 0, 32767
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 8, 0, 0
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
+ blendoff
+ delay 2
restorebg
waitbgfadein
end
_81C85E9:
- pause 2
- createtask sub_80E4200, 2
- jumpvareq 7, 1, _81C8620
- createtask sub_812C924, 2
- jumpvareq 7, 0, _81C8612
- jumpvareq 7, 1, _81C8619
+ delay 2
+ createvisualtask sub_80E4200, 2
+ jumpargeq 7, 1, _81C8620
+ createvisualtask sub_812C924, 2
+ jumpargeq 7, 0, _81C8612
+ jumpargeq 7, 1, _81C8619
_81C8611:
- ret
+ return
_81C8612:
changebg 4
- jump _81C8611
+ goto _81C8611
_81C8619:
changebg 5
- jump _81C8611
+ goto _81C8611
_81C8620:
changebg 6
- jump _81C8611
+ goto _81C8611
Move_MEGA_KICK: @ 81C8627
- loadsprite 10135
- loadsprite 10143
- monbg 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 16, 0
- setalpha 12, 8
- panse_19 SE_W025, 63
- sprite gBattleAnimSpriteTemplate_83DA058, 3, 0, 0, 1, 50
- createtask sub_80E2A38, 10, 4, 2, 0, 7, 32767
- pause 50
- panse_19 SE_W025B, 63
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg ANIM_BANK_TARGET
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 16, 0
+ setalpha 12, 8
+ playsewithpan SE_W025, 63
+ createsprite gMegaPunchKickSpriteTemplate, 3, 0, 0, 1, 50
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 7, 32767
+ delay 50
+ playsewithpan SE_W025B, 63
call _81C85E9
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 0
- createtask sub_80A7FA0, 2, 1, 4, 0, 22, 1
- createtask sub_80E2A38, 10, 4, 2, 0, 0, 32767
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 8, 0, 0
- wait
- clearmonbg 1
- blendoff
- pause 2
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 22, 1
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 0, 32767
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 8, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
+ blendoff
+ delay 2
restorebg
waitbgfadein
end
Move_COMET_PUNCH: @ 81C86C3
- loadsprite 10135
- loadsprite 10143
- monbg 1
- setalpha 12, 8
- ifelse _81C86F1, _81C8716
-_81C86D7:
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- panse_19 SE_W004, 63
- wait
- clearmonbg 1
- blendoff
- end
-_81C86F1:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -8, -8, 1, 2
- sprite gBattleAnimSpriteTemplate_83D9FA8, 3, -8, 0, 8, 1, 0
- jump _81C86D7
-_81C8716:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 8, -8, 1, 2
- sprite gBattleAnimSpriteTemplate_83D9FA8, 3, 8, 0, 8, 1, 0
- jump _81C86D7
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ choosetwoturnanim Move_COMET_PUNCH_Even, Move_COMET_PUNCH_Odd
+Move_COMET_PUNCH_End:
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ playsewithpan SE_W004, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
+ blendoff
+ end
+Move_COMET_PUNCH_Even:
+ createsprite gBasicHitSplatSpriteTemplate, 2, -8, -8, 1, 2
+ createsprite gFistFootSpriteTemplate, 3, -8, 0, 8, 1, 0
+ goto Move_COMET_PUNCH_End
+Move_COMET_PUNCH_Odd:
+ createsprite gBasicHitSplatSpriteTemplate, 2, 8, -8, 1, 2
+ createsprite gFistFootSpriteTemplate, 3, 8, 0, 8, 1, 0
+ goto Move_COMET_PUNCH_End
Move_SONIC_BOOM: @ 81C873B
- loadsprite 10003
- loadsprite 10135
- monbg 3
+ loadspritegfx 10003
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- call _81C8772
- call _81C8772
- call _81C8772
- createtask sub_80A7E7C, 2, 1, 3, 0, 10, 1
- call _81C878A
- wait
- clearmonbg 3
- blendoff
- end
-_81C8772:
- panse_19 SE_W013B, 192
- sprite gBattleAnimSpriteTemplate_83D74A4, 130, 16, 0, 0, 0, 15
- pause 4
- ret
-_81C878A:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, 0, 1, 2
- pause 4
- ret
+ call Move_SONIC_BOOM_CreateBlast
+ call Move_SONIC_BOOM_CreateBlast
+ call Move_SONIC_BOOM_CreateBlast
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 10, 1
+ call Move_SONIC_BOOM_CreateHitSplat
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ blendoff
+ end
+Move_SONIC_BOOM_CreateBlast:
+ playsewithpan SE_W013B, 192
+ createsprite gSonicBoomSpriteTemplate, 130, 16, 0, 0, 0, 15
+ delay 4
+ return
+Move_SONIC_BOOM_CreateHitSplat:
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 2
+ delay 4
+ return
Move_THUNDER_SHOCK: @ 81C879C
- loadsprite 10001
- loadsprite 10011
- createtask sub_80E2A38, 10, 1, 0, 0, 6, 0
- wait
- pause 10
- createtask sub_80D681C, 5, 0, -44, 0
- panse_19 SE_W085, 63
- pause 9
- createtask sub_80E2A38, 10, 4, 0, 0, 13, 0
- wait
- createtask sub_80E2A38, 10, 4, 0, 13, 0, 0
- wait
- pause 20
- call Unknown_81D6100
- wait
- pause 20
- createtask sub_80E2A38, 10, 1, 0, 6, 0, 0
- wait
+ loadspritegfx 10001
+ loadspritegfx 10011
+ createvisualtask sub_80E2A38, 10, 1, 0, 0, 6, 0
+ waitforvisualfinish
+ delay 10
+ createvisualtask sub_80D681C, 5, 0, -44, 0
+ playsewithpan SE_W085, 63
+ delay 9
+ createvisualtask sub_80E2A38, 10, 4, 0, 0, 13, 0
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 4, 0, 13, 0, 0
+ waitforvisualfinish
+ delay 20
+ call ElectricityEffect
+ waitforvisualfinish
+ delay 20
+ createvisualtask sub_80E2A38, 10, 1, 0, 6, 0, 0
+ waitforvisualfinish
end
Move_THUNDERBOLT: @ 81C880A
- loadsprite 10001
- loadsprite 10282
- loadsprite 10011
- createtask sub_80E2A38, 10, 1, 0, 0, 6, 0
- wait
- pause 10
- createtask sub_80D681C, 5, 24, -52, 0
- panse_19 SE_W085, 63
- pause 7
- createtask sub_80D681C, 5, -24, -52, 0
- panse_19 SE_W085, 63
- pause 7
- createtask sub_80D681C, 5, 0, -60, 1
- panse_19 SE_W085, 63
- pause 9
- createtask sub_80E2A38, 10, 4, 0, 0, 13, 0
- wait
- createtask sub_80E2A38, 10, 4, 0, 13, 0, 0
- wait
- pause 20
- sprite gBattleAnimSpriteTemplate_83D98F0, 131, 44, 0, 0, 3
- sprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 32, 44, 0, 40, 0, -32765
- sprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 32, 44, 64, 40, 1, -32765
- sprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 32, 44, 128, 40, 0, -32765
- sprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 32, 44, 192, 40, 2, -32765
- sprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 16, 44, 32, 40, 0, -32765
- sprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 16, 44, 96, 40, 1, -32765
- sprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 16, 44, 160, 40, 0, -32765
- sprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 16, 44, 224, 40, 2, -32765
- panse_19 SE_W063, 63
- pause 0
- createtask sub_80E2A38, 10, 1, 0, 2, 2, 0
- pause 6
- createtask sub_80E2A38, 10, 1, 0, 6, 6, 0
- pause 6
- createtask sub_80E2A38, 10, 1, 0, 2, 2, 0
- pause 6
- createtask sub_80E2A38, 10, 1, 0, 6, 6, 0
- wait
- pause 20
- panse_1D SE_W085B, 63, 19
- call Unknown_81D6100
- wait
- pause 20
- createtask sub_80E2A38, 10, 1, 0, 6, 0, 0
- wait
+ loadspritegfx 10001
+ loadspritegfx 10282
+ loadspritegfx 10011
+ createvisualtask sub_80E2A38, 10, 1, 0, 0, 6, 0
+ waitforvisualfinish
+ delay 10
+ createvisualtask sub_80D681C, 5, 24, -52, 0
+ playsewithpan SE_W085, 63
+ delay 7
+ createvisualtask sub_80D681C, 5, -24, -52, 0
+ playsewithpan SE_W085, 63
+ delay 7
+ createvisualtask sub_80D681C, 5, 0, -60, 1
+ playsewithpan SE_W085, 63
+ delay 9
+ createvisualtask sub_80E2A38, 10, 4, 0, 0, 13, 0
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 4, 0, 13, 0, 0
+ waitforvisualfinish
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83D98F0, 131, 44, 0, 0, 3
+ createsprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 32, 44, 0, 40, 0, -32765
+ createsprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 32, 44, 64, 40, 1, -32765
+ createsprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 32, 44, 128, 40, 0, -32765
+ createsprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 32, 44, 192, 40, 2, -32765
+ createsprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 16, 44, 32, 40, 0, -32765
+ createsprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 16, 44, 96, 40, 1, -32765
+ createsprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 16, 44, 160, 40, 0, -32765
+ createsprite gBattleAnimSpriteTemplate_83D9908, 132, 0, 0, 16, 44, 224, 40, 2, -32765
+ playsewithpan SE_W063, 63
+ delay 0
+ createvisualtask sub_80E2A38, 10, 1, 0, 2, 2, 0
+ delay 6
+ createvisualtask sub_80E2A38, 10, 1, 0, 6, 6, 0
+ delay 6
+ createvisualtask sub_80E2A38, 10, 1, 0, 2, 2, 0
+ delay 6
+ createvisualtask sub_80E2A38, 10, 1, 0, 6, 6, 0
+ waitforvisualfinish
+ delay 20
+ waitplaysewithpan SE_W085B, 63, 19
+ call ElectricityEffect
+ waitforvisualfinish
+ delay 20
+ createvisualtask sub_80E2A38, 10, 1, 0, 6, 0, 0
+ waitforvisualfinish
end
Move_THUNDER_WAVE: @ 81C89C0
- loadsprite 10001
- loadsprite 10011
- loadsprite 10173
- createtask sub_80E2A38, 10, 1, 0, 0, 6, 0
- wait
- pause 10
- createtask sub_80D681C, 5, 0, -48, 0
- panse_19 SE_W086, 63
- pause 20
- panse_1C SE_W085B, 63, 10, 4
- sprite gBattleAnimSpriteTemplate_83D9950, 130, -16, -16
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9950, 130, -16, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9950, 130, -16, 16
- wait
- createtask sub_80E2A38, 10, 1, 0, 6, 0, 0
- wait
+ loadspritegfx 10001
+ loadspritegfx 10011
+ loadspritegfx 10173
+ createvisualtask sub_80E2A38, 10, 1, 0, 0, 6, 0
+ waitforvisualfinish
+ delay 10
+ createvisualtask sub_80D681C, 5, 0, -48, 0
+ playsewithpan SE_W086, 63
+ delay 20
+ loopsewithpan SE_W085B, 63, 10, 4
+ createsprite gBattleAnimSpriteTemplate_83D9950, 130, -16, -16
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9950, 130, -16, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9950, 130, -16, 16
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 1, 0, 6, 0, 0
+ waitforvisualfinish
end
Move_BEAT_UP: @ 81C8A2F
- loadsprite 10135
- loadsprite 10143
- monbg 1
- setalpha 12, 8
- ifelse _81C8A48, _81C8AB9
-_81C8A43:
- wait
- clearmonbg 1
- blendoff
- end
-_81C8A48:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, -20, -20, 1, 2
- sprite gBattleAnimSpriteTemplate_83D9FA8, 131, -20, -12, 8, 1, 0
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- panse_19 SE_W233B, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 8, 0, 1, 2
- sprite gBattleAnimSpriteTemplate_83D9FA8, 131, 8, 8, 8, 1, 0
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- panse_19 SE_W233B, 63
- jump _81C8A43
-_81C8AB9:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 12, -20, 1, 2
- sprite gBattleAnimSpriteTemplate_83D9FA8, 131, 12, -12, 8, 1, 0
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- panse_19 SE_W233B, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, -12, 0, 1, 2
- sprite gBattleAnimSpriteTemplate_83D9FA8, 131, -12, 8, 8, 1, 0
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- panse_19 SE_W233B, 63
- jump _81C8A43
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ choosetwoturnanim Move_BEAT_UP_Even, Move_BEAT_UP_Odd
+Move_BEAT_UP_End:
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
+ blendoff
+ end
+Move_BEAT_UP_Even:
+ createsprite gBasicHitSplatSpriteTemplate, 130, -20, -20, 1, 2
+ createsprite gFistFootSpriteTemplate, 131, -20, -12, 8, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 130, 8, 0, 1, 2
+ createsprite gFistFootSpriteTemplate, 131, 8, 8, 8, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ goto Move_BEAT_UP_End
+Move_BEAT_UP_Odd:
+ createsprite gBasicHitSplatSpriteTemplate, 130, 12, -20, 1, 2
+ createsprite gFistFootSpriteTemplate, 131, 12, -12, 8, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 130, -12, 0, 1, 2
+ createsprite gFistFootSpriteTemplate, 131, -12, 8, 8, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ goto Move_BEAT_UP_End
Move_STOMP: @ 81C8B2A
- loadsprite 10143
- loadsprite 10135
- monbg 1
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- panse_19 SE_W104, 63
- sprite gBattleAnimSpriteTemplate_83DA070, 3, 0, -32, 15
- pause 19
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, -8, 1, 1
- createtask sub_80A7E7C, 2, 1, 0, 4, 9, 1
- panse_19 SE_W025B, 63
- wait
- clearmonbg 1
+ playsewithpan SE_W104, 63
+ createsprite gStompFootSpriteTemplate, 3, 0, -32, 15
+ delay 19
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, -8, 1, 1
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 4, 9, 1
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_TAIL_WHIP: @ 81C8B71
- panse_1C SE_W039, 192, 24, 3
- createtask sub_80A8500, 2, 0, 12, 4, 2, 3
- wait
+ loopsewithpan SE_W039, 192, 24, 3
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 12, 4, 2, 3
+ waitforvisualfinish
end
Move_CUT: @ 81C8B8A
- loadsprite 10138
- monbg 1
+ loadspritegfx 10138
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- panse_19 SE_W015, 63
- sprite gBattleAnimSpriteTemplate_83D6B28, 2, 40, -32, 0
- pause 5
- createtask sub_80A7E7C, 2, 1, 0, 3, 10, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W015, 63
+ createsprite gCuttingSliceSpriteTemplate, 2, 40, -32, 0
+ delay 5
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 10, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
- wait
+ waitforvisualfinish
end
Move_HIDDEN_POWER: @ 81C8BBC
- loadsprite 10217
- panse_19 SE_W036, 192
- createtask sub_80A8D34, 5, -7, -7, 11, 0, 0
- wait
- pause 30
- createtask sub_8079790, 5, 0, 20479, 12, 5, 1
- pause 4
- createtask sub_80A8D34, 5, -7, -7, 11, 0, 0
- panse_19 SE_W179, 192
- sprite gBattleAnimSpriteTemplate_83D7B14, 2, 26, 0
- sprite gBattleAnimSpriteTemplate_83D7B14, 2, 26, 42
- sprite gBattleAnimSpriteTemplate_83D7B14, 2, 26, 84
- sprite gBattleAnimSpriteTemplate_83D7B14, 2, 26, 126
- sprite gBattleAnimSpriteTemplate_83D7B14, 2, 26, 168
- sprite gBattleAnimSpriteTemplate_83D7B14, 2, 26, 210
- pause 52
- setvar 7, -1
- panse_19 SE_W115, 192
- createtask sub_80A8D34, 5, -7, -7, 11, 0, 0
- sprite gBattleAnimSpriteTemplate_83D7B2C, 130, 0
- sprite gBattleAnimSpriteTemplate_83D7B2C, 130, 32
- sprite gBattleAnimSpriteTemplate_83D7B2C, 130, 64
- sprite gBattleAnimSpriteTemplate_83D7B2C, 130, 96
- sprite gBattleAnimSpriteTemplate_83D7B2C, 130, 128
- sprite gBattleAnimSpriteTemplate_83D7B2C, 130, 160
- sprite gBattleAnimSpriteTemplate_83D7B2C, 130, 192
- sprite gBattleAnimSpriteTemplate_83D7B2C, 130, 224
+ loadspritegfx 10217
+ playsewithpan SE_W036, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_BANK_ATTACKER, 0
+ waitforvisualfinish
+ delay 30
+ createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_BANK_ATTACKER, 20479, 12, 5, 1
+ delay 4
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_BANK_ATTACKER, 0
+ playsewithpan SE_W179, 192
+ createsprite gHiddenPowerOrbSpriteTemplate, 2, 26, 0
+ createsprite gHiddenPowerOrbSpriteTemplate, 2, 26, 42
+ createsprite gHiddenPowerOrbSpriteTemplate, 2, 26, 84
+ createsprite gHiddenPowerOrbSpriteTemplate, 2, 26, 126
+ createsprite gHiddenPowerOrbSpriteTemplate, 2, 26, 168
+ createsprite gHiddenPowerOrbSpriteTemplate, 2, 26, 210
+ delay 52
+ setarg 7, -1
+ playsewithpan SE_W115, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 11, ANIM_BANK_ATTACKER, 0
+ createsprite gHiddenPowerOrbScatterSpriteTemplate, 130, 0
+ createsprite gHiddenPowerOrbScatterSpriteTemplate, 130, 32
+ createsprite gHiddenPowerOrbScatterSpriteTemplate, 130, 64
+ createsprite gHiddenPowerOrbScatterSpriteTemplate, 130, 96
+ createsprite gHiddenPowerOrbScatterSpriteTemplate, 130, 128
+ createsprite gHiddenPowerOrbScatterSpriteTemplate, 130, 160
+ createsprite gHiddenPowerOrbScatterSpriteTemplate, 130, 192
+ createsprite gHiddenPowerOrbScatterSpriteTemplate, 130, 224
end
Move_REVERSAL: @ 81C8CA5
- loadsprite 10236
- loadsprite 10143
- loadsprite 10135
- panse_19 SE_W197, 192
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 3, 32767, 8, 0, 0
- wait
- pause 30
- createtask sub_80E1F8C, 2, 31, 3, 2, 0, 10, 32767
- pause 10
- panse_19 SE_W179, 192
- sprite gBattleAnimSpriteTemplate_8402738, 2, 26, 0
- sprite gBattleAnimSpriteTemplate_8402738, 2, 26, 42
- sprite gBattleAnimSpriteTemplate_8402738, 2, 26, 84
- sprite gBattleAnimSpriteTemplate_8402738, 2, 26, 126
- sprite gBattleAnimSpriteTemplate_8402738, 2, 26, 168
- sprite gBattleAnimSpriteTemplate_8402738, 2, 26, 210
- wait
- pause 20
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4
- pause 8
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 32767, 8, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9FA8, 132, 0, 0, 10, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, 0, 1, 1
- createtask sub_80A9058, 5, 0, 1, 8, 1, 0
+ loadspritegfx 10236
+ loadspritegfx 10143
+ loadspritegfx 10135
+ playsewithpan SE_W197, 192
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 3, 32767, 8, 0, 0
+ waitforvisualfinish
+ delay 30
+ createvisualtask sub_80E1F8C, 2, 31, 3, 2, 0, 10, 32767
+ delay 10
+ playsewithpan SE_W179, 192
+ createsprite gBattleAnimSpriteTemplate_8402738, 2, 26, 0
+ createsprite gBattleAnimSpriteTemplate_8402738, 2, 26, 42
+ createsprite gBattleAnimSpriteTemplate_8402738, 2, 26, 84
+ createsprite gBattleAnimSpriteTemplate_8402738, 2, 26, 126
+ createsprite gBattleAnimSpriteTemplate_8402738, 2, 26, 168
+ createsprite gBattleAnimSpriteTemplate_8402738, 2, 26, 210
+ waitforvisualfinish
+ delay 20
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4
+ delay 8
+ playsewithpan SE_W233B, 63
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 32767, 8, 0, 0
+ createsprite gFistFootSpriteTemplate, 132, 0, 0, 10, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 1
+ createvisualtask sub_80A9058, 5, 0, 1, 8, 1, 0
end
Move_PURSUIT: @ 81C8D80
- loadsprite 10135
- monbg 1
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
fadetobg 1
waitbgfadein
- pause 0
+ delay 0
setalpha 12, 8
- ifelse _81C8D9F, _81C8DC8
+ choosetwoturnanim _81C8D9F, _81C8DC8
_81C8D96:
- wait
- clearmonbg 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
- pause 0
+ delay 0
restorebg
waitbgfadein
end
_81C8D9F:
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 2
- createtask sub_80A9058, 5, 0, 1, 6, 1, 0
- jump _81C8D96
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2
+ createvisualtask sub_80A9058, 5, 0, 1, 6, 1, 0
+ goto _81C8D96
_81C8DC8:
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 1
- createtask sub_80A9058, 5, 0, 1, 6, 1, 0
- jump _81C8D96
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
+ createvisualtask sub_80A9058, 5, 0, 1, 6, 1, 0
+ goto _81C8D96
Move_SPIKE_CANNON: @ 81C8DF1
- loadsprite 10161
- loadsprite 10135
- monbg 1
+ loadspritegfx 10161
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- createtask sub_80A8920, 5, 0, -4, 0, 4, 6, 8, 4
- wait
- panse_1C SE_W013B, 192, 5, 3
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5
- sprite gBattleAnimSpriteTemplate_83DAB8C, 2, 10, -8, -8, -8, 20
- sprite gBattleAnimSpriteTemplate_83DAB8C, 2, 18, 0, 0, 0, 20
- sprite gBattleAnimSpriteTemplate_83DAB8C, 2, 26, 8, 8, 8, 20
- wait
- sprite gBattleAnimSpriteTemplate_83DB4C0, 3, -8, -8, 1, 2
- sprite gBattleAnimSpriteTemplate_83DB4C0, 3, 0, 0, 1, 2
- sprite gBattleAnimSpriteTemplate_83DB4C0, 3, 8, 8, 1, 2
- createtask sub_80A7FA0, 2, 1, 3, 0, 7, 1
- panse_1C SE_W030, 63, 5, 3
- wait
- clearmonbg 1
+ createvisualtask AnimTask_WindUpLunge, 5, ANIM_BANK_ATTACKER, -4, 0, 4, 6, 8, 4
+ waitforvisualfinish
+ loopsewithpan SE_W013B, 192, 5, 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5
+ createsprite gLinearStingerSpriteTemplate, 2, 10, -8, -8, -8, 20
+ createsprite gLinearStingerSpriteTemplate, 2, 18, 0, 0, 0, 20
+ createsprite gLinearStingerSpriteTemplate, 2, 26, 8, 8, 8, 20
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB4C0, 3, -8, -8, 1, 2
+ createsprite gBattleAnimSpriteTemplate_83DB4C0, 3, 0, 0, 1, 2
+ createsprite gBattleAnimSpriteTemplate_83DB4C0, 3, 8, 8, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 7, 1
+ loopsewithpan SE_W030, 63, 5, 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_SWORDS_DANCE: @ 81C8EA4
- loadsprite 10005
- monbg 0
+ loadspritegfx 10005
+ monbg ANIM_BANK_ATTACKER
setalpha 12, 8
- panse_19 SE_W014, 192
- createtask sub_80A8500, 2, 0, 16, 6, 1, 4
- sprite gBattleAnimSpriteTemplate_83D748C, 2, 0, 0
- pause 22
- createtask sub_80E21A8, 2, 10005, 2, 2, 32754, 16, 0, 0
- wait
- clearmonbg 0
+ playsewithpan SE_W014, 192
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 16, 6, 1, 4
+ createsprite gBattleAnimSpriteTemplate_83D748C, 2, 0, 0
+ delay 22
+ createvisualtask sub_80E21A8, 2, 10005, 2, 2, 32754, 16, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
blendoff
- pause 1
+ delay 1
end
Move_PSYCH_UP: @ 81C8EEA
- loadsprite 10196
- monbg 2
- createtask sub_80E1F8C, 2, 25, 2, 6, 1, 11, 0
+ loadspritegfx 10196
+ monbg ANIM_BANK_ATK_PARTNER
+ createvisualtask sub_80E1F8C, 2, 25, 2, 6, 1, 11, 0
setalpha 12, 8
- panse_1C SE_W060B, 192, 5, 10
- sprite gBattleAnimSpriteTemplate_83DA690, 2, 0, 0, 0, 0
- createtask sub_80A8B88, 5, 0, 5, 2560, 8, 0
- pause 127
- pause 4
- panse_19 SE_W060, 192
- createtask sub_80A8D34, 5, -5, -5, 10, 0, 1
- createtask sub_80E2A38, 9, 2, 2, 10, 0, 1023
- pause 30
- clearmonbg 2
+ loopsewithpan SE_W060B, 192, 5, 10
+ createsprite gBattleAnimSpriteTemplate_83DA690, 2, 0, 0, 0, 0
+ createvisualtask AnimTask_SwayMon, 5, 0, 5, 2560, 8, 0
+ delay 127
+ delay 4
+ playsewithpan SE_W060, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_BANK_ATTACKER, 1
+ createvisualtask sub_80E2A38, 9, 2, 2, 10, 0, 1023
+ delay 30
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
- wait
+ waitforvisualfinish
end
Move_DIZZY_PUNCH: @ 81C8F5C
- loadsprite 10073
- loadsprite 10143
- loadsprite 10135
- monbg 1
+ loadspritegfx 10073
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
call _81C9077
- sprite gBattleAnimSpriteTemplate_83D9FA8, 133, 16, 8, 20, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 132, 16, 0, 1, 1
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, 160, -32
- sprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, -256, -40
- sprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, 128, -16
- sprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, 416, -38
- sprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, -128, -22
- sprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, -384, -31
- pause 10
+ createsprite gFistFootSpriteTemplate, 133, 16, 8, 20, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, 132, 16, 0, 1, 1
+ playsewithpan SE_W004, 63
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, 160, -32
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, -256, -40
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, 128, -16
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, 416, -38
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, -128, -22
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, 16, 8, -384, -31
+ delay 10
call _81C9077
- sprite gBattleAnimSpriteTemplate_83D9FA8, 133, -16, -8, 20, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 132, -16, -16, 1, 1
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, 160, -32
- sprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, -256, -40
- sprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, 128, -16
- sprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, 416, -38
- sprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, -128, -22
- sprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, -384, -31
- wait
- clearmonbg 1
+ createsprite gFistFootSpriteTemplate, 133, -16, -8, 20, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, 132, -16, -16, 1, 1
+ playsewithpan SE_W233B, 63
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, 160, -32
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, -256, -40
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, 128, -16
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, 416, -38
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, -128, -22
+ createsprite gBattleAnimSpriteTemplate_83DA088, 131, -16, -8, -384, -31
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
_81C9077:
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4
- pause 6
- createtask sub_80A7FA0, 2, 1, 3, 0, 7, 1
- ret
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4
+ delay 6
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 7, 1
+ return
Move_FIRE_SPIN: @ 81C9096
- loadsprite 10029
- panse_19 SE_W221B, 63
- createtask sub_80A7E7C, 5, 1, 0, 2, 47, 1
+ loadspritegfx 10029
+ playsewithpan SE_W221B, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 47, 1
call _81C90BF
call _81C90BF
call _81C90BF
- wait
+ waitforvisualfinish
end
_81C90BF:
- sprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 28, 528, 30, 13, 50, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 32, 480, 20, 16, -46, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 33, 576, 20, 8, 42, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 31, 400, 25, 11, -42, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 28, 512, 25, 16, 46, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 33, 464, 30, 15, -50, 1
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 28, 528, 30, 13, 50, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 32, 480, 20, 16, -46, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 33, 576, 20, 8, 42, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 31, 400, 25, 11, -42, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 28, 512, 25, 16, 46, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 130, 0, 33, 464, 30, 15, -50, 1
+ delay 2
+ return
Move_FURY_CUTTER: @ 81C914A
- loadsprite 10138
- monbg 1
+ loadspritegfx 10138
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- panse_19 SE_W013, 63
- createtask UpdateFuryCutterAnimDirection, 2
- jumpvareq 7, 0, _81C91A7
- jump _81C91B9
+ playsewithpan SE_W013, 63
+ createvisualtask UpdateFuryCutterAnimDirection, 2
+ jumpargeq 7, 0, _81C91A7
+ goto _81C91B9
_81C916A:
- createtask UpdateFuryCutterAnimCount, 2
- jumpvareq 7, 1, _81C918E
- jumpvareq 7, 2, _81C91CB
- jumpvareq 7, 3, _81C91E5
- jump _81C91FF
+ createvisualtask UpdateFuryCutterAnimCount, 2
+ jumpargeq 7, 1, _81C918E
+ jumpargeq 7, 2, _81C91CB
+ jumpargeq 7, 3, _81C91E5
+ goto _81C91FF
_81C918E:
- pause 5
- createtask sub_80A7E7C, 2, 1, 0, 3, 10, 1
- wait
- clearmonbg 1
+ delay 5
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 10, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
- wait
+ waitforvisualfinish
end
_81C91A7:
- sprite gBattleAnimSpriteTemplate_83D6B28, 2, 40, -32, 0
- jump _81C916A
+ createsprite gCuttingSliceSpriteTemplate, 2, 40, -32, 0
+ goto _81C916A
_81C91B9:
- sprite gBattleAnimSpriteTemplate_83D6B28, 2, 40, -32, 1
- jump _81C916A
+ createsprite gCuttingSliceSpriteTemplate, 2, 40, -32, 1
+ goto _81C916A
_81C91CB:
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 10505, 4, 0, 0
- jump _81C918E
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 10505, 4, 0, 0
+ goto _81C918E
_81C91E5:
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 3, 10505, 4, 0, 0
- jump _81C918E
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 3, 10505, 4, 0, 0
+ goto _81C918E
_81C91FF:
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 3, 10505, 4, 0, 0
- jump _81C918E
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 3, 10505, 4, 0, 0
+ goto _81C918E
Move_SELF_DESTRUCT: @ 81C9219
- loadsprite 10198
- createtask sub_80E2A38, 10, 2, 1, 0, 9, 31
- createtask sub_80A7FA0, 5, 4, 6, 0, 38, 1
- createtask sub_80A7FA0, 5, 5, 6, 0, 38, 1
- createtask sub_80A7FA0, 5, 6, 6, 0, 38, 1
- createtask sub_80A7FA0, 5, 7, 6, 0, 38, 1
- createtask sub_80A7FA0, 5, 8, 6, 0, 38, 1
+ loadspritegfx 10198
+ createvisualtask sub_80E2A38, 10, 2, 1, 0, 9, 31
+ createvisualtask AnimTask_ShakeMon2, 5, 4, 6, 0, 38, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 5, 6, 0, 38, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 6, 6, 0, 38, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 7, 6, 0, 38, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 8, 6, 0, 38, 1
call _81C929F
call _81C929F
- wait
- createtask sub_80E2A38, 10, 2, 1, 9, 0, 31
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 2, 1, 9, 0, 31
end
_81C929F:
- panse_19 SE_W120, 192
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 0, 1
- pause 6
- panse_19 SE_W120, 192
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 24, -24, 0, 1
- pause 6
- panse_19 SE_W120, 192
- sprite gBattleAnimSpriteTemplate_83D7828, 3, -16, 16, 0, 1
- pause 6
- panse_19 SE_W120, 192
- sprite gBattleAnimSpriteTemplate_83D7828, 3, -24, -12, 0, 1
- pause 6
- panse_19 SE_W120, 192
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 0, 1
- pause 6
- ret
+ playsewithpan SE_W120, 192
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 0, 1
+ delay 6
+ playsewithpan SE_W120, 192
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 24, -24, 0, 1
+ delay 6
+ playsewithpan SE_W120, 192
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, -16, 16, 0, 1
+ delay 6
+ playsewithpan SE_W120, 192
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, -24, -12, 0, 1
+ delay 6
+ playsewithpan SE_W120, 192
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 0, 1
+ delay 6
+ return
Move_SLAM: @ 81C9309
- loadsprite 10056
- loadsprite 10135
- monbg 1
- setalpha 12, 8
- panse_19 SE_W004, 192
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 3, 0, 4
- pause 1
- sprite gBattleAnimSpriteTemplate_83D69DC, 2, 0, 0
- pause 3
- panse_19 SE_W025B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 1
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -12, 10, 0, 3
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5
- pause 3
- createtask sub_80A8154, 2, 1, 0, 3, 6, 1
- wait
- pause 5
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 6
- wait
- clearmonbg 1
+ loadspritegfx 10056
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ playsewithpan SE_W004, 192
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 3, 0, 4
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D69DC, 2, 0, 0
+ delay 3
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -12, 10, 0, 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5
+ delay 3
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 0, 3, 6, 1
+ waitforvisualfinish
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 6
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_VINE_WHIP: @ 81C9391
- loadsprite 10287
- panse_19 SE_W026, 192
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 6
- pause 6
- panse_19 SE_W010, 63
- sprite gBattleAnimSpriteTemplate_83D69F4, 130, 0, 0
- pause 6
- createtask sub_80A7FA0, 2, 1, 2, 0, 6, 1
+ loadspritegfx 10287
+ playsewithpan SE_W026, 192
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 6
+ delay 6
+ playsewithpan SE_W010, 63
+ createsprite gBattleAnimSpriteTemplate_83D69F4, 130, 0, 0
+ delay 6
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 6, 1
end
Move_DRILL_PECK: @ 81C93C8
- loadsprite 10135
- loadsprite 10162
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 0
- panse_19 SE_W029, 192
- wait
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 1
- pause 2
- panse_1C SE_W030, 63, 4, 8
- createtask sub_80DB0E8, 5
- createtask sub_80A7FA0, 2, 1, 4, 0, 18, 1
- wait
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 6
- wait
+ loadspritegfx 10135
+ loadspritegfx 10162
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 0
+ playsewithpan SE_W029, 192
+ waitforvisualfinish
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 1
+ delay 2
+ loopsewithpan SE_W030, 63, 4, 8
+ createvisualtask sub_80DB0E8, 5
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 18, 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 6
+ waitforvisualfinish
end
Move_WATERFALL: @ 81C9421
- loadsprite 10148
- loadsprite 10155
- loadsprite 10141
- monbg 3
- setalpha 12, 8
- createtask sub_80A7E7C, 5, 0, 0, 2, 23, 1
- pause 5
- panse_19 SE_W152, 192
- sprite gBattleAnimSpriteTemplate_83D9348, 2, 10, 10, 25, 0
- pause 4
- panse_19 SE_W152, 192
- sprite gBattleAnimSpriteTemplate_83D9348, 2, -15, 0, 25, 0
- pause 4
- panse_19 SE_W152, 192
- sprite gBattleAnimSpriteTemplate_83D9348, 2, 20, 10, 25, 0
- pause 4
- panse_19 SE_W152, 192
- sprite gBattleAnimSpriteTemplate_83D9348, 2, 0, -10, 25, 0
- pause 4
- panse_19 SE_W152, 192
- sprite gBattleAnimSpriteTemplate_83D9348, 2, -10, 15, 25, 0
- pause 4
- panse_19 SE_W152, 192
- sprite gBattleAnimSpriteTemplate_83D9348, 2, 25, 20, 25, 0
- pause 4
- panse_19 SE_W152, 192
- sprite gBattleAnimSpriteTemplate_83D9348, 2, -20, 20, 25, 0
- pause 4
- panse_19 SE_W152, 192
- sprite gBattleAnimSpriteTemplate_83D9348, 2, 12, 0, 25, 0
- wait
- pause 10
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 5
- pause 6
+ loadspritegfx 10148
+ loadspritegfx 10155
+ loadspritegfx 10141
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 23, 1
+ delay 5
+ playsewithpan SE_W152, 192
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, 10, 10, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, -15, 0, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, 20, 10, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, 0, -10, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, -10, 15, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, 25, 20, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, -20, 20, 25, 0
+ delay 4
+ playsewithpan SE_W152, 192
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, 12, 0, 25, 0
+ waitforvisualfinish
+ delay 10
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, 5
+ delay 6
call _81C9502
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81C9502:
- panse_19 SE_W127, 63
- createtask sub_80A7FA0, 5, 1, 4, 0, 17, 1
- sprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, 20, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 20
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 20
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, 15, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 15
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 15
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, 10, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 10
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 10
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, 5, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 5
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 5
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, 0, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, -5, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -5
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -5
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, -10, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -10
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -10
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, -15, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -15
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -15
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, -20, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -20
- sprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -20
- ret
+ playsewithpan SE_W127, 63
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 17, 1
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, 20, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 20
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 20
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, 15, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 15
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 15
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, 10, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 10
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 10
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, 5, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 5
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 5
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, 0, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, -5, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -5
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -5
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, -10, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -10
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -10
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, -15, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -15
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -15
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 3, 0, -20, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -20
+ createsprite gBattleAnimSpriteTemplate_83D9360, 4, 0, -20
+ return
Move_EXPLOSION: @ 81C9675
- loadsprite 10198
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 8, 9, 8474, 8, 0, 8
- createtask sub_80A7FA0, 5, 4, 8, 0, 40, 1
- createtask sub_80A7FA0, 5, 5, 8, 0, 40, 1
- createtask sub_80A7FA0, 5, 6, 8, 0, 40, 1
- createtask sub_80A7FA0, 5, 7, 8, 0, 40, 1
- createtask sub_80A7FA0, 5, 8, 8, 0, 40, 1
+ loadspritegfx 10198
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 8, 9, 8474, 8, 0, 8
+ createvisualtask AnimTask_ShakeMon2, 5, 4, 8, 0, 40, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 5, 8, 0, 40, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 6, 8, 0, 40, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 7, 8, 0, 40, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 8, 8, 0, 40, 1
call _81C9712
call _81C9712
- wait
- createtask sub_80E2A38, 10, 1, 1, 16, 16, 32767
- pause 50
- createtask sub_80E2A38, 10, 1, 3, 16, 0, 32767
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 1, 1, 16, 16, 32767
+ delay 50
+ createvisualtask sub_80E2A38, 10, 1, 3, 16, 0, 32767
end
_81C9712:
- panse_19 SE_W153, 192
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 0, 1
- pause 6
- panse_19 SE_W153, 192
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 24, -24, 0, 1
- pause 6
- panse_19 SE_W153, 192
- sprite gBattleAnimSpriteTemplate_83D7828, 3, -16, 16, 0, 1
- pause 6
- panse_19 SE_W153, 192
- sprite gBattleAnimSpriteTemplate_83D7828, 3, -24, -12, 0, 1
- pause 6
- panse_19 SE_W153, 192
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 0, 1
- pause 6
- ret
+ playsewithpan SE_W153, 192
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 0, 1
+ delay 6
+ playsewithpan SE_W153, 192
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 24, -24, 0, 1
+ delay 6
+ playsewithpan SE_W153, 192
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, -16, 16, 0, 1
+ delay 6
+ playsewithpan SE_W153, 192
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, -24, -12, 0, 1
+ delay 6
+ playsewithpan SE_W153, 192
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 0, 1
+ delay 6
+ return
Move_DEFENSE_CURL: @ 81C977C
- loadsprite 10234
- panse_1C SE_W161, 192, 18, 3
- createtask sub_80E0E24, 5, 0, 0
- createtask sub_812D350, 5
- wait
- sprite gBattleAnimSpriteTemplate_8402498, 2, 0, 6, 0, 1
- wait
- createtask sub_80E0E24, 5, 0, 1
- wait
+ loadspritegfx 10234
+ loopsewithpan SE_W161, 192, 18, 3
+ createvisualtask sub_80E0E24, 5, 0, 0
+ createvisualtask sub_812D350, 5
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_8402498, 2, 0, 6, 0, 1
+ waitforvisualfinish
+ createvisualtask sub_80E0E24, 5, 0, 1
+ waitforvisualfinish
end
Move_PROTECT: @ 81C97B5
- loadsprite 10280
- monbg 2
+ loadspritegfx 10280
+ monbg ANIM_BANK_ATK_PARTNER
monbgprio_28 0
- panse_1D SE_W115, 192, 16
- sprite gBattleAnimSpriteTemplate_83D6BE8, 2, 24, 0, 90
- wait
- clearmonbg 2
+ waitplaysewithpan SE_W115, 192, 16
+ createsprite gBattleAnimSpriteTemplate_83D6BE8, 2, 24, 0, 90
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
end
Move_DETECT: @ 81C97D2
- loadsprite 10071
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 9, 0
- wait
- createtask sub_80E2A38, 10, 2, 1, 0, 9, 32767
- pause 18
- panse_19 SE_W197, 192
- sprite gBattleAnimSpriteTemplate_83930F4, 13, 20, -20
- wait
- pause 10
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 9, 0, 0
- createtask sub_80E2A38, 10, 2, 2, 9, 0, 32767
- wait
+ loadspritegfx 10071
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 9, 0
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 2, 1, 0, 9, 32767
+ delay 18
+ playsewithpan SE_W197, 192
+ createsprite gBattleAnimSpriteTemplate_83930F4, 13, 20, -20
+ waitforvisualfinish
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 9, 0, 0
+ createvisualtask sub_80E2A38, 10, 2, 2, 9, 0, 32767
+ waitforvisualfinish
end
Move_FRUSTRATION: @ 81C9830
- loadsprite 10135
- loadsprite 10087
- monbg 3
- setalpha 12, 8
- createtask sub_8079CEC, 1
- jumpvareq 7, 0, _81C9864
- jumpvareq 7, 1, _81C996A
- jumpvareq 7, 2, _81C9A37
- jump _81C9AB3
+ loadspritegfx 10135
+ loadspritegfx 10087
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ createvisualtask sub_8079CEC, 1
+ jumpargeq 7, 0, _81C9864
+ jumpargeq 7, 1, _81C996A
+ jumpargeq 7, 2, _81C9A37
+ goto _81C9AB3
_81C985F:
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81C9864:
- panse_19 SE_W082, 192
- createtask sub_80A7FA0, 5, 0, 1, 0, 15, 1
- createtask sub_80E2A38, 10, 2, 3, 0, 9, 31
- wait
- pause 20
- panse_19 SE_W207B, 192
- sprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28
- wait
- panse_19 SE_W207B, 192
- sprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28
- wait
- pause 10
- createtask sub_80A8B88, 5, 0, 16, 6144, 8, 0
- pause 5
- createtask sub_80A7FA0, 5, 1, 4, 0, 30, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 0
- panse_19 SE_W004, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 24, 8, 1, 0
- panse_19 SE_W004, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, -24, -16, 1, 0
- panse_19 SE_W004, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 8, 4, 1, 0
- panse_19 SE_W004, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, -16, 19, 1, 0
- panse_19 SE_W004, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 18, -18, 1, 0
- panse_19 SE_W004, 63
- wait
- createtask sub_80E2A38, 10, 2, 3, 9, 0, 31
- jump _81C985F
+ playsewithpan SE_W082, 192
+ createvisualtask AnimTask_ShakeMon2, 5, 0, 1, 0, 15, 1
+ createvisualtask sub_80E2A38, 10, 2, 3, 0, 9, 31
+ waitforvisualfinish
+ delay 20
+ playsewithpan SE_W207B, 192
+ createsprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28
+ waitforvisualfinish
+ playsewithpan SE_W207B, 192
+ createsprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28
+ waitforvisualfinish
+ delay 10
+ createvisualtask AnimTask_SwayMon, 5, 0, 16, 6144, 8, 0
+ delay 5
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 30, 1
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 0
+ playsewithpan SE_W004, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 3, 24, 8, 1, 0
+ playsewithpan SE_W004, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 3, -24, -16, 1, 0
+ playsewithpan SE_W004, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 3, 8, 4, 1, 0
+ playsewithpan SE_W004, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 3, -16, 19, 1, 0
+ playsewithpan SE_W004, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 3, 18, -18, 1, 0
+ playsewithpan SE_W004, 63
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 2, 3, 9, 0, 31
+ goto _81C985F
_81C996A:
- panse_19 SE_W082, 192
- createtask sub_80A7FA0, 5, 0, 1, 0, 15, 1
- createtask sub_80E2A38, 10, 2, 3, 0, 9, 31
- wait
- pause 20
- panse_19 SE_W207B, 192
- sprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28
- wait
- pause 5
- createtask sub_812E498, 5
- pause 7
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 8, 1, 1
- createtask sub_80A7FA0, 5, 1, 4, 0, 6, 1
- pause 14
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 12, -6, 1, 1
- createtask sub_80A7FA0, 5, 1, 4, 0, 6, 1
- pause 14
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, -12, -6, 1, 1
- createtask sub_80A7FA0, 5, 1, 4, 0, 6, 1
- wait
- createtask sub_80E2A38, 10, 2, 3, 9, 0, 31
- jump _81C985F
+ playsewithpan SE_W082, 192
+ createvisualtask AnimTask_ShakeMon2, 5, 0, 1, 0, 15, 1
+ createvisualtask sub_80E2A38, 10, 2, 3, 0, 9, 31
+ waitforvisualfinish
+ delay 20
+ playsewithpan SE_W207B, 192
+ createsprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28
+ waitforvisualfinish
+ delay 5
+ createvisualtask sub_812E498, 5
+ delay 7
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 8, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1
+ delay 14
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 12, -6, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1
+ delay 14
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, -12, -6, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 6, 1
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 2, 3, 9, 0, 31
+ goto _81C985F
_81C9A37:
- panse_19 SE_W207B, 192
- sprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28
- wait
- pause 5
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4
- pause 6
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 10, 4, 1, 1
- createtask sub_80A7FA0, 2, 1, 3, 0, 6, 1
- wait
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4
- pause 6
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, -4, 1, 2
- createtask sub_80A7FA0, 2, 1, 3, 0, 6, 1
- jump _81C985F
+ playsewithpan SE_W207B, 192
+ createsprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28
+ waitforvisualfinish
+ delay 5
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4
+ delay 6
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 10, 4, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ waitforvisualfinish
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4
+ delay 6
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, -4, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ goto _81C985F
_81C9AB3:
- sprite gBattleAnimSpriteTemplate_8402630, 2, 20, -28
- wait
- pause 10
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 10, 2
- pause 12
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A7FA0, 2, 1, 1, 0, 6, 1
- jump _81C985F
+ createsprite gBattleAnimSpriteTemplate_8402630, 2, 20, -28
+ waitforvisualfinish
+ delay 10
+ createsprite gHorizontalLungeSpriteTemplate, 2, 10, 2
+ delay 12
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 1, 0, 6, 1
+ goto _81C985F
Move_SAFEGUARD: @ 81C9AF7
- loadsprite 10244
- monbg 2
+ loadspritegfx 10244
+ monbg ANIM_BANK_ATK_PARTNER
setalpha 8, 8
- panse_19 SE_W208, 192
- sprite gBattleAnimSpriteTemplate_83D7D74, 2
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7D74, 2
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7D74, 2
- wait
- panse_19 SE_REAPOKE, 192
- createtask sub_80E1F8C, 2, 10, 0, 2, 0, 10, 32767
- wait
- clearmonbg 2
+ playsewithpan SE_W208, 192
+ createsprite gBattleAnimSpriteTemplate_83D7D74, 2
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7D74, 2
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7D74, 2
+ waitforvisualfinish
+ playsewithpan SE_REAPOKE, 192
+ createvisualtask sub_80E1F8C, 2, 10, 0, 2, 0, 10, 32767
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
end
Move_PAIN_SPLIT: @ 81C9B39
- loadsprite 10239
- sprite gBattleAnimSpriteTemplate_84026F0, 2, -8, -42, 0
- sprite gBattleAnimSpriteTemplate_84026F0, 130, -8, -42, 1
- pause 10
- panse_19 SE_W207B, 0
- createtask sub_812EB10, 2, 0, 0
- createtask sub_812EB10, 2, 1, 0
- wait
- sprite gBattleAnimSpriteTemplate_84026F0, 2, -24, -42, 0
- sprite gBattleAnimSpriteTemplate_84026F0, 130, -24, -42, 1
- pause 10
- panse_19 SE_W207B, 0
- createtask sub_812EB10, 2, 0, 1
- createtask sub_812EB10, 2, 1, 1
- wait
- sprite gBattleAnimSpriteTemplate_84026F0, 2, 8, -42, 0
- sprite gBattleAnimSpriteTemplate_84026F0, 130, 8, -42, 1
- pause 10
- panse_19 SE_W207B, 0
- createtask sub_812EB10, 2, 0, 2
- createtask sub_812EB10, 2, 1, 2
+ loadspritegfx 10239
+ createsprite gBattleAnimSpriteTemplate_84026F0, 2, -8, -42, 0
+ createsprite gBattleAnimSpriteTemplate_84026F0, 130, -8, -42, 1
+ delay 10
+ playsewithpan SE_W207B, 0
+ createvisualtask sub_812EB10, 2, 0, 0
+ createvisualtask sub_812EB10, 2, 1, 0
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_84026F0, 2, -24, -42, 0
+ createsprite gBattleAnimSpriteTemplate_84026F0, 130, -24, -42, 1
+ delay 10
+ playsewithpan SE_W207B, 0
+ createvisualtask sub_812EB10, 2, 0, 1
+ createvisualtask sub_812EB10, 2, 1, 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_84026F0, 2, 8, -42, 0
+ createsprite gBattleAnimSpriteTemplate_84026F0, 130, 8, -42, 1
+ delay 10
+ playsewithpan SE_W207B, 0
+ createvisualtask sub_812EB10, 2, 0, 2
+ createvisualtask sub_812EB10, 2, 1, 2
end
Move_VICE_GRIP: @ 81C9BE1
- loadsprite 10138
- loadsprite 10135
- monbg 3
+ loadspritegfx 10138
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- panse_19 SE_W011, 63
- sprite gBattleAnimSpriteTemplate_83D769C, 2, 0
- sprite gBattleAnimSpriteTemplate_83D769C, 2, 1
- pause 9
- sprite gBattleAnimSpriteTemplate_83DB4A8, 1, 0, 0, 1, 2
- createtask sub_80A7FA0, 5, 1, 2, 0, 5, 1
- wait
- clearmonbg 3
+ playsewithpan SE_W011, 63
+ createsprite gBattleAnimSpriteTemplate_83D769C, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83D769C, 2, 1
+ delay 9
+ createsprite gBasicHitSplatSpriteTemplate, 1, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 5, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_GUILLOTINE: @ 81C9C29
- loadsprite 10138
- loadsprite 10135
- monbg 3
+ loadspritegfx 10138
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- fadetobg_25 12, 13, 14
+ fadetobgfromset 12, 13, 14
waitbgfadein
- panse_19 SE_W011, 63
- sprite gBattleAnimSpriteTemplate_83D76DC, 2, 0
- sprite gBattleAnimSpriteTemplate_83D76DC, 2, 1
- createtask sub_80E2A38, 10, 4, 2, 0, 16, 0
- pause 9
- createtask sub_80A7FA0, 5, 1, 2, 0, 23, 1
- pause 46
- createtask sub_80A7FA0, 5, 1, 4, 0, 8, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 8, 0, 0
- panse_19 SE_W013, 63
- wait
- clearmonbg 3
+ playsewithpan SE_W011, 63
+ createsprite gBattleAnimSpriteTemplate_83D76DC, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83D76DC, 2, 1
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 16, 0
+ delay 9
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 23, 1
+ delay 46
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 4, 0, 8, 1
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 8, 0, 0
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
restorebg
waitbgfadein
end
Move_PAY_DAY: @ 81C9CB5
- loadsprite 10100
- loadsprite 10135
- monbg 1
+ loadspritegfx 10100
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- panse_19 SE_W013B, 192
- sprite gBattleAnimSpriteTemplate_83D75E4, 2, 20, 0, 0, 0, 1152
- wait
- panse_19 SE_W006, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 1, 0, 0, 1, 2
- sprite gBattleAnimSpriteTemplate_83D75FC, 2
- createtask sub_80A7FA0, 2, 1, 1, 0, 6, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W013B, 192
+ createsprite gBattleAnimSpriteTemplate_83D75E4, 2, 20, 0, 0, 0, 1152
+ waitforvisualfinish
+ playsewithpan SE_W006, 63
+ createsprite gBasicHitSplatSpriteTemplate, 1, 0, 0, 1, 2
+ createsprite gBattleAnimSpriteTemplate_83D75FC, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 1, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_OUTRAGE: @ 81C9D08
- loadsprite 10029
- panse_1C SE_W082, 192, 8, 3
- createtask sub_80E1F8C, 2, 7, 2, 5, 3, 8, 430
- createtask sub_80A8500, 2, 0, 12, 6, 5, 4
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, 0, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, 0, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 0, 1280, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 0, -1280, 3
- pause 0
- createtask sub_80A7FA0, 2, 1, 2, 0, 40, 1
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, 768, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, 768, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, -768, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, -768, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, 0, 3
+ loadspritegfx 10029
+ loopsewithpan SE_W082, 192, 8, 3
+ createvisualtask sub_80E1F8C, 2, 7, 2, 5, 3, 8, 430
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 12, 6, 5, 4
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, 0, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, 0, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 0, 1280, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 0, -1280, 3
+ delay 0
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 40, 1
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, 768, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, 768, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, -768, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, -768, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, 0, 3
call _81C9E0F
call _81C9E0F
- wait
+ waitforvisualfinish
end
_81C9E0F:
- pause 3
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, 0, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 0, 1280, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 0, -1280, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, 768, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, 768, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, -768, 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, -768, 3
- ret
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, 0, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 0, 1280, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 0, -1280, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, 768, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, 768, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, 1280, -768, 3
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DAFCC, 130, 0, 0, 30, -1280, -768, 3
+ return
Move_SPARK: @ 81C9EA3
- loadsprite 10135
- loadsprite 10011
- pause 0
- createtask sub_80E1F8C, 2, 3, -31, 1, 5, 5, 23551
- panse_19 SE_W085B, 192
- sprite gBattleAnimSpriteTemplate_83D985C, 0, 32, 24, 190, 12, 0, 1, 0
- pause 0
- sprite gBattleAnimSpriteTemplate_83D985C, 0, 80, 24, 22, 12, 0, 1, 0
- sprite gBattleAnimSpriteTemplate_83D985C, 0, 156, 24, 121, 13, 0, 1, 1
- pause 0
- createtask sub_80E1F8C, 2, 3, -31, 1, 0, 0, 23551
- pause 10
- createtask sub_80E1F8C, 2, 3, -31, 1, 5, 5, 23551
- panse_19 SE_W085B, 192
- sprite gBattleAnimSpriteTemplate_83D985C, 0, 100, 24, 60, 10, 0, 1, 0
- sprite gBattleAnimSpriteTemplate_83D985C, 0, 170, 24, 42, 11, 0, 1, 1
- pause 0
- sprite gBattleAnimSpriteTemplate_83D985C, 0, 238, 24, 165, 10, 0, 1, 1
- pause 0
- createtask sub_80E1F8C, 2, 3, -31, 1, 0, 0, 23551
- pause 20
- createtask sub_80E1F8C, 2, 3, -31, 1, 7, 7, 23551
- panse_19 SE_W085B, 192
- sprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 32, 12, 0, 20, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 32, 12, 64, 20, 1, 0
- sprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 32, 12, 128, 20, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 32, 12, 192, 20, 2, 0
- sprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 16, 12, 32, 20, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 16, 12, 96, 20, 1, 0
- sprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 16, 12, 160, 20, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 16, 12, 224, 20, 2, 0
- pause 4
- wait
- createtask sub_80E1F8C, 2, 3, -31, 1, 0, 0, 23551
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4
- pause 4
- panse_19 SE_W063, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 0, 0, 1, 2
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- wait
- createtask sub_80E1F8C, 2, 4, -31, 2, 0, 6, 23551
- call Unknown_81D6100
- wait
+ loadspritegfx 10135
+ loadspritegfx 10011
+ delay 0
+ createvisualtask sub_80E1F8C, 2, 3, -31, 1, 5, 5, 23551
+ playsewithpan SE_W085B, 192
+ createsprite gBattleAnimSpriteTemplate_83D985C, 0, 32, 24, 190, 12, 0, 1, 0
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83D985C, 0, 80, 24, 22, 12, 0, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83D985C, 0, 156, 24, 121, 13, 0, 1, 1
+ delay 0
+ createvisualtask sub_80E1F8C, 2, 3, -31, 1, 0, 0, 23551
+ delay 10
+ createvisualtask sub_80E1F8C, 2, 3, -31, 1, 5, 5, 23551
+ playsewithpan SE_W085B, 192
+ createsprite gBattleAnimSpriteTemplate_83D985C, 0, 100, 24, 60, 10, 0, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83D985C, 0, 170, 24, 42, 11, 0, 1, 1
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83D985C, 0, 238, 24, 165, 10, 0, 1, 1
+ delay 0
+ createvisualtask sub_80E1F8C, 2, 3, -31, 1, 0, 0, 23551
+ delay 20
+ createvisualtask sub_80E1F8C, 2, 3, -31, 1, 7, 7, 23551
+ playsewithpan SE_W085B, 192
+ createsprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 32, 12, 0, 20, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 32, 12, 64, 20, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 32, 12, 128, 20, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 32, 12, 192, 20, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 16, 12, 32, 20, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 16, 12, 96, 20, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 16, 12, 160, 20, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9908, 4, 0, 0, 16, 12, 224, 20, 2, 0
+ delay 4
+ waitforvisualfinish
+ createvisualtask sub_80E1F8C, 2, 3, -31, 1, 0, 0, 23551
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4
+ delay 4
+ playsewithpan SE_W063, 63
+ createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ waitforvisualfinish
+ createvisualtask sub_80E1F8C, 2, 4, -31, 2, 0, 6, 23551
+ call ElectricityEffect
+ waitforvisualfinish
end
Move_ATTRACT: @ 81CA0BA
- loadsprite 10216
- panse_1C SE_W204, 192, 12, 3
- createtask sub_80A8B88, 5, 0, 12, 4096, 4, 0
- pause 15
- sprite gBattleAnimSpriteTemplate_83D7AB0, 131, 20, -8
- wait
- panse_19 SE_W213, 63
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, 160, -32
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, -256, -40
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, 128, -16
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, 416, -38
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, -128, -22
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, -384, -31
- wait
- panse_1D SE_W213B, 0, 15
- createtask sub_80D2100, 5
- sprite gBattleAnimSpriteTemplate_83D7AE0, 40, 16, 256, 0
- sprite gBattleAnimSpriteTemplate_83D7AE0, 40, 224, 240, 15
- sprite gBattleAnimSpriteTemplate_83D7AE0, 40, 126, 272, 30
- sprite gBattleAnimSpriteTemplate_83D7AE0, 40, 80, 224, 45
- sprite gBattleAnimSpriteTemplate_83D7AE0, 40, 170, 272, 60
- sprite gBattleAnimSpriteTemplate_83D7AE0, 40, 40, 256, 75
- sprite gBattleAnimSpriteTemplate_83D7AE0, 40, 112, 256, 90
- sprite gBattleAnimSpriteTemplate_83D7AE0, 40, 200, 272, 90
- pause 75
- createtask sub_80E1F8C, 2, 4, 4, 4, 0, 10, 28479
+ loadspritegfx 10216
+ loopsewithpan SE_W204, 192, 12, 3
+ createvisualtask AnimTask_SwayMon, 5, 0, 12, 4096, 4, 0
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83D7AB0, 131, 20, -8
+ waitforvisualfinish
+ playsewithpan SE_W213, 63
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, 160, -32
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, -256, -40
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, 128, -16
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, 416, -38
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, -128, -22
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, -384, -31
+ waitforvisualfinish
+ waitplaysewithpan SE_W213B, 0, 15
+ createvisualtask sub_80D2100, 5
+ createsprite gBattleAnimSpriteTemplate_83D7AE0, 40, 16, 256, 0
+ createsprite gBattleAnimSpriteTemplate_83D7AE0, 40, 224, 240, 15
+ createsprite gBattleAnimSpriteTemplate_83D7AE0, 40, 126, 272, 30
+ createsprite gBattleAnimSpriteTemplate_83D7AE0, 40, 80, 224, 45
+ createsprite gBattleAnimSpriteTemplate_83D7AE0, 40, 170, 272, 60
+ createsprite gBattleAnimSpriteTemplate_83D7AE0, 40, 40, 256, 75
+ createsprite gBattleAnimSpriteTemplate_83D7AE0, 40, 112, 256, 90
+ createsprite gBattleAnimSpriteTemplate_83D7AE0, 40, 200, 272, 90
+ delay 75
+ createvisualtask sub_80E1F8C, 2, 4, 4, 4, 0, 10, 28479
end
Move_GROWTH: @ 81CA1B3
call _81CA1C0
- wait
+ waitforvisualfinish
call _81CA1C0
- wait
+ waitforvisualfinish
end
_81CA1C0:
- createtask sub_80E1F8C, 2, 2, 0, 2, 0, 8, 32767
- panse_19 SE_W036, 192
- createtask sub_80A8D34, 5, -3, -3, 16, 0, 0
- ret
+ createvisualtask sub_80E1F8C, 2, 2, 0, 2, 0, 8, 32767
+ playsewithpan SE_W036, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -3, -3, 16, ANIM_BANK_ATTACKER, 0
+ return
Move_WHIRLWIND: @ 81CA1E9
- loadsprite 10162
- sprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, -8, 1, 60, 0
- sprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, 0, 1, 60, 1
- sprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, 8, 1, 60, 2
- sprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, 16, 1, 60, 3
- sprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, 24, 1, 60, 4
- sprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, 32, 1, 60, 0
- pause 5
- panse_1C SE_W104, 63, 10, 4
- createtask sub_80A7FA0, 2, 1, 4, 0, 15, 1
- pause 29
- createtask sub_80A8500, 2, 1, 12, 6, 1, 5
- pause 7
- panse_19 SE_W081, 63
- createtask sub_80A8A80, 5, 1, 8
- wait
+ loadspritegfx 10162
+ createsprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, -8, 1, 60, 0
+ createsprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, 0, 1, 60, 1
+ createsprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, 8, 1, 60, 2
+ createsprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, 16, 1, 60, 3
+ createsprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, 24, 1, 60, 4
+ createsprite gBattleAnimSpriteTemplate_83DA51C, 2, 0, 32, 1, 60, 0
+ delay 5
+ loopsewithpan SE_W104, 63, 10, 4
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 15, 1
+ delay 29
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_TARGET, 12, 6, 1, 5
+ delay 7
+ playsewithpan SE_W081, 63
+ createvisualtask sub_80A8A80, 5, 1, 8
+ waitforvisualfinish
end
Move_CONFUSE_RAY: @ 81CA291
- loadsprite 10013
- monbg 3
+ loadspritegfx 10013
+ monbg ANIM_BANK_DEF_PARTNER
fadetobg 2
waitbgfadein
- createtask sub_812B374, 2, -64, 63, 2, 0
- createtask sub_80E2094, 2, 10013, 0, 6, 0, 14, 351
- sprite gBattleAnimSpriteTemplate_83DAE64, 130, 28, 0, 288
- wait
+ createvisualtask sub_812B374, 2, -64, 63, 2, 0
+ createvisualtask sub_80E2094, 2, 10013, 0, 6, 0, 14, 351
+ createsprite gBattleAnimSpriteTemplate_83DAE64, 130, 28, 0, 288
+ waitforvisualfinish
setalpha 8, 8
- panse_19 SE_W081B, 63
- sprite gBattleAnimSpriteTemplate_83DAE7C, 130, 0, -16
- wait
- pause 0
+ playsewithpan SE_W081B, 63
+ createsprite gBattleAnimSpriteTemplate_83DAE7C, 130, 0, -16
+ waitforvisualfinish
+ delay 0
blendoff
- clearmonbg 3
+ clearmonbg ANIM_BANK_DEF_PARTNER
restorebg
waitbgfadein
end
Move_LOCK_ON: @ 81CA2E4
- loadsprite 10014
- sprite gBattleAnimSpriteTemplate_83D6DAC, 40
- sprite gBattleAnimSpriteTemplate_83D6DC4, 40, 1
- sprite gBattleAnimSpriteTemplate_83D6DC4, 40, 2
- sprite gBattleAnimSpriteTemplate_83D6DC4, 40, 3
- sprite gBattleAnimSpriteTemplate_83D6DC4, 40, 4
- pause 120
- setvar 7, -1
- wait
+ loadspritegfx 10014
+ createsprite gBattleAnimSpriteTemplate_83D6DAC, 40
+ createsprite gBattleAnimSpriteTemplate_83D6DC4, 40, 1
+ createsprite gBattleAnimSpriteTemplate_83D6DC4, 40, 2
+ createsprite gBattleAnimSpriteTemplate_83D6DC4, 40, 3
+ createsprite gBattleAnimSpriteTemplate_83D6DC4, 40, 4
+ delay 120
+ setarg 7, -1
+ waitforvisualfinish
end
Move_MEAN_LOOK: @ 81CA31A
- loadsprite 10187
- monbg 3
- panse_19 SE_W060, 192
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 16, 0
- panse_1C SE_W109, 63, 15, 4
- panse_1D SE_W043, 63, 85
- sprite gBattleAnimSpriteTemplate_8402264, 2
- pause 120
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0
- pause 30
- clearmonbg 3
- wait
+ loadspritegfx 10187
+ monbg ANIM_BANK_DEF_PARTNER
+ playsewithpan SE_W060, 192
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 16, 0
+ loopsewithpan SE_W109, 63, 15, 4
+ waitplaysewithpan SE_W043, 63, 85
+ createsprite gBattleAnimSpriteTemplate_8402264, 2
+ delay 120
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0
+ delay 30
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ waitforvisualfinish
end
Move_ROCK_THROW: @ 81CA35F
- loadsprite 10058
- sprite gBattleAnimSpriteTemplate_83DB428, 130, 6, 1, 15, 1
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, 0, 1, 0, 0
- panse_19 SE_W088, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, 19, 1, 10, 0
- panse_19 SE_W088, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, -23, 2, -10, 0
- panse_19 SE_W088, 63
- createtask sub_80A7E7C, 2, 1, 0, 5, 20, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, -15, 1, -10, 0
- panse_19 SE_W088, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, 23, 2, 10, 0
- panse_19 SE_W088, 63
- wait
+ loadspritegfx 10058
+ createsprite gBattleAnimSpriteTemplate_83DB428, 130, 6, 1, 15, 1
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, 0, 1, 0, 0
+ playsewithpan SE_W088, 63
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, 19, 1, 10, 0
+ playsewithpan SE_W088, 63
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, -23, 2, -10, 0
+ playsewithpan SE_W088, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 5, 20, 1
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, -15, 1, -10, 0
+ playsewithpan SE_W088, 63
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, 23, 2, 10, 0
+ playsewithpan SE_W088, 63
+ waitforvisualfinish
end
Move_ROCK_SLIDE: @ 81CA3EB
- loadsprite 10058
- monbg 3
- sprite gBattleAnimSpriteTemplate_83DB428, 2, 7, 1, 11, 1
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, -5, 1, -5, 1
- panse_19 SE_W088, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, 5, 0, 6, 1
- panse_19 SE_W088, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, 19, 1, 10, 1
- panse_19 SE_W088, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, -23, 2, -10, 1
- panse_19 SE_W088, 63
- createtask sub_80A7E7C, 2, 1, 0, 5, 50, 1
- createtask sub_80A7E7C, 2, 3, 0, 5, 50, 1
- pause 2
+ loadspritegfx 10058
+ monbg ANIM_BANK_DEF_PARTNER
+ createsprite gBattleAnimSpriteTemplate_83DB428, 2, 7, 1, 11, 1
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, -5, 1, -5, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, 5, 0, 6, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, 19, 1, 10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, -23, 2, -10, 1
+ playsewithpan SE_W088, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 5, 50, 1
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_DEF_PARTNER, 0, 5, 50, 1
+ delay 2
call _81CA483
call _81CA483
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
_81CA483:
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, -20, 0, -10, 1
- panse_19 SE_W088, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, 28, 1, 10, 1
- panse_19 SE_W088, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, -10, 1, -5, 1
- panse_19 SE_W088, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, 10, 0, 6, 1
- panse_19 SE_W088, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, 24, 1, 10, 1
- panse_19 SE_W088, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, -32, 2, -10, 1
- panse_19 SE_W088, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, -20, 0, -10, 1
- panse_19 SE_W088, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC4C, 130, 30, 2, 10, 1
- panse_19 SE_W088, 63
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, -20, 0, -10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, 28, 1, 10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, -10, 1, -5, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, 10, 0, 6, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, 24, 1, 10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, -32, 2, -10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, -20, 0, -10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC4C, 130, 30, 2, 10, 1
+ playsewithpan SE_W088, 63
+ delay 2
+ return
Move_THIEF: @ 81CA52C
- loadsprite 10135
- monbg 1
- pause 1
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
+ delay 1
fadetobg 1
waitbgfadein
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4
- pause 6
- panse_19 SE_W233, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A7FA0, 2, 1, 1, 0, 8, 1
- wait
- pause 20
- clearmonbg 1
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4
+ delay 6
+ playsewithpan SE_W233, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 1, 0, 8, 1
+ waitforvisualfinish
+ delay 20
+ clearmonbg ANIM_BANK_TARGET
blendoff
restorebg
waitbgfadein
end
Move_BUBBLE_BEAM: @ 81CA573
- loadsprite 10146
- loadsprite 10155
- monbg 1
+ loadspritegfx 10146
+ loadspritegfx 10155
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- pause 1
+ delay 1
call _81CA5AD
- createtask sub_80A8B88, 5, 0, 3, 3072, 8, 1
+ createvisualtask AnimTask_SwayMon, 5, 0, 3, 3072, 8, 1
call _81CA5AD
call _81CA5AD
- wait
- call Unknown_81D5FF8
- wait
- clearmonbg 1
+ waitforvisualfinish
+ call WaterBubbleEffect
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
_81CA5AD:
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 35, 70, 0, 256, 50
- panse_19 SE_W145, 192
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 20, 40, -10, 256, 50
- panse_19 SE_W145, 192
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 10, -60, 0, 256, 50
- panse_19 SE_W145, 192
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 15, -15, 10, 256, 50
- panse_19 SE_W145, 192
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 30, 10, -10, 256, 50
- panse_19 SE_W145, 192
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 25, -30, 10, 256, 50
- panse_19 SE_W145, 192
- pause 3
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 35, 70, 0, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 20, 40, -10, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 10, -60, 0, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 15, -15, 10, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 30, 10, -10, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 25, -30, 10, 256, 50
+ playsewithpan SE_W145, 192
+ delay 3
+ return
Move_ICY_WIND: @ 81CA650
- loadsprite 10141
- loadsprite 10142
- monbg 3
- createtask sub_80E2A38, 10, 11, 4, 0, 4, 0
+ loadspritegfx 10141
+ loadspritegfx 10142
+ monbg ANIM_BANK_DEF_PARTNER
+ createvisualtask sub_80E2A38, 10, 11, 4, 0, 4, 0
fadetobg 15
waitbgfadeout
- panse_19 SE_W196, 0
+ playsewithpan SE_W196, 0
waitbgfadein
- wait
+ waitforvisualfinish
panse_1B SE_W016, 192, 63, 2, 0
call _81CA6A8
- pause 5
+ delay 5
call _81CA6A8
- panse_19 SE_W016B, 63
- pause 55
+ playsewithpan SE_W016B, 63
+ delay 55
call Unknown_81D5E0E
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
restorebg
waitbgfadeout
- createtask sub_80E2A38, 10, 11, 4, 4, 0, 0
+ createvisualtask sub_80E2A38, 10, 11, 4, 4, 0, 0
waitbgfadein
end
_81CA6A8:
- sprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, 0, 0, 0, 72, 1
- pause 5
- sprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, 10, 0, 10, 72, 1
- pause 5
- sprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, -10, 0, -10, 72, 1
- pause 5
- sprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, 15, 0, 15, 72, 1
- pause 5
- sprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, -5, 0, -5, 72, 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, 0, 0, 0, 72, 1
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, 10, 0, 10, 72, 1
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, -10, 0, -10, 72, 1
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, 15, 0, 15, 72, 1
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 168, 0, -5, 0, -5, 72, 1
+ return
Move_SMOKESCREEN: @ 81CA710
- loadsprite 10016
- loadsprite 10017
- panse_19 SE_W104, 192
- sprite gBattleAnimSpriteTemplate_84021B0, 130, 20, 0, 0, 0, 35, -25
- wait
- createtask sub_812C1D0, 2
- pause 2
- panse_19 SE_W028, 63
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, -12, 104, 0, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, -12, 72, 1, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, -6, 56, 1, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, -6, 88, 0, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, 0, 56, 0, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, 0, 88, 1, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, 6, 72, 0, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, 6, 104, 1, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, 12, 72, 0, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, 12, 56, 1, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, 18, 80, 0, 75
- sprite gBattleAnimSpriteTemplate_8402198, 132, 0, 18, 72, 1, 75
- wait
+ loadspritegfx 10016
+ loadspritegfx 10017
+ playsewithpan SE_W104, 192
+ createsprite gBattleAnimSpriteTemplate_84021B0, 130, 20, 0, 0, 0, 35, -25
+ waitforvisualfinish
+ createvisualtask sub_812C1D0, 2
+ delay 2
+ playsewithpan SE_W028, 63
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, -12, 104, 0, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, -12, 72, 1, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, -6, 56, 1, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, -6, 88, 0, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, 0, 56, 0, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, 0, 88, 1, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, 6, 72, 0, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, 6, 104, 1, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, 12, 72, 0, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, 12, 56, 1, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, 18, 80, 0, 75
+ createsprite gBattleAnimSpriteTemplate_8402198, 132, 0, 18, 72, 1, 75
+ waitforvisualfinish
end
Move_CONVERSION: @ 81CA809
- loadsprite 10018
- monbg 2
+ loadspritegfx 10018
+ monbg ANIM_BANK_ATK_PARTNER
monbgprio_28 0
setalpha 16, 0
- pause 0
- panse_19 SE_W129, 192
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, -24, -24
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, -8, -24
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, 8, -24
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, 24, -24
- pause 3
- panse_19 SE_W129, 192
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, -24, -8
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, -8, -8
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, 8, -8
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, 24, -8
- pause 3
- panse_19 SE_W129, 192
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, -24, 8
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, -8, 8
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, 8, 8
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, 24, 8
- pause 3
- panse_19 SE_W129, 192
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, -24, 24
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, -8, 24
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, 8, 24
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6F80, 2, 24, 24
- pause 20
- panse_19 SE_W112, 192
- createtask sub_80E21A8, 2, 10018, 1, 1, 14335, 12, 0, 0
- pause 6
- createtask sub_80CE108, 5
- wait
- pause 1
- clearmonbg 2
+ delay 0
+ playsewithpan SE_W129, 192
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, -24, -24
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, -8, -24
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, 8, -24
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, 24, -24
+ delay 3
+ playsewithpan SE_W129, 192
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, -24, -8
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, -8, -8
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, 8, -8
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, 24, -8
+ delay 3
+ playsewithpan SE_W129, 192
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, -24, 8
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, -8, 8
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, 8, 8
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, 24, 8
+ delay 3
+ playsewithpan SE_W129, 192
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, -24, 24
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, -8, 24
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, 8, 24
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6F80, 2, 24, 24
+ delay 20
+ playsewithpan SE_W112, 192
+ createvisualtask sub_80E21A8, 2, 10018, 1, 1, 14335, 12, 0, 0
+ delay 6
+ createvisualtask sub_80CE108, 5
+ waitforvisualfinish
+ delay 1
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
end
Move_CONVERSION_2: @ 81CA91E
- loadsprite 10018
- monbg 3
- monbgprio_2A 1
+ loadspritegfx 10018
+ monbg ANIM_BANK_DEF_PARTNER
+ monbgprio_2A ANIM_BANK_TARGET
setalpha 0, 16
- pause 0
- panse_19 SE_W112, 63
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, -24, -24, 60
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, -8, -24, 65
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, 8, -24, 70
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, 24, -24, 75
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, -24, -8, 80
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, -8, -8, 85
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, 8, -8, 90
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, 24, -8, 95
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, -24, 8, 100
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, -8, 8, 105
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, 8, 8, 110
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, 24, 8, 115
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, -24, 24, 120
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, -8, 24, 125
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, 8, 24, 130
- sprite gBattleAnimSpriteTemplate_83D6FB0, 2, 24, 24, 135
- createtask sub_80CE210, 5
- pause 60
- panse_19 SE_W129, 63
- pause 10
- panse_19 SE_W129, 63
- pause 10
- panse_19 SE_W129, 63
- pause 10
- panse_19 SE_W129, 63
- pause 10
- panse_19 SE_W129, 63
- pause 10
- panse_19 SE_W129, 63
- pause 10
- panse_19 SE_W129, 63
- pause 10
- panse_19 SE_W129, 63
- wait
- clearmonbg 3
+ delay 0
+ playsewithpan SE_W112, 63
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, -24, -24, 60
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, -8, -24, 65
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, 8, -24, 70
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, 24, -24, 75
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, -24, -8, 80
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, -8, -8, 85
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, 8, -8, 90
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, 24, -8, 95
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, -24, 8, 100
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, -8, 8, 105
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, 8, 8, 110
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, 24, 8, 115
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, -24, 24, 120
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, -8, 24, 125
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, 8, 24, 130
+ createsprite gBattleAnimSpriteTemplate_83D6FB0, 2, 24, 24, 135
+ createvisualtask sub_80CE210, 5
+ delay 60
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ delay 10
+ playsewithpan SE_W129, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_ROLLING_KICK: @ 81CAA3A
- loadsprite 10143
- loadsprite 10135
- monbg 1
- setalpha 12, 8
- createtask sub_80A8500, 2, 0, 18, 6, 1, 4
- panse_19 SE_W104, 192
- pause 6
- panse_19 SE_W104, 192
- wait
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 0, 0, 4
- sprite gBattleAnimSpriteTemplate_83D9FF0, 2, -24, 0, 48, 10, 160, 0
- pause 5
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -8, 0, 1, 2
- createtask sub_80A7E7C, 2, 1, 5, 0, 6, 1
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 1, 8
- clearmonbg 1
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 18, 6, 1, 4
+ playsewithpan SE_W104, 192
+ delay 6
+ playsewithpan SE_W104, 192
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4
+ createsprite gBattleAnimSpriteTemplate_83D9FF0, 2, -24, 0, 48, 10, 160, 0
+ delay 5
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, -8, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 6, 1
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 1, 8
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_HEADBUTT: @ 81CAABD
- loadsprite 10135
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 0
- panse_19 SE_W029, 192
- wait
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 1
- wait
- createtask sub_80A8154, 2, 0, 2, 0, 4, 1
- createtask sub_80A7E7C, 2, 1, 5, 0, 6, 1
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 1
- panse_19 SE_W233B, 63
- wait
+ loadspritegfx 10135
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 0
+ playsewithpan SE_W029, 192
+ waitforvisualfinish
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 1
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 4, 1
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 6, 1
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 1
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
end
Move_HORN_ATTACK: @ 81CAB1A
- loadsprite 10135
- loadsprite 10020
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 0
- panse_19 SE_W029, 192
- wait
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 1
- sprite gBattleAnimSpriteTemplate_83D7050, 132, 0, 0, 10
- wait
- createtask sub_80A8154, 2, 0, 2, 0, 4, 1
- createtask sub_80A7E7C, 2, 1, 5, 0, 6, 1
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 1
- panse_19 SE_W030, 63
- wait
+ loadspritegfx 10135
+ loadspritegfx 10020
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 0
+ playsewithpan SE_W029, 192
+ waitforvisualfinish
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D7050, 132, 0, 0, 10
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 4, 1
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 6, 1
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 1
+ playsewithpan SE_W030, 63
+ waitforvisualfinish
end
Move_FURY_ATTACK: @ 81CAB87
- loadsprite 10135
- loadsprite 10020
- createtask sub_80A8E04, 2, 4, 256, 0, 2
- ifelse _81CABB8, _81CABDE
+ loadspritegfx 10135
+ loadspritegfx 10020
+ createvisualtask sub_80A8E04, 2, 4, 256, 0, 2
+ choosetwoturnanim _81CABB8, _81CABDE
_81CABA5:
- createtask sub_80A7E7C, 2, 1, 5, 0, 6, 1
- wait
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 6, 1
+ waitforvisualfinish
end
_81CABB8:
- sprite gBattleAnimSpriteTemplate_83D7050, 132, 8, 8, 10
- wait
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 1
- panse_19 SE_W030, 63
- jump _81CABA5
+ createsprite gBattleAnimSpriteTemplate_83D7050, 132, 8, 8, 10
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 1
+ playsewithpan SE_W030, 63
+ goto _81CABA5
_81CABDE:
- sprite gBattleAnimSpriteTemplate_83D7050, 132, -8, -8, 10
- wait
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 1
- panse_19 SE_W030, 63
- jump _81CABA5
+ createsprite gBattleAnimSpriteTemplate_83D7050, 132, -8, -8, 10
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 1
+ playsewithpan SE_W030, 63
+ goto _81CABA5
Move_HORN_DRILL: @ 81CAC04
- loadsprite 10135
- loadsprite 10020
- jumpunkcond _81CAD6A
+ loadspritegfx 10135
+ loadspritegfx 10020
+ jumpifcontest _81CAD6A
fadetobg 7
waitbgfadeout
- createtask sub_80E3A58, 5, -2304, 768, 1, -1
+ createvisualtask sub_80E3A58, 5, -2304, 768, 1, -1
_81CAC21:
waitbgfadein
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 0
- panse_19 SE_W029, 192
- wait
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 1
- sprite gBattleAnimSpriteTemplate_83D7050, 132, 0, 0, 12
- wait
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 0
+ playsewithpan SE_W029, 192
+ waitforvisualfinish
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D7050, 132, 0, 0, 12
+ waitforvisualfinish
playse SE_BAN
- createtask sub_80A8154, 2, 0, 2, 0, 40, 1
- createtask sub_80A8154, 2, 1, 10, 0, 40, 1
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 3
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 2, 1, 3
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB538, 131, -4, 3, 1, 3
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB538, 131, -8, -5, 1, 3
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 4, -12, 1, 3
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 16, 0, 1, 3
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 5, 18, 1, 3
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB538, 131, -17, 12, 1, 2
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB538, 131, -21, -15, 1, 2
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 8, -27, 1, 2
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 32, 0, 1, 2
- panse_19 SE_W030, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2
- wait
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 40, 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 10, 0, 40, 1
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 0, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 0, 2, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, -4, 3, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, -8, -5, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 4, -12, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 16, 0, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 5, 18, 1, 3
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, -17, 12, 1, 2
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, -21, -15, 1, 2
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 8, -27, 1, 2
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 32, 0, 1, 2
+ playsewithpan SE_W030, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6DE4, 2, 2
+ waitforvisualfinish
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
end
_81CAD6A:
fadetobg 8
waitbgfadeout
- createtask sub_80E3A58, 5, 2304, 768, 0, -1
- jump _81CAC21
+ createvisualtask sub_80E3A58, 5, 2304, 768, 0, -1
+ goto _81CAC21
Move_THRASH: @ 81CAD81
- loadsprite 10135
- loadsprite 10143
- createtask sub_80D0A4C, 2
- createtask sub_80D0AB8, 2
- sprite gBattleAnimSpriteTemplate_83D9FC0, 131, 1, 10, 0
- createtask sub_80A8154, 2, 1, 4, 0, 7, 1
- panse_19 SE_W004, 63
- pause 28
- sprite gBattleAnimSpriteTemplate_83D9FC0, 131, 1, 10, 1
- createtask sub_80A8154, 2, 1, 4, 0, 7, 1
- panse_19 SE_W233B, 63
- pause 28
- sprite gBattleAnimSpriteTemplate_83D9FC0, 131, 1, 10, 3
- createtask sub_80A8154, 2, 1, 8, 0, 16, 1
- panse_19 SE_W025B, 63
+ loadspritegfx 10135
+ loadspritegfx 10143
+ createvisualtask sub_80D0A4C, 2
+ createvisualtask sub_80D0AB8, 2
+ createsprite gBattleAnimSpriteTemplate_83D9FC0, 131, 1, 10, 0
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 7, 1
+ playsewithpan SE_W004, 63
+ delay 28
+ createsprite gBattleAnimSpriteTemplate_83D9FC0, 131, 1, 10, 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 4, 0, 7, 1
+ playsewithpan SE_W233B, 63
+ delay 28
+ createsprite gBattleAnimSpriteTemplate_83D9FC0, 131, 1, 10, 3
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 8, 0, 16, 1
+ playsewithpan SE_W025B, 63
end
Move_SING: @ 81CAE00
- loadsprite 10072
- monbg 3
- createtask sub_80CEA20, 2
- wait
+ loadspritegfx 10072
+ monbg ANIM_BANK_DEF_PARTNER
+ createvisualtask sub_80CEA20, 2
+ waitforvisualfinish
panse_1B SE_W047, 192, 63, 2, 0
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 7, 0, 12
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 6, 1, 12
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 1, 2, 12
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 3, 12
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 3, 0, 12
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 12
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 5, 2, 12
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 6, 3, 12
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 0, 12
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 12
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 1, 2, 12
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 5, 3, 12
- pause 4
- wait
- clearmonbg 3
- createtask sub_80CEAD8, 2
- wait
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 7, 0, 12
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 6, 1, 12
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 1, 2, 12
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 3, 12
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 3, 0, 12
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 12
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 5, 2, 12
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 6, 3, 12
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 0, 12
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 12
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 1, 2, 12
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 5, 3, 12
+ delay 4
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ createvisualtask sub_80CEAD8, 2
+ waitforvisualfinish
end
Move_LOW_KICK: @ 81CAED4
- loadsprite 10143
- loadsprite 10135
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 0, 0, 4
- sprite gBattleAnimSpriteTemplate_83D9FF0, 130, -24, 28, 40, 8, 160, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, -8, 8, 1, 2
- createtask sub_80A8E04, 2, 6, 384, 1, 2
- panse_19 SE_W233B, 63
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 1, 4
+ loadspritegfx 10143
+ loadspritegfx 10135
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4
+ createsprite gBattleAnimSpriteTemplate_83D9FF0, 130, -24, 28, 40, 8, 160, 0
+ delay 4
+ createsprite gBasicHitSplatSpriteTemplate, 130, -8, 8, 1, 2
+ createvisualtask sub_80A8E04, 2, 6, 384, 1, 2
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 1, 4
end
Move_EARTHQUAKE: @ 81CAF31
- createtask sub_80E1864, 5, 5, 10, 50
- createtask sub_80E1864, 5, 4, 10, 50
- panse_19 SE_W089, 0
- pause 10
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
- pause 16
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
+ createvisualtask sub_80E1864, 5, 5, 10, 50
+ createvisualtask sub_80E1864, 5, 4, 10, 50
+ playsewithpan SE_W089, 0
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
+ delay 16
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
end
Move_FISSURE: @ 81CAF7E
- loadsprite 10074
- createtask sub_80E1864, 3, 5, 10, 50
- createtask sub_80E1864, 3, 1, 10, 50
- panse_19 SE_W089, 63
- pause 8
+ loadspritegfx 10074
+ createvisualtask sub_80E1864, 3, 5, 10, 50
+ createvisualtask sub_80E1864, 3, 1, 10, 50
+ playsewithpan SE_W089, 63
+ delay 8
call _81CAFFF
- pause 15
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
- pause 15
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
+ delay 15
call _81CB050
- pause 15
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
- pause 15
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
+ delay 15
call _81CAFFF
- pause 50
+ delay 50
fadetobg 21
waitbgfadeout
- createtask sub_80E1BB0, 5, 1, 5, -1
+ createvisualtask sub_80E1BB0, 5, 1, 5, -1
waitbgfadein
- pause 40
+ delay 40
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
end
_81CAFFF:
- sprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 0, 12, -48, -16, 24
- sprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 0, 16, -16, -10, 24
- sprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 1, 14, -52, -18, 24
- sprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 1, 12, -32, -16, 24
- panse_19 SE_W091, 63
- ret
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 0, 12, -48, -16, 24
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 0, 16, -16, -10, 24
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 1, 14, -52, -18, 24
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 1, 12, -32, -16, 24
+ playsewithpan SE_W091, 63
+ return
_81CB050:
- sprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 0, 12, -24, -16, 24
- sprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 0, 16, -38, -10, 24
- sprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 1, 14, -20, -18, 24
- sprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 1, 12, -36, -16, 24
- panse_19 SE_W091, 63
- ret
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 0, 12, -24, -16, 24
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 0, 16, -38, -10, 24
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 1, 14, -20, -18, 24
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 130, 1, 1, 12, -36, -16, 24
+ playsewithpan SE_W091, 63
+ return
Move_DIG: @ 81CB0A1
- ifelse _81CB0AB, _81CB106
+ choosetwoturnanim _81CB0AB, _81CB106
_81CB0AA:
end
_81CB0AB:
- loadsprite 10074
- loadsprite 10281
- sprite gBattleAnimSpriteTemplate_83DB364, 1, 0, 0, 180
- sprite gBattleAnimSpriteTemplate_83DB364, 1, 0, 1, 180
+ loadspritegfx 10074
+ loadspritegfx 10281
+ createsprite gBattleAnimSpriteTemplate_83DB364, 1, 0, 0, 180
+ createsprite gBattleAnimSpriteTemplate_83DB364, 1, 0, 1, 180
monbg_22 0
- pause 1
- createtask sub_80E1244, 2, 0
- pause 6
+ delay 1
+ createvisualtask sub_80E1244, 2, 0
+ delay 6
call _81CB16A
call _81CB16A
call _81CB16A
call _81CB16A
call _81CB16A
- wait
+ waitforvisualfinish
clearmonbg_23 0
- pause 1
- createtask sub_80E1244, 2, 1
- jump _81CB0AA
+ delay 1
+ createvisualtask sub_80E1244, 2, 1
+ goto _81CB0AA
_81CB106:
- loadsprite 10135
- loadsprite 10281
- createtask sub_80E149C, 2, 0
- wait
- monbg 0
- sprite gBattleAnimSpriteTemplate_83DB364, 1, 0, 0, 48
- sprite gBattleAnimSpriteTemplate_83DB364, 1, 0, 1, 48
- pause 1
- createtask sub_80E149C, 2, 1
- pause 16
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -8, 0, 1, 2
- createtask sub_80A7E7C, 2, 1, 5, 0, 6, 1
- panse_19 SE_W025B, 192
- clearmonbg 0
- jump _81CB0AA
+ loadspritegfx 10135
+ loadspritegfx 10281
+ createvisualtask sub_80E149C, 2, 0
+ waitforvisualfinish
+ monbg ANIM_BANK_ATTACKER
+ createsprite gBattleAnimSpriteTemplate_83DB364, 1, 0, 0, 48
+ createsprite gBattleAnimSpriteTemplate_83DB364, 1, 0, 1, 48
+ delay 1
+ createvisualtask sub_80E149C, 2, 1
+ delay 16
+ createsprite gBasicHitSplatSpriteTemplate, 2, -8, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 6, 1
+ playsewithpan SE_W025B, 192
+ clearmonbg ANIM_BANK_ATTACKER
+ goto _81CB0AA
_81CB16A:
- sprite gBattleAnimSpriteTemplate_83DB34C, 2, 0, 0, 12, 4, -16, 18
- sprite gBattleAnimSpriteTemplate_83DB34C, 2, 0, 0, 16, 4, -10, 18
- sprite gBattleAnimSpriteTemplate_83DB34C, 2, 0, 1, 14, 4, -18, 18
- sprite gBattleAnimSpriteTemplate_83DB34C, 2, 0, 1, 12, 4, -16, 18
- panse_19 SE_W091, 192
- pause 32
- ret
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 2, 0, 0, 12, 4, -16, 18
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 2, 0, 0, 16, 4, -10, 18
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 2, 0, 1, 14, 4, -18, 18
+ createsprite gBattleAnimSpriteTemplate_83DB34C, 2, 0, 1, 12, 4, -16, 18
+ playsewithpan SE_W091, 192
+ delay 32
+ return
Move_MEDITATE: @ 81CB1BD
call Unknown_81D61E7
- createtask sub_80DBC94, 2
- panse_19 SE_W029, 192
- pause 16
- panse_19 SE_W036, 192
- wait
+ createvisualtask sub_80DBC94, 2
+ playsewithpan SE_W029, 192
+ delay 16
+ playsewithpan SE_W036, 192
+ waitforvisualfinish
call Unknown_81D61F3
end
Move_AGILITY: @ 81CB1DA
- monbg 2
- setalpha 12, 8
- createtask sub_80A8500, 2, 0, 24, 6, 4, 4
- createtask sub_80E2DD8, 2, 0, 4, 7, 10
- panse_19 SE_W104, 192
- pause 12
- panse_19 SE_W104, 192
- pause 12
- panse_19 SE_W104, 192
- pause 12
- panse_19 SE_W104, 192
- pause 12
- panse_19 SE_W104, 192
- pause 12
- wait
- clearmonbg 2
- blendoff
- pause 1
+ monbg ANIM_BANK_ATK_PARTNER
+ setalpha 12, 8
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 24, 6, 4, 4
+ createvisualtask sub_80E2DD8, 2, 0, 4, 7, 10
+ playsewithpan SE_W104, 192
+ delay 12
+ playsewithpan SE_W104, 192
+ delay 12
+ playsewithpan SE_W104, 192
+ delay 12
+ playsewithpan SE_W104, 192
+ delay 12
+ playsewithpan SE_W104, 192
+ delay 12
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
+ blendoff
+ delay 1
end
Move_QUICK_ATTACK: @ 81CB224
- loadsprite 10135
- monbg 2
+ loadspritegfx 10135
+ monbg ANIM_BANK_ATK_PARTNER
setalpha 12, 8
- createtask sub_80A8500, 2, 0, 24, 6, 1, 5
- createtask sub_80E2DD8, 2, 0, 4, 7, 3
- panse_19 SE_W026, 192
- pause 4
- createtask sub_80A7E7C, 2, 1, 5, 0, 6, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 132, 0, 0, 1, 1
- panse_19 SE_W233B, 63
- wait
- clearmonbg 2
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 24, 6, 1, 5
+ createvisualtask sub_80E2DD8, 2, 0, 4, 7, 3
+ playsewithpan SE_W026, 192
+ delay 4
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 6, 1
+ createsprite gBasicHitSplatSpriteTemplate, 132, 0, 0, 1, 1
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
- wait
+ waitforvisualfinish
end
Move_RAGE: @ 81CB27C
- loadsprite 10135
- loadsprite 10087
- monbg 1
- setalpha 12, 8
- createtask sub_8079790, 3, 0, 31, 10, 0, 2
- sprite gBattleAnimSpriteTemplate_83D7798, 2, 0, -20, -28
- panse_19 SE_W207B, 192
- pause 20
- sprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28
- panse_19 SE_W207B, 192
- wait
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 6
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A9058, 2, 1, 1, 10, 1, 0
- panse_19 SE_W233B, 63
- wait
- clearmonbg 1
+ loadspritegfx 10135
+ loadspritegfx 10087
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ createvisualtask AnimTask_BlendMonInAndOut, 3, ANIM_BANK_ATTACKER, 31, 10, 0, 2
+ createsprite gBattleAnimSpriteTemplate_83D7798, 2, 0, -20, -28
+ playsewithpan SE_W207B, 192
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83D7798, 2, 0, 20, -28
+ playsewithpan SE_W207B, 192
+ waitforvisualfinish
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 6
+ delay 4
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask sub_80A9058, 2, 1, 1, 10, 1, 0
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
end
Move_TELEPORT: @ 81CB2F2
call Unknown_81D61E7
- createtask sub_80DBCFC, 2
- panse_19 SE_W100, 192
- pause 15
+ createvisualtask sub_80DBCFC, 2
+ playsewithpan SE_W100, 192
+ delay 15
call Unknown_81D61F3
- wait
+ waitforvisualfinish
end
Move_DOUBLE_TEAM: @ 81CB30B
- monbg 2
- setalpha 12, 8
- createtask sub_80CE7E0, 2
- panse_19 SE_W104, 192
- pause 32
- panse_19 SE_W104, 192
- pause 24
- panse_19 SE_W104, 192
- pause 16
- panse_19 SE_W104, 192
- pause 8
- panse_19 SE_W104, 192
- pause 8
- panse_19 SE_W104, 192
- pause 8
- panse_19 SE_W104, 192
- pause 8
- panse_19 SE_W104, 192
- pause 8
- panse_19 SE_W104, 192
- wait
- clearmonbg 2
- blendoff
- pause 1
+ monbg ANIM_BANK_ATK_PARTNER
+ setalpha 12, 8
+ createvisualtask sub_80CE7E0, 2
+ playsewithpan SE_W104, 192
+ delay 32
+ playsewithpan SE_W104, 192
+ delay 24
+ playsewithpan SE_W104, 192
+ delay 16
+ playsewithpan SE_W104, 192
+ delay 8
+ playsewithpan SE_W104, 192
+ delay 8
+ playsewithpan SE_W104, 192
+ delay 8
+ playsewithpan SE_W104, 192
+ delay 8
+ playsewithpan SE_W104, 192
+ delay 8
+ playsewithpan SE_W104, 192
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
+ blendoff
+ delay 1
end
Move_MINIMIZE: @ 81CB352
setalpha 10, 8
- createtask sub_80D0488, 2
- panse_1C SE_W107, 192, 34, 3
- wait
+ createvisualtask sub_80D0488, 2
+ loopsewithpan SE_W107, 192, 34, 3
+ waitforvisualfinish
blendoff
end
Move_METRONOME: @ 81CB365
- loadsprite 10064
- loadsprite 10209
- sprite gBattleAnimSpriteTemplate_83D7220, 11, 0, 100
- panse_19 SE_W118, 192
- pause 6
- sprite gBattleAnimSpriteTemplate_83D72C8, 12, 0
- pause 24
- panse_1C SE_W039, 192, 22, 3
- wait
+ loadspritegfx 10064
+ loadspritegfx 10209
+ createsprite gBattleAnimSpriteTemplate_83D7220, 11, 0, 100
+ playsewithpan SE_W118, 192
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83D72C8, 12, 0
+ delay 24
+ loopsewithpan SE_W039, 192, 22, 3
+ waitforvisualfinish
end
Move_SKULL_BASH: @ 81CB38F
- ifelse _81CB399, _81CB3E6
+ choosetwoturnanim _81CB399, _81CB3E6
_81CB398:
end
_81CB399:
call _81CB3A9
call _81CB3A9
- wait
- jump _81CB398
+ waitforvisualfinish
+ goto _81CB398
_81CB3A9:
- sprite gBattleAnimSpriteTemplate_83C2010, 2, 0, -24, 0, 0, 10, 0
- panse_19 SE_W036, 192
- wait
- createtask sub_80A8E04, 2, 16, 96, 0, 2
- wait
- sprite gBattleAnimSpriteTemplate_83C2010, 2, 0, 24, 0, 0, 10, 1
- wait
- ret
+ createsprite gBattleAnimSpriteTemplate_83C2010, 2, 0, -24, 0, 0, 10, 0
+ playsewithpan SE_W036, 192
+ waitforvisualfinish
+ createvisualtask sub_80A8E04, 2, 16, 96, 0, 2
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83C2010, 2, 0, 24, 0, 0, 10, 1
+ waitforvisualfinish
+ return
_81CB3E6:
- loadsprite 10135
- createtask sub_80CDAC8, 2, 0
- panse_19 SE_W036, 192
- wait
+ loadspritegfx 10135
+ createvisualtask sub_80CDAC8, 2, 0
+ playsewithpan SE_W036, 192
+ waitforvisualfinish
playse SE_BAN
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
- createtask sub_80A8154, 2, 0, 2, 0, 40, 1
- createtask sub_80A8154, 2, 1, 10, 0, 40, 1
- sprite gBattleAnimSpriteTemplate_83DB538, 132, 0, 0, 1, 0
- panse_1C SE_W025B, 63, 8, 3
- wait
- createtask sub_80CDAC8, 2, 1
- jump _81CB398
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 40, 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 10, 0, 40, 1
+ createsprite gBattleAnimSpriteTemplate_83DB538, 132, 0, 0, 1, 0
+ loopsewithpan SE_W025B, 63, 8, 3
+ waitforvisualfinish
+ createvisualtask sub_80CDAC8, 2, 1
+ goto _81CB398
Move_AMNESIA: @ 81CB455
- loadsprite 10093
+ loadspritegfx 10093
call Unknown_81D61E7
- pause 8
- sprite gBattleAnimSpriteTemplate_83DA88C, 20
- panse_19 SE_W118, 192
- pause 54
- panse_1C SE_W118, 192, 16, 3
- wait
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DA88C, 20
+ playsewithpan SE_W118, 192
+ delay 54
+ loopsewithpan SE_W118, 192, 16, 3
+ waitforvisualfinish
call Unknown_81D61F3
end
Move_KINESIS: @ 81CB479
- loadsprite 10075
- loadsprite 10097
- panse_19 SE_W060, 192
+ loadspritegfx 10075
+ loadspritegfx 10097
+ playsewithpan SE_W060, 192
call Unknown_81D61E7
- sprite gBattleAnimSpriteTemplate_83DA824, 20
- sprite gBattleAnimSpriteTemplate_83D7450, 19, 32, -8, 0
- sprite gBattleAnimSpriteTemplate_83D7450, 19, 32, 16, 1
- panse_1C SE_W109, 192, 21, 2
- pause 60
- panse_19 SE_W146, 192
- pause 30
- panse_1C SE_W146, 192, 20, 2
- pause 70
- panse_19 SE_W207B, 192
- wait
+ createsprite gBattleAnimSpriteTemplate_83DA824, 20
+ createsprite gBattleAnimSpriteTemplate_83D7450, 19, 32, -8, 0
+ createsprite gBattleAnimSpriteTemplate_83D7450, 19, 32, 16, 1
+ loopsewithpan SE_W109, 192, 21, 2
+ delay 60
+ playsewithpan SE_W146, 192
+ delay 30
+ loopsewithpan SE_W146, 192, 20, 2
+ delay 70
+ playsewithpan SE_W207B, 192
+ waitforvisualfinish
call Unknown_81D61F3
end
Move_GLARE: @ 81CB4CA
- loadsprite 10248
- loadsprite 10218
- createtask sub_81301EC, 5, 0
- panse_19 SE_W060B, 192
- wait
- createtask sub_80E2A38, 5, 1, 0, 0, 16, 0
- wait
- sprite gBattleAnimSpriteTemplate_83D7B94, 0, -16, -8
- sprite gBattleAnimSpriteTemplate_83D7B94, 0, 16, -8
- createtask sub_80D23B4, 5
- panse_19 SE_W043, 192
- pause 2
- createtask sub_80D60B4, 3, 20, 1, 0
- wait
- createtask sub_80E2A38, 5, 1, 0, 16, 0, 0
+ loadspritegfx 10248
+ loadspritegfx 10218
+ createvisualtask sub_81301EC, 5, 0
+ playsewithpan SE_W060B, 192
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 5, 1, 0, 0, 16, 0
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D7B94, 0, -16, -8
+ createsprite gBattleAnimSpriteTemplate_83D7B94, 0, 16, -8
+ createvisualtask sub_80D23B4, 5
+ playsewithpan SE_W043, 192
+ delay 2
+ createvisualtask sub_80D60B4, 3, 20, 1, 0
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 5, 1, 0, 16, 0, 0
end
Move_BARRAGE: @ 81CB533
- loadsprite 10254
- createtask sub_8130554, 3
- panse_19 SE_W207, 192
- pause 24
- sprite gBattleAnimSpriteTemplate_83DB428, 2, 8, 1, 40, 1
- createtask sub_80A7E7C, 3, 1, 0, 4, 20, 1
- createtask sub_80A7E7C, 3, 3, 0, 4, 20, 1
- panse_1C SE_W070, 63, 8, 2
+ loadspritegfx 10254
+ createvisualtask sub_8130554, 3
+ playsewithpan SE_W207, 192
+ delay 24
+ createsprite gBattleAnimSpriteTemplate_83DB428, 2, 8, 1, 40, 1
+ createvisualtask AnimTask_ShakeMon, 3, 1, 0, 4, 20, 1
+ createvisualtask AnimTask_ShakeMon, 3, 3, 0, 4, 20, 1
+ loopsewithpan SE_W070, 63, 8, 2
end
Move_SKY_ATTACK: @ 81CB57B
- ifelse _81CB585, _81CB68E
+ choosetwoturnanim _81CB585, _81CB68E
_81CB584:
end
_81CB585:
- monbg 3
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 11
- createtask sub_80E3BA4, 5, 7
- jumpvareq 7, 0, _81CB5A0
- jump _81CB617
+ createvisualtask sub_80E3BA4, 5, 7
+ jumpargeq 7, 0, _81CB5A0
+ goto _81CB617
_81CB5A0:
- createtask sub_80E2A38, 10, 27, 1, 0, 12, 0
- wait
- pause 12
- createtask sub_80E2A38, 10, 2, 1, 8, 0, 0
- createtask sub_80E1864, 5, 0, 2, 16
- panse_1C SE_W287, 192, 4, 8
- createtask sub_80E2A38, 10, 2, 1, 0, 15, 32767
- pause 20
- createtask sub_80E2A38, 10, 2, 1, 15, 0, 32767
- wait
- createtask sub_80E2A38, 10, 25, 1, 8, 0, 0
- wait
- clearmonbg 3
- blendoff
- jump _81CB584
+ createvisualtask sub_80E2A38, 10, 27, 1, 0, 12, 0
+ waitforvisualfinish
+ delay 12
+ createvisualtask sub_80E2A38, 10, 2, 1, 8, 0, 0
+ createvisualtask sub_80E1864, 5, 0, 2, 16
+ loopsewithpan SE_W287, 192, 4, 8
+ createvisualtask sub_80E2A38, 10, 2, 1, 0, 15, 32767
+ delay 20
+ createvisualtask sub_80E2A38, 10, 2, 1, 15, 0, 32767
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 25, 1, 8, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ blendoff
+ goto _81CB584
_81CB617:
- createtask sub_80E2A7C, 10, 1, 1, 0, 12, 0
- wait
- pause 12
- createtask sub_80E2A38, 10, 2, 1, 8, 0, 0
- createtask sub_80E1864, 5, 0, 2, 16
- panse_19 SE_W287, 192
- pause 8
- createtask sub_80E2A38, 10, 2, 1, 0, 15, 32767
- pause 20
- createtask sub_80E2A38, 10, 2, 1, 15, 0, 32767
- wait
- createtask sub_80E2A7C, 10, 4, 1, 8, 0, 0
- wait
- clearmonbg 3
- blendoff
- jump _81CB584
+ createvisualtask sub_80E2A7C, 10, 1, 1, 0, 12, 0
+ waitforvisualfinish
+ delay 12
+ createvisualtask sub_80E2A38, 10, 2, 1, 8, 0, 0
+ createvisualtask sub_80E1864, 5, 0, 2, 16
+ playsewithpan SE_W287, 192
+ delay 8
+ createvisualtask sub_80E2A38, 10, 2, 1, 0, 15, 32767
+ delay 20
+ createvisualtask sub_80E2A38, 10, 2, 1, 15, 0, 32767
+ waitforvisualfinish
+ createvisualtask sub_80E2A7C, 10, 4, 1, 8, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ blendoff
+ goto _81CB584
_81CB68E:
- loadsprite 10135
- loadsprite 10284
+ loadspritegfx 10135
+ loadspritegfx 10284
call Unknown_81D61FB
- monbg 0
- createtask sub_80E2A38, 10, 2, 0, 0, 16, 32767
- pause 4
- createtask sub_80DFC24, 5, 0
- wait
- createtask sub_812B340, 5, 238, -64
- sprite gBattleAnimSpriteTemplate_83DA65C, 130
- pause 14
- createtask sub_80A7FA0, 2, 1, 10, 0, 18, 1
- createtask sub_812B30C, 5, 141, 63
- pause 20
- createtask sub_80DFD24, 5, 1
- pause 2
- createtask sub_80E2A38, 10, 2, 0, 15, 0, 32767
- wait
- clearmonbg 0
+ monbg ANIM_BANK_ATTACKER
+ createvisualtask sub_80E2A38, 10, 2, 0, 0, 16, 32767
+ delay 4
+ createvisualtask sub_80DFC24, 5, 0
+ waitforvisualfinish
+ createvisualtask sub_812B340, 5, 238, -64
+ createsprite gBattleAnimSpriteTemplate_83DA65C, 130
+ delay 14
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 10, 0, 18, 1
+ createvisualtask sub_812B30C, 5, 141, 63
+ delay 20
+ createvisualtask sub_80DFD24, 5, 1
+ delay 2
+ createvisualtask sub_80E2A38, 10, 2, 0, 15, 0, 32767
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
call Unknown_81D622B
- jump _81CB584
+ goto _81CB584
Move_FLASH: @ 81CB713
- panse_19 SE_W043, 192
- createtask sub_80E388C, 2
- wait
+ playsewithpan SE_W043, 192
+ createvisualtask sub_80E388C, 2
+ waitforvisualfinish
end
Move_SPLASH: @ 81CB720
- createtask sub_80D074C, 2, 0, 3
- pause 8
- panse_1C SE_W039, 192, 38, 3
- wait
+ createvisualtask sub_80D074C, 2, 0, 3
+ delay 8
+ loopsewithpan SE_W039, 192, 38, 3
+ waitforvisualfinish
end
Move_ACID_ARMOR: @ 81CB735
- monbg 0
+ monbg ANIM_BANK_ATTACKER
setalpha 15, 0
- createtask sub_812F314, 2, 0
- panse_19 SE_W151, 192
- wait
+ createvisualtask sub_812F314, 2, 0
+ playsewithpan SE_W151, 192
+ waitforvisualfinish
blendoff
- clearmonbg 0
- pause 1
+ clearmonbg ANIM_BANK_ATTACKER
+ delay 1
end
Move_SHARPEN: @ 81CB74E
- loadsprite 10185
- sprite gBattleAnimSpriteTemplate_83D6EF0, 2
- wait
+ loadspritegfx 10185
+ createsprite gBattleAnimSpriteTemplate_83D6EF0, 2
+ waitforvisualfinish
end
Move_SUPER_FANG: @ 81CB75A
- loadsprite 10192
- createtask sub_80A8154, 2, 0, 1, 0, 20, 1
- panse_19 SE_W082, 192
- wait
- createtask sub_80A8154, 2, 0, 3, 0, 48, 1
- createtask sub_8079790, 2, 0, 1247, 12, 4, 1
- wait
- pause 20
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7080, 130
- panse_19 SE_W044, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 2143, 14, 32767, 14
- createtask sub_80A7E7C, 2, 1, 0, 7, 12, 1
- wait
+ loadspritegfx 10192
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 1, 0, 20, 1
+ playsewithpan SE_W082, 192
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 3, 0, 48, 1
+ createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_BANK_ATTACKER, 1247, 12, 4, 1
+ waitforvisualfinish
+ delay 20
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7080, 130
+ playsewithpan SE_W044, 63
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 2143, 14, 32767, 14
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 7, 12, 1
+ waitforvisualfinish
blendoff
end
Move_SLASH: @ 81CB7DB
- loadsprite 10183
- sprite gBattleAnimSpriteTemplate_83D6E38, 130, 1, -8, 0
- panse_19 SE_W013, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6E38, 130, 1, 8, 0
- createtask sub_80A7FA0, 2, 1, 4, 0, 18, 1
- panse_19 SE_W013, 63
- wait
+ loadspritegfx 10183
+ createsprite gBattleAnimSpriteTemplate_83D6E38, 130, 1, -8, 0
+ playsewithpan SE_W013, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6E38, 130, 1, 8, 0
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 18, 1
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
end
Move_STRUGGLE: @ 81CB815
- loadsprite 10135
- loadsprite 10215
- monbg 1
+ loadspritegfx 10135
+ loadspritegfx 10215
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- createtask sub_80A8154, 2, 0, 3, 0, 12, 4
- sprite gBattleAnimSpriteTemplate_83D7C90, 2, 0, 0, 2
- sprite gBattleAnimSpriteTemplate_83D7C90, 2, 0, 1, 2
- panse_1C SE_W029, 192, 12, 4
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 2
- createtask sub_80A8154, 2, 1, 3, 0, 6, 1
- panse_19 SE_W025B, 63
- wait
- clearmonbg 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 3, 0, 12, 4
+ createsprite gBattleAnimSpriteTemplate_83D7C90, 2, 0, 0, 2
+ createsprite gBattleAnimSpriteTemplate_83D7C90, 2, 0, 1, 2
+ loopsewithpan SE_W029, 192, 12, 4
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_SKETCH: @ 81CB87B
- loadsprite 10002
- monbg 1
- createtask sub_80D0C88, 2
- sprite gBattleAnimSpriteTemplate_83D77E0, 130
- wait
- clearmonbg 1
- createtask sub_80D074C, 2, 0, 2
- panse_1C SE_W039, 192, 38, 2
+ loadspritegfx 10002
+ monbg ANIM_BANK_TARGET
+ createvisualtask sub_80D0C88, 2
+ createsprite gBattleAnimSpriteTemplate_83D77E0, 130
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
+ createvisualtask sub_80D074C, 2, 0, 2
+ loopsewithpan SE_W039, 192, 38, 2
end
Move_NIGHTMARE: @ 81CB8A3
fadetobg 2
waitbgfadein
- jumpunkcond _81CB8CF
- monbg 3
- createtask sub_80DE1B0, 2
- createtask sub_80A7E7C, 2, 1, 3, 0, 40, 1
- panse_19 SE_W171, 63
- wait
- clearmonbg 3
+ jumpifcontest _81CB8CF
+ monbg ANIM_BANK_DEF_PARTNER
+ createvisualtask sub_80DE1B0, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 40, 1
+ playsewithpan SE_W171, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
restorebg
waitbgfadein
end
_81CB8CF:
- createtask sub_8079790, 2, 0, 32767, 10, 2, 1
- createtask sub_80A7E7C, 2, 0, 3, 0, 32, 1
- panse_19 SE_W171, 63
- wait
+ createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_BANK_ATTACKER, 32767, 10, 2, 1
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_ATTACKER, 3, 0, 32, 1
+ playsewithpan SE_W171, 63
+ waitforvisualfinish
restorebg
waitbgfadein
end
Move_FLAIL: @ 81CB8F9
- loadsprite 10135
- monbg 1
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- createtask sub_812E860, 2, 0
- panse_1C SE_W029, 192, 8, 2
- wait
- sprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 3
- createtask sub_80A9058, 2, 0, 1, 30, 1, 0
- panse_19 SE_W025B, 63
- wait
- clearmonbg 1
+ createvisualtask sub_812E860, 2, 0
+ loopsewithpan SE_W029, 192, 8, 2
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 3
+ createvisualtask sub_80A9058, 2, 0, 1, 30, 1, 0
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_SPITE: @ 81CB936
fadetobg 2
- panse_19 SE_W060, 192
+ playsewithpan SE_W060, 192
waitbgfadein
- monbg 3
- createtask sub_80E1F8C, 2, 2, 2, 6, 0, 8, 32767
- createtask sub_80DE3AC, 2
- panse_1C SE_W060, 63, 20, 3
- wait
+ monbg ANIM_BANK_DEF_PARTNER
+ createvisualtask sub_80E1F8C, 2, 2, 2, 6, 0, 8, 32767
+ createvisualtask sub_80DE3AC, 2
+ loopsewithpan SE_W060, 63, 20, 3
+ waitforvisualfinish
restorebg
waitbgfadein
- clearmonbg 1
+ clearmonbg ANIM_BANK_TARGET
end
Move_MACH_PUNCH: @ 81CB965
- loadsprite 10135
- loadsprite 10143
- monbg 2
- createtask sub_80E3B4C, 2
- jumpvareq 7, 1, _81CB9E6
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg ANIM_BANK_ATK_PARTNER
+ createvisualtask sub_80E3B4C, 2
+ jumpargeq 7, 1, _81CB9E6
fadetobg 9
_81CB97E:
waitbgfadeout
- createtask sub_80E3A58, 5, -2304, 0, 1, -1
+ createvisualtask sub_80E3A58, 5, -2304, 0, 1, -1
waitbgfadein
- pause 0
+ delay 0
setalpha 9, 8
- createtask sub_807A69C, 2, 28968, 10
- panse_19 SE_W026, 192
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, 0, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 132, 0, 0, 8, 1, 0
- panse_19 SE_W004, 63
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- wait
- clearmonbg 2
+ createvisualtask sub_807A69C, 2, 28968, 10
+ playsewithpan SE_W026, 192
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, 132, 0, 0, 8, 1, 0
+ playsewithpan SE_W004, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
end
_81CB9E6:
fadetobg 10
- jump _81CB97E
+ goto _81CB97E
Move_FORESIGHT: @ 81CB9ED
- loadsprite 10258
- monbg 3
+ loadspritegfx 10258
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 16, 0
- sprite gBattleAnimSpriteTemplate_8402A24, 130, 1
- pause 17
- panse_1C SE_W166, 63, 16, 4
- pause 48
- pause 24
- panse_19 SE_W166, 63
- pause 10
- createtask sub_8079790, 5, 1, 32767, 12, 2, 1
- panse_19 SE_W197, 63
- wait
+ createsprite gBattleAnimSpriteTemplate_8402A24, 130, 1
+ delay 17
+ loopsewithpan SE_W166, 63, 16, 4
+ delay 48
+ delay 24
+ playsewithpan SE_W166, 63
+ delay 10
+ createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_BANK_TARGET, 32767, 12, 2, 1
+ playsewithpan SE_W197, 63
+ waitforvisualfinish
blendoff
- clearmonbg 3
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
Move_DESTINY_BOND: @ 81CBA2C
- loadsprite 10188
+ loadspritegfx 10188
fadetobg 2
- panse_19 SE_W060, 192
+ playsewithpan SE_W060, 192
waitbgfadein
- createtask sub_80DE918, 5, 0, 48
- panse_19 SE_W109, 192
- pause 48
- createtask sub_80A8154, 2, 0, 2, 0, 24, 1
- createtask sub_80E2A7C, 2, 6, 1, 0, 12, 30653
- pause 24
- createtask sub_80E2A7C, 2, 6, 1, 12, 0, 30653
- panse_19 SE_W171, 63
- wait
+ createvisualtask sub_80DE918, 5, 0, 48
+ playsewithpan SE_W109, 192
+ delay 48
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 24, 1
+ createvisualtask sub_80E2A7C, 2, 6, 1, 0, 12, 30653
+ delay 24
+ createvisualtask sub_80E2A7C, 2, 6, 1, 12, 0, 30653
+ playsewithpan SE_W171, 63
+ waitforvisualfinish
restorebg
waitbgfadein
blendoff
@@ -3181,1131 +3183,1131 @@ Move_DESTINY_BOND: @ 81CBA2C
end
Move_ENDURE: @ 81CBA87
- loadsprite 10184
- panse_19 SE_W082, 192
+ loadspritegfx 10184
+ playsewithpan SE_W082, 192
call EndureFlamesAnim
- pause 8
- createtask sub_80E1F8C, 2, 2, 2, 2, 0, 11, 31
- createtask sub_80A7FA0, 2, 0, 1, 0, 32, 1
+ delay 8
+ createvisualtask sub_80E1F8C, 2, 2, 2, 2, 0, 11, 31
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 32, 1
call EndureFlamesAnim
- pause 8
+ delay 8
call EndureFlamesAnim
- wait
+ waitforvisualfinish
end
EndureFlamesAnim:
- sprite gBattleAnimSpriteTemplate_EndureFlame, 2, 0, -24, 26, 2
- pause 4
- sprite gBattleAnimSpriteTemplate_EndureFlame, 2, 0, 14, 28, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_EndureFlame, 2, 0, -5, 10, 2
- pause 4
- sprite gBattleAnimSpriteTemplate_EndureFlame, 2, 0, 28, 26, 3
- pause 4
- sprite gBattleAnimSpriteTemplate_EndureFlame, 2, 0, -12, 0, 1
- ret
+ createsprite gBattleAnimSpriteTemplate_EndureFlame, 2, 0, -24, 26, 2
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_EndureFlame, 2, 0, 14, 28, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_EndureFlame, 2, 0, -5, 10, 2
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_EndureFlame, 2, 0, 28, 26, 3
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_EndureFlame, 2, 0, -12, 0, 1
+ return
Move_CHARM: @ 81CBB1B
- loadsprite 10210
- createtask sub_812E568, 5, 0, 2, 0
- sprite gBattleAnimSpriteTemplate_83D7A80, 3, 0, 20
- panse_19 SE_W204, 192
- pause 15
- sprite gBattleAnimSpriteTemplate_83D7A80, 3, -20, 20
- panse_19 SE_W204, 192
- pause 15
- sprite gBattleAnimSpriteTemplate_83D7A80, 3, 20, 20
- panse_19 SE_W204, 192
- wait
+ loadspritegfx 10210
+ createvisualtask sub_812E568, 5, 0, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83D7A80, 3, 0, 20
+ playsewithpan SE_W204, 192
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83D7A80, 3, -20, 20
+ playsewithpan SE_W204, 192
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83D7A80, 3, 20, 20
+ playsewithpan SE_W204, 192
+ waitforvisualfinish
end
Move_ROLLOUT: @ 81CBB5E
- loadsprite 10135
- loadsprite 10074
- loadsprite 10058
- monbg 3
+ loadspritegfx 10135
+ loadspritegfx 10074
+ loadspritegfx 10058
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- createtask sub_80DD4D4, 2
- wait
- createtask sub_80A9058, 2, 0, 1, 30, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 4, 0, 0, 1, 2
- panse_19 SE_W025B, 63
- wait
- clearmonbg 3
+ createvisualtask sub_80DD4D4, 2
+ waitforvisualfinish
+ createvisualtask sub_80A9058, 2, 0, 1, 30, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, 4, 0, 0, 1, 2
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_FALSE_SWIPE: @ 81CBB9F
- loadsprite 10286
- loadsprite 10135
- sprite gBattleAnimSpriteTemplate_83D6E50, 130
- panse_19 SE_W233, 63
- pause 16
- sprite gBattleAnimSpriteTemplate_83D6E68, 130, 0
- panse_19 SE_W104, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6E68, 130, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6E68, 130, 32
- panse_19 SE_W104, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6E68, 130, 48
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6E68, 130, 64
- panse_19 SE_W104, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6E68, 130, 80
- pause 2
- wait
- createtask sub_80A7E7C, 2, 1, 5, 0, 6, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 132, 0, 0, 1, 3
- panse_19 SE_W004, 63
+ loadspritegfx 10286
+ loadspritegfx 10135
+ createsprite gBattleAnimSpriteTemplate_83D6E50, 130
+ playsewithpan SE_W233, 63
+ delay 16
+ createsprite gBattleAnimSpriteTemplate_83D6E68, 130, 0
+ playsewithpan SE_W104, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6E68, 130, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6E68, 130, 32
+ playsewithpan SE_W104, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6E68, 130, 48
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6E68, 130, 64
+ playsewithpan SE_W104, 63
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6E68, 130, 80
+ delay 2
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 6, 1
+ createsprite gBasicHitSplatSpriteTemplate, 132, 0, 0, 1, 3
+ playsewithpan SE_W004, 63
end
Move_SWAGGER: @ 81CBC26
- loadsprite 10086
- loadsprite 10087
- createtask sub_80D08C8, 2
- panse_19 SE_W207, 192
- wait
- sprite gBattleAnimSpriteTemplate_83D7764, 2
- panse_1C SE_W207, 192, 4, 2
- wait
- pause 24
- sprite gBattleAnimSpriteTemplate_83D7798, 130, 1, -20, -28
- panse_19 SE_W207B, 63
- pause 12
- sprite gBattleAnimSpriteTemplate_83D7798, 130, 1, 20, -28
- panse_19 SE_W207B, 63
- wait
+ loadspritegfx 10086
+ loadspritegfx 10087
+ createvisualtask sub_80D08C8, 2
+ playsewithpan SE_W207, 192
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D7764, 2
+ loopsewithpan SE_W207, 192, 4, 2
+ waitforvisualfinish
+ delay 24
+ createsprite gBattleAnimSpriteTemplate_83D7798, 130, 1, -20, -28
+ playsewithpan SE_W207B, 63
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83D7798, 130, 1, 20, -28
+ playsewithpan SE_W207B, 63
+ waitforvisualfinish
end
Move_MILK_DRINK: @ 81CBC6E
- loadsprite 10099
- loadsprite 10203
- loadsprite 10031
- monbg 1
- sprite gBattleAnimSpriteTemplate_83D6C48, 2
- pause 40
- panse_19 SE_W152, 192
- pause 12
- panse_19 SE_W152, 192
- pause 20
- panse_19 SE_W152, 192
- wait
- sprite gBattleAnimSpriteTemplate_83D7928, 3, 0, 0, 1, 0
- panse_19 SE_W208, 192
- wait
- clearmonbg 1
+ loadspritegfx 10099
+ loadspritegfx 10203
+ loadspritegfx 10031
+ monbg ANIM_BANK_TARGET
+ createsprite gBattleAnimSpriteTemplate_83D6C48, 2
+ delay 40
+ playsewithpan SE_W152, 192
+ delay 12
+ playsewithpan SE_W152, 192
+ delay 20
+ playsewithpan SE_W152, 192
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D7928, 3, 0, 0, 1, 0
+ playsewithpan SE_W208, 192
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
call Unknown_81D5F3E
- wait
+ waitforvisualfinish
end
Move_MAGNITUDE: @ 81CBCB0
- createtask sub_80E1B88, 2
- wait
- jumpvareq 15, 0, _81CBCC9
- jumpvareq 15, 1, _81CBCEE
+ createvisualtask sub_80E1B88, 2
+ waitforvisualfinish
+ jumpargeq 15, 0, _81CBCC9
+ jumpargeq 15, 1, _81CBCEE
_81CBCC8:
end
_81CBCC9:
- createtask sub_80E1864, 5, 5, 0, 50
- createtask sub_80E1864, 5, 4, 0, 50
- panse_1C SE_W070, 63, 8, 10
- jump _81CBCC8
+ createvisualtask sub_80E1864, 5, 5, 0, 50
+ createvisualtask sub_80E1864, 5, 4, 0, 50
+ loopsewithpan SE_W070, 63, 8, 10
+ goto _81CBCC8
_81CBCEE:
- createtask sub_80E1864, 5, 5, 0, 50
- createtask sub_80E1864, 5, 4, 0, 50
- panse_1C SE_W070, 63, 8, 10
- pause 10
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
- pause 16
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
- jump _81CBCC8
+ createvisualtask sub_80E1864, 5, 5, 0, 50
+ createvisualtask sub_80E1864, 5, 4, 0, 50
+ loopsewithpan SE_W070, 63, 8, 10
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
+ delay 16
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, 0, 14, 32767, 14
+ goto _81CBCC8
Move_RAPID_SPIN: @ 81CBD41
- loadsprite 10135
- loadsprite 10229
- monbg 0
- sprite gBattleAnimSpriteTemplate_84023E8, 2, 0, 0, 32, -32, 40, -2
- createtask sub_812CDC8, 2, 0, 2, 0
- panse_1C SE_W013B, 192, 8, 4
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 0, 0, 1, 2
- createtask sub_80A9058, 2, 0, 1, 10, 1, 0
- panse_19 SE_W003, 63
- wait
- pause 8
- createtask sub_812CDC8, 2, 0, 2, 1
- panse_1C SE_W013B, 192, 8, 4
- wait
- clearmonbg 0
+ loadspritegfx 10135
+ loadspritegfx 10229
+ monbg ANIM_BANK_ATTACKER
+ createsprite gBattleAnimSpriteTemplate_84023E8, 2, 0, 0, 32, -32, 40, -2
+ createvisualtask sub_812CDC8, 2, 0, 2, 0
+ loopsewithpan SE_W013B, 192, 8, 4
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 2
+ createvisualtask sub_80A9058, 2, 0, 1, 10, 1, 0
+ playsewithpan SE_W003, 63
+ waitforvisualfinish
+ delay 8
+ createvisualtask sub_812CDC8, 2, 0, 2, 1
+ loopsewithpan SE_W013B, 192, 8, 4
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
end
Move_MOONLIGHT: @ 81CBDAE
- loadsprite 10194
- loadsprite 10195
- loadsprite 10031
+ loadspritegfx 10194
+ loadspritegfx 10195
+ loadspritegfx 10031
setalpha 0, 16
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 16, 0
- wait
- sprite gBattleAnimSpriteTemplate_83D6FC8, 2, 120, 56
- createtask sub_8079670, 3, 0, 16, 16, 0, 1
- panse_19 SE_W236, 0
- pause 30
- sprite gBattleAnimSpriteTemplate_83D6FF8, 40, -12, 0
- pause 30
- sprite gBattleAnimSpriteTemplate_83D6FF8, 40, -24, 0
- pause 30
- sprite gBattleAnimSpriteTemplate_83D6FF8, 40, 21, 0
- pause 30
- sprite gBattleAnimSpriteTemplate_83D6FF8, 40, 0, 0
- pause 30
- sprite gBattleAnimSpriteTemplate_83D6FF8, 40, 10, 0
- pause 20
- createtask sub_80CE3EC, 2
- wait
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 16, 0
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D6FC8, 2, 120, 56
+ createvisualtask sub_8079670, 3, 0, 16, 16, 0, 1
+ playsewithpan SE_W236, 0
+ delay 30
+ createsprite gBattleAnimSpriteTemplate_83D6FF8, 40, -12, 0
+ delay 30
+ createsprite gBattleAnimSpriteTemplate_83D6FF8, 40, -24, 0
+ delay 30
+ createsprite gBattleAnimSpriteTemplate_83D6FF8, 40, 21, 0
+ delay 30
+ createsprite gBattleAnimSpriteTemplate_83D6FF8, 40, 0, 0
+ delay 30
+ createsprite gBattleAnimSpriteTemplate_83D6FF8, 40, 10, 0
+ delay 20
+ createvisualtask sub_80CE3EC, 2
+ waitforvisualfinish
call Unknown_81D5EF5
- wait
+ waitforvisualfinish
end
Move_EXTREME_SPEED: @ 81CBE3E
- loadsprite 10207
- loadsprite 10135
- createtask sub_80E3B4C, 2
- jumpvareq 7, 1, _81CBEF5
+ loadspritegfx 10207
+ loadspritegfx 10135
+ createvisualtask sub_80E3B4C, 2
+ jumpargeq 7, 1, _81CBEF5
fadetobg 9
_81CBE55:
waitbgfadeout
- createtask sub_80E3A58, 5, -2304, 0, 1, -1
+ createvisualtask sub_80E3A58, 5, -2304, 0, 1, -1
waitbgfadein
- createtask sub_80D15A4, 2
- panse_1C SE_W013B, 192, 8, 3
- wait
- pause 1
- createtask sub_80E4300, 2
- monbg 1
- setalpha 12, 8
- pause 18
- createtask sub_80D1638, 2
- pause 2
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB508, 130, 1, 0, -12, 3
- pause 10
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB508, 130, 1, 0, 12, 3
- pause 10
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DB508, 130, 1, 0, 0, 3
- wait
- createtask sub_80D18D4, 2
- pause 10
- createtask sub_80D17C4, 2
- panse_1C SE_W104, 192, 8, 4
- wait
+ createvisualtask sub_80D15A4, 2
+ loopsewithpan SE_W013B, 192, 8, 3
+ waitforvisualfinish
+ delay 1
+ createvisualtask sub_80E4300, 2
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ delay 18
+ createvisualtask sub_80D1638, 2
+ delay 2
+ playsewithpan SE_W004, 63
+ createsprite gBattleAnimSpriteTemplate_83DB508, 130, 1, 0, -12, 3
+ delay 10
+ playsewithpan SE_W004, 63
+ createsprite gBattleAnimSpriteTemplate_83DB508, 130, 1, 0, 12, 3
+ delay 10
+ playsewithpan SE_W233B, 63
+ createsprite gBattleAnimSpriteTemplate_83DB508, 130, 1, 0, 0, 3
+ waitforvisualfinish
+ createvisualtask sub_80D18D4, 2
+ delay 10
+ createvisualtask sub_80D17C4, 2
+ loopsewithpan SE_W104, 192, 8, 4
+ waitforvisualfinish
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
- clearmonbg 1
+ clearmonbg ANIM_BANK_TARGET
blendoff
- pause 1
- setvar 7, 4096
- pause 1
+ delay 1
+ setarg 7, 4096
+ delay 1
end
_81CBEF5:
fadetobg 10
- jump _81CBE55
+ goto _81CBE55
Move_UPROAR: @ 81CBEFC
- loadsprite 10225
- loadsprite 10203
- monbg 3
- createtask sub_80D2CF8, 2, 0
- sprite gBattleAnimSpriteTemplate_83D79A4, 3, 0, 0, 0, 0, 31, 8
- panse_19 SE_W253, 192
- sprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, 29, -12, 0
- sprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, -12, -29, 1
- pause 16
- createtask sub_80D2CF8, 2, 0
- sprite gBattleAnimSpriteTemplate_83D79A4, 3, 0, 0, 0, 0, 31, 8
- panse_19 SE_W253, 192
- sprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, 12, -29, 1
- sprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, -29, -12, 0
- pause 16
- createtask sub_80D2CF8, 2, 0
- sprite gBattleAnimSpriteTemplate_83D79A4, 3, 0, 0, 0, 0, 31, 8
- panse_19 SE_W253, 192
- sprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, 24, -24, 1
- sprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, -24, -24, 0
- wait
- clearmonbg 3
+ loadspritegfx 10225
+ loadspritegfx 10203
+ monbg ANIM_BANK_DEF_PARTNER
+ createvisualtask sub_80D2CF8, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83D79A4, 3, 0, 0, 0, 0, 31, 8
+ playsewithpan SE_W253, 192
+ createsprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, 29, -12, 0
+ createsprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, -12, -29, 1
+ delay 16
+ createvisualtask sub_80D2CF8, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83D79A4, 3, 0, 0, 0, 0, 31, 8
+ playsewithpan SE_W253, 192
+ createsprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, 12, -29, 1
+ createsprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, -29, -12, 0
+ delay 16
+ createvisualtask sub_80D2CF8, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83D79A4, 3, 0, 0, 0, 0, 31, 8
+ playsewithpan SE_W253, 192
+ createsprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, 24, -24, 1
+ createsprite gBattleAnimSpriteTemplate_83D7CC8, 2, 0, -24, -24, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
Move_HEAT_WAVE: @ 81CBFC6
- loadsprite 10261
- createtask sub_80E2C60, 5, 10261, 0, 6, 6, 31
- createtask do_boulder_dust, 5, 1
- createtask sub_80D6080, 6, 6, 31
+ loadspritegfx 10261
+ createvisualtask sub_80E2C60, 5, 10261, 0, 6, 6, 31
+ createvisualtask do_boulder_dust, 5, 1
+ createvisualtask sub_80D6080, 6, 6, 31
panse_1B SE_W257, 192, 63, 2, 0
- pause 4
- createtask sub_80D5DDC, 5
- pause 12
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 10, 2304, 96, 1
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 90, 2048, 96, 1
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 50, 2560, 96, 1
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 20, 2304, 96, 1
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 70, 1984, 96, 1
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 0, 2816, 96, 1
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 60, 2560, 96, 1
+ delay 4
+ createvisualtask sub_80D5DDC, 5
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 10, 2304, 96, 1
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 90, 2048, 96, 1
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 50, 2560, 96, 1
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 20, 2304, 96, 1
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 70, 1984, 96, 1
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 0, 2816, 96, 1
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 60, 2560, 96, 1
end
Move_HAIL: @ 81CC076
- loadsprite 10263
- loadsprite 10141
- createtask sub_80E2A38, 10, 1, 3, 0, 6, 0
- wait
- createtask sub_80D8ADC, 5
- panse_1C SE_W258, 0, 8, 10
- wait
- createtask sub_80E2A38, 10, 1, 3, 6, 0, 0
+ loadspritegfx 10263
+ loadspritegfx 10141
+ createvisualtask sub_80E2A38, 10, 1, 3, 0, 6, 0
+ waitforvisualfinish
+ createvisualtask sub_80D8ADC, 5
+ loopsewithpan SE_W258, 0, 8, 10
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 1, 3, 6, 0, 0
end
Move_TORMENT: @ 81CC0AE
- loadsprite 10087
- loadsprite 10209
- createtask sub_812D008, 2
- wait
- createtask sub_8079790, 2, 1, 31, 10, 1, 1
- sprite gBattleAnimSpriteTemplate_83D7798, 130, 1, -20, -28
- panse_19 SE_W207B, 63
- pause 20
- sprite gBattleAnimSpriteTemplate_83D7798, 130, 1, 20, -28
- panse_19 SE_W207B, 63
+ loadspritegfx 10087
+ loadspritegfx 10209
+ createvisualtask sub_812D008, 2
+ waitforvisualfinish
+ createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_BANK_TARGET, 31, 10, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D7798, 130, 1, -20, -28
+ playsewithpan SE_W207B, 63
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83D7798, 130, 1, 20, -28
+ playsewithpan SE_W207B, 63
end
Move_MEMENTO: @ 81CC0F2
setalpha 0, 16
- pause 1
- createtask sub_80E0918, 2
- pause 1
- createtask sub_80E00EC, 5
- panse_19 SE_W060, 192
- pause 48
- panse_19 SE_W060B, 192
- wait
- createtask sub_80E09C4, 2
- pause 12
+ delay 1
+ createvisualtask sub_80E0918, 2
+ delay 1
+ createvisualtask sub_80E00EC, 5
+ playsewithpan SE_W060, 192
+ delay 48
+ playsewithpan SE_W060B, 192
+ waitforvisualfinish
+ createvisualtask sub_80E09C4, 2
+ delay 12
setalpha 0, 16
- pause 1
+ delay 1
monbg_22 1
- createtask sub_80E03BC, 5
- panse_19 SE_W060, 63
- wait
+ createvisualtask sub_80E03BC, 5
+ playsewithpan SE_W060, 63
+ waitforvisualfinish
clearmonbg_23 1
- pause 1
+ delay 1
blendoff
- pause 1
+ delay 1
end
Move_FACADE: @ 81CC136
- loadsprite 10243
- createtask sub_812FD7C, 2, 0, 3
- createtask sub_812FFE4, 2, 0, 72
- panse_1C SE_W207, 192, 24, 3
+ loadspritegfx 10243
+ createvisualtask sub_812FD7C, 2, 0, 3
+ createvisualtask sub_812FFE4, 2, 0, 72
+ loopsewithpan SE_W207, 192, 24, 3
end
Move_SMELLING_SALT: @ 81CC156
- loadsprite 10247
- loadsprite 10255
- sprite gBattleAnimSpriteTemplate_84029C4, 130, 1, 0, 2
- sprite gBattleAnimSpriteTemplate_84029C4, 130, 1, 1, 2
- pause 32
- createtask sub_8130918, 3, 1, 2
- panse_1C SE_W003, 63, 12, 2
- wait
- pause 4
- createtask sub_80A7FA0, 2, 1, 2, 0, 6, 2
- sprite gBattleAnimSpriteTemplate_84029F4, 130, 1, 8, 3
- panse_1C SE_W207B, 63, 16, 3
+ loadspritegfx 10247
+ loadspritegfx 10255
+ createsprite gBattleAnimSpriteTemplate_84029C4, 130, 1, 0, 2
+ createsprite gBattleAnimSpriteTemplate_84029C4, 130, 1, 1, 2
+ delay 32
+ createvisualtask sub_8130918, 3, 1, 2
+ loopsewithpan SE_W003, 63, 12, 2
+ waitforvisualfinish
+ delay 4
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 6, 2
+ createsprite gBattleAnimSpriteTemplate_84029F4, 130, 1, 8, 3
+ loopsewithpan SE_W207B, 63, 16, 3
end
Move_FOLLOW_ME: @ 81CC1B1
- loadsprite 10064
- sprite gBattleAnimSpriteTemplate_83D72E0, 2, 0
- panse_19 SE_W039, 192
- pause 18
- panse_19 SE_W213, 192
- pause 71
- panse_1C SE_W039, 192, 22, 3
+ loadspritegfx 10064
+ createsprite gBattleAnimSpriteTemplate_83D72E0, 2, 0
+ playsewithpan SE_W039, 192
+ delay 18
+ playsewithpan SE_W213, 192
+ delay 71
+ loopsewithpan SE_W039, 192, 22, 3
end
Move_CHARGE: @ 81CC1D0
- loadsprite 10211
- loadsprite 10212
- loadsprite 10213
- monbg 0
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0
- wait
- createtask sub_80D6B3C, 2, 0, 60, 2, 12
- panse_19 SE_W268, 192
- pause 30
- panse_19 SE_W268, 192
- pause 30
- panse_19 SE_W268, 192
- sprite gBattleAnimSpriteTemplate_83D9A6C, 2, 0
- pause 25
- panse_19 SE_W268, 192
- pause 20
- panse_19 SE_W268, 192
- pause 15
- panse_19 SE_W268, 192
- pause 10
- pause 6
- panse_1C SE_W268, 192, 6, 5
- wait
- sprite gBattleAnimSpriteTemplate_83D9A9C, 2, 0, 16, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9A9C, 2, 0, -16, -16
- panse_19 SE_W085B, 192
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 0
- clearmonbg 0
+ loadspritegfx 10211
+ loadspritegfx 10212
+ loadspritegfx 10213
+ monbg ANIM_BANK_ATTACKER
+ setalpha 12, 8
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0
+ waitforvisualfinish
+ createvisualtask sub_80D6B3C, 2, 0, 60, 2, 12
+ playsewithpan SE_W268, 192
+ delay 30
+ playsewithpan SE_W268, 192
+ delay 30
+ playsewithpan SE_W268, 192
+ createsprite gBattleAnimSpriteTemplate_83D9A6C, 2, 0
+ delay 25
+ playsewithpan SE_W268, 192
+ delay 20
+ playsewithpan SE_W268, 192
+ delay 15
+ playsewithpan SE_W268, 192
+ delay 10
+ delay 6
+ loopsewithpan SE_W268, 192, 6, 5
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D9A9C, 2, 0, 16, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9A9C, 2, 0, -16, -16
+ playsewithpan SE_W085B, 192
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 0
+ clearmonbg ANIM_BANK_ATTACKER
blendoff
end
Move_TAUNT: @ 81CC26B
- loadsprite 10214
- loadsprite 10209
- loadsprite 10087
- sprite gBattleAnimSpriteTemplate_83D7220, 11, 0, 45
- panse_19 SE_W118, 192
- pause 6
- sprite gBattleAnimSpriteTemplate_83D7358, 12, 0
- pause 4
- panse_1C SE_W039, 192, 16, 2
- wait
- pause 8
- sprite gBattleAnimSpriteTemplate_83D7798, 130, 1, -20, -28
- panse_19 SE_W207B, 63
- wait
- pause 12
- sprite gBattleAnimSpriteTemplate_83D7798, 130, 1, 20, -28
- panse_19 SE_W207B, 63
+ loadspritegfx 10214
+ loadspritegfx 10209
+ loadspritegfx 10087
+ createsprite gBattleAnimSpriteTemplate_83D7220, 11, 0, 45
+ playsewithpan SE_W118, 192
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83D7358, 12, 0
+ delay 4
+ loopsewithpan SE_W039, 192, 16, 2
+ waitforvisualfinish
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83D7798, 130, 1, -20, -28
+ playsewithpan SE_W207B, 63
+ waitforvisualfinish
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83D7798, 130, 1, 20, -28
+ playsewithpan SE_W207B, 63
end
Move_HELPING_HAND: @ 81CC2BF
- loadsprite 10247
- createtask sub_8130D20, 5
- sprite gBattleAnimSpriteTemplate_8402A0C, 40, 0
- sprite gBattleAnimSpriteTemplate_8402A0C, 40, 1
- pause 19
- panse_19 SE_W227, 0
- createtask sub_80A7FA0, 2, 2, 2, 0, 5, 1
- pause 14
- panse_19 SE_W227, 0
- createtask sub_80A7FA0, 2, 2, 2, 0, 5, 1
- pause 20
- panse_19 SE_W227, 0
- createtask sub_80A7FA0, 2, 2, 3, 0, 10, 1
- createtask sub_8079790, 2, 2, 1023, 12, 1, 1
+ loadspritegfx 10247
+ createvisualtask sub_8130D20, 5
+ createsprite gBattleAnimSpriteTemplate_8402A0C, 40, 0
+ createsprite gBattleAnimSpriteTemplate_8402A0C, 40, 1
+ delay 19
+ playsewithpan SE_W227, 0
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATK_PARTNER, 2, 0, 5, 1
+ delay 14
+ playsewithpan SE_W227, 0
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATK_PARTNER, 2, 0, 5, 1
+ delay 20
+ playsewithpan SE_W227, 0
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATK_PARTNER, 3, 0, 10, 1
+ createvisualtask AnimTask_BlendMonInAndOut, 2, ANIM_BANK_ATK_PARTNER, 1023, 12, 1, 1
end
Move_ASSIST: @ 81CC332
- loadsprite 10252
- sprite gBattleAnimSpriteTemplate_8402964, 50, 112, -16, 140, 128, 36
- pause 2
- sprite gBattleAnimSpriteTemplate_8402964, 50, 208, 128, -16, 48, 36
- panse_19 SE_W010, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_8402964, 50, -16, 112, 256, -16, 36
- panse_19 SE_W010, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_8402964, 50, 108, 128, 84, -16, 36
- panse_19 SE_W010, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_8402964, 50, -16, 56, 256, 56, 36
- panse_19 SE_W010, 0
+ loadspritegfx 10252
+ createsprite gBattleAnimSpriteTemplate_8402964, 50, 112, -16, 140, 128, 36
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_8402964, 50, 208, 128, -16, 48, 36
+ playsewithpan SE_W010, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_8402964, 50, -16, 112, 256, -16, 36
+ playsewithpan SE_W010, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_8402964, 50, 108, 128, 84, -16, 36
+ playsewithpan SE_W010, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_8402964, 50, -16, 56, 256, 56, 36
+ playsewithpan SE_W010, 0
end
Move_SUPERPOWER: @ 81CC3A3
- loadsprite 10212
- loadsprite 10256
- loadsprite 10257
- monbg 2
+ loadspritegfx 10212
+ loadspritegfx 10256
+ loadspritegfx 10257
+ monbg ANIM_BANK_ATK_PARTNER
monbgprio_28 0
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DA0FC, 130, 0
- panse_19 SE_W025, 192
- pause 20
- sprite gBattleAnimSpriteTemplate_83DB428, 2, 4, 1, 180, 1
- createtask sub_812B340, 5, 234, 0
- pause 40
- sprite gBattleAnimSpriteTemplate_83DA114, 41, 200, 96, 1, 120
- pause 8
- sprite gBattleAnimSpriteTemplate_83DA114, 41, 20, 248, 4, 112
- pause 8
- sprite gBattleAnimSpriteTemplate_83DA114, 41, 130, 160, 2, 104
- pause 8
- sprite gBattleAnimSpriteTemplate_83DA114, 41, 160, 192, 0, 96
- pause 8
- sprite gBattleAnimSpriteTemplate_83DA114, 41, 60, 288, 3, 88
- pause 74
- sprite gBattleAnimSpriteTemplate_83DA12C, 131, 0
- panse_19 SE_W207, 192
- pause 16
- createtask sub_80A7FA0, 2, 1, 8, 0, 16, 1
- panse_19 SE_W025B, 63
- wait
- clearmonbg 2
- blendoff
- pause 1
+ createsprite gBattleAnimSpriteTemplate_83DA0FC, 130, 0
+ playsewithpan SE_W025, 192
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83DB428, 2, 4, 1, 180, 1
+ createvisualtask sub_812B340, 5, 234, 0
+ delay 40
+ createsprite gBattleAnimSpriteTemplate_83DA114, 41, 200, 96, 1, 120
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DA114, 41, 20, 248, 4, 112
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DA114, 41, 130, 160, 2, 104
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DA114, 41, 160, 192, 0, 96
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DA114, 41, 60, 288, 3, 88
+ delay 74
+ createsprite gBattleAnimSpriteTemplate_83DA12C, 131, 0
+ playsewithpan SE_W207, 192
+ delay 16
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 8, 0, 16, 1
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
+ blendoff
+ delay 1
end
Move_RECYCLE: @ 81CC45E
- loadsprite 10278
- monbg 0
+ loadspritegfx 10278
+ monbg ANIM_BANK_ATTACKER
setalpha 0, 16
- pause 1
- sprite gBattleAnimSpriteTemplate_8402B10, 2
- panse_1C SE_W036, 192, 24, 3
- wait
- createtask sub_8079790, 5, 0, 32767, 12, 2, 1
- panse_19 SE_W036, 192
- wait
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_8402B10, 2
+ loopsewithpan SE_W036, 192, 24, 3
+ waitforvisualfinish
+ createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_BANK_ATTACKER, 32767, 12, 2, 1
+ playsewithpan SE_W036, 192
+ waitforvisualfinish
blendoff
- clearmonbg 0
- pause 1
+ clearmonbg ANIM_BANK_ATTACKER
+ delay 1
end
Move_BRICK_BREAK: @ 81CC492
- loadsprite 10167
- loadsprite 10135
- loadsprite 10143
- loadsprite 10208
- ifelse _81CC4A7, _81CC576
+ loadspritegfx 10167
+ loadspritegfx 10135
+ loadspritegfx 10143
+ loadspritegfx 10208
+ choosetwoturnanim _81CC4A7, _81CC576
_81CC4A7:
- monbg 1
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 8
- pause 4
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, -18, -18, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 2, -18, -18, 10, 1, 0
- panse_19 SE_W233, 63
- pause 20
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 8
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 18, 18, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 2, 18, 18, 10, 1, 0
- panse_19 SE_W233, 63
- pause 20
- createtask sub_80A8920, 2, 0, -24, 0, 24, 10, 24, 3
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 6, 0
- pause 37
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 2, 0, 0, 10, 1, 0
- panse_19 SE_W233B, 63
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 6, 0, 0
- wait
- clearmonbg 1
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, 2, 3, 8
+ delay 4
+ delay 1
+ createsprite gBasicHitSplatSpriteTemplate, 3, -18, -18, 1, 1
+ createsprite gFistFootSpriteTemplate, 2, -18, -18, 10, 1, 0
+ playsewithpan SE_W233, 63
+ delay 20
+ createsprite gHorizontalLungeSpriteTemplate, 2, 3, 8
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 3, 18, 18, 1, 1
+ createsprite gFistFootSpriteTemplate, 2, 18, 18, 10, 1, 0
+ playsewithpan SE_W233, 63
+ delay 20
+ createvisualtask AnimTask_WindUpLunge, 2, ANIM_BANK_ATTACKER, -24, 0, 24, 10, 24, 3
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 6, 0
+ delay 37
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, 2, 0, 0, 10, 1, 0
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 6, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
end
_81CC576:
- monbg 1
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 8
- pause 4
- sprite gBattleAnimSpriteTemplate_83DA0A0, 3, 1, 0, 0, 90, 10
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, -18, -18, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 2, -18, -18, 10, 1, 0
- panse_19 SE_W233, 63
- pause 20
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 8
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 18, 18, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 2, 18, 18, 10, 1, 0
- panse_19 SE_W233, 63
- pause 20
- createtask sub_80A8920, 2, 0, -24, 0, 24, 10, 24, 3
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 6, 0
- pause 37
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 2, 0, 0, 10, 1, 0
- panse_19 SE_W233B, 63
- wait
- sprite gBattleAnimSpriteTemplate_83DA0B8, 2, 1, 0, -8, -12
- sprite gBattleAnimSpriteTemplate_83DA0B8, 2, 1, 1, 8, -12
- sprite gBattleAnimSpriteTemplate_83DA0B8, 2, 1, 2, -8, 12
- sprite gBattleAnimSpriteTemplate_83DA0B8, 2, 1, 3, 8, 12
- panse_19 SE_W280, 63
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 6, 0, 0
- wait
- clearmonbg 1
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, 2, 3, 8
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DA0A0, 3, 1, 0, 0, 90, 10
+ delay 1
+ createsprite gBasicHitSplatSpriteTemplate, 3, -18, -18, 1, 1
+ createsprite gFistFootSpriteTemplate, 2, -18, -18, 10, 1, 0
+ playsewithpan SE_W233, 63
+ delay 20
+ createsprite gHorizontalLungeSpriteTemplate, 2, 3, 8
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 3, 18, 18, 1, 1
+ createsprite gFistFootSpriteTemplate, 2, 18, 18, 10, 1, 0
+ playsewithpan SE_W233, 63
+ delay 20
+ createvisualtask AnimTask_WindUpLunge, 2, ANIM_BANK_ATTACKER, -24, 0, 24, 10, 24, 3
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 6, 0
+ delay 37
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, 2, 0, 0, 10, 1, 0
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DA0B8, 2, 1, 0, -8, -12
+ createsprite gBattleAnimSpriteTemplate_83DA0B8, 2, 1, 1, 8, -12
+ createsprite gBattleAnimSpriteTemplate_83DA0B8, 2, 1, 2, -8, 12
+ createsprite gBattleAnimSpriteTemplate_83DA0B8, 2, 1, 3, 8, 12
+ playsewithpan SE_W280, 63
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 6, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
end
Move_YAWN: @ 81CC697
- loadsprite 10242
- createtask sub_812F724, 2, 0
- panse_19 SE_W281, 192
- wait
- sprite gBattleAnimSpriteTemplate_84027EC, 133, 2
- panse_19 SE_W255, 192
- pause 4
- sprite gBattleAnimSpriteTemplate_84027EC, 133, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_84027EC, 133, 0
- wait
- createtask sub_812F724, 2, 1
- panse_19 SE_W281, 63
+ loadspritegfx 10242
+ createvisualtask sub_812F724, 2, 0
+ playsewithpan SE_W281, 192
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_84027EC, 133, 2
+ playsewithpan SE_W255, 192
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_84027EC, 133, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_84027EC, 133, 0
+ waitforvisualfinish
+ createvisualtask sub_812F724, 2, 1
+ playsewithpan SE_W281, 63
end
Move_ENDEAVOR: @ 81CC6DA
- loadsprite 10243
- loadsprite 10135
- createtask sub_812FD7C, 2, 0, 2
- panse_1C SE_W039, 192, 24, 2
- createtask sub_8079790, 5, 0, 703, 12, 1, 2
- pause 6
- createtask sub_80A9058, 5, 0, 1, 8, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 12, -12, 1, 2
- panse_19 SE_W003, 63
- pause 24
- createtask sub_80A9058, 5, 0, 1, 8, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, -12, 12, 1, 2
- panse_19 SE_W004, 63
+ loadspritegfx 10243
+ loadspritegfx 10135
+ createvisualtask sub_812FD7C, 2, 0, 2
+ loopsewithpan SE_W039, 192, 24, 2
+ createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_BANK_ATTACKER, 703, 12, 1, 2
+ delay 6
+ createvisualtask sub_80A9058, 5, 0, 1, 8, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, 130, 12, -12, 1, 2
+ playsewithpan SE_W003, 63
+ delay 24
+ createvisualtask sub_80A9058, 5, 0, 1, 8, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, 130, -12, 12, 1, 2
+ playsewithpan SE_W004, 63
end
Move_ERUPTION: @ 81CC74F
- loadsprite 10201
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 2, 0, 4, 31
- wait
- createtask sub_80D5470, 2
- panse_1D SE_W153, 192, 60
- wait
- createtask sub_80D5470, 2
- panse_1D SE_W153, 192, 60
- wait
- pause 30
- sprite gBattleAnimSpriteTemplate_83D96F8, 40, 200, -32, 0, 100, 0
- sprite gBattleAnimSpriteTemplate_83D96F8, 40, 30, -32, 16, 90, 1
- sprite gBattleAnimSpriteTemplate_83D96F8, 40, 150, -32, 32, 60, 2
- sprite gBattleAnimSpriteTemplate_83D96F8, 40, 90, -32, 48, 80, 3
- sprite gBattleAnimSpriteTemplate_83D96F8, 40, 110, -32, 64, 50, 0
- sprite gBattleAnimSpriteTemplate_83D96F8, 40, 60, -32, 80, 70, 1
- pause 22
- createtask sub_80E1864, 5, 5, 8, 60
- createtask sub_80E1864, 5, 4, 8, 60
- panse_1C SE_W088, 63, 16, 12
- pause 80
- sprite gBattleAnimSpriteTemplate_83DB3C4, 40, 31, 4, 4, 0, 31
+ loadspritegfx 10201
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 2, 0, 4, 31
+ waitforvisualfinish
+ createvisualtask sub_80D5470, 2
+ waitplaysewithpan SE_W153, 192, 60
+ waitforvisualfinish
+ createvisualtask sub_80D5470, 2
+ waitplaysewithpan SE_W153, 192, 60
+ waitforvisualfinish
+ delay 30
+ createsprite gBattleAnimSpriteTemplate_83D96F8, 40, 200, -32, 0, 100, 0
+ createsprite gBattleAnimSpriteTemplate_83D96F8, 40, 30, -32, 16, 90, 1
+ createsprite gBattleAnimSpriteTemplate_83D96F8, 40, 150, -32, 32, 60, 2
+ createsprite gBattleAnimSpriteTemplate_83D96F8, 40, 90, -32, 48, 80, 3
+ createsprite gBattleAnimSpriteTemplate_83D96F8, 40, 110, -32, 64, 50, 0
+ createsprite gBattleAnimSpriteTemplate_83D96F8, 40, 60, -32, 80, 70, 1
+ delay 22
+ createvisualtask sub_80E1864, 5, 5, 8, 60
+ createvisualtask sub_80E1864, 5, 4, 8, 60
+ loopsewithpan SE_W088, 63, 16, 12
+ delay 80
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 40, 31, 4, 4, 0, 31
end
Move_SKILL_SWAP: @ 81CC81C
- loadsprite 10251
+ loadspritegfx 10251
call Unknown_81D61E7
- createtask sub_80DC0B0, 3, 1
- createtask sub_8079790, 5, 1, 32767, 12, 3, 1
- panse_1C SE_W179, 192, 24, 3
- pause 16
- createtask sub_80DC0B0, 3, 0
- createtask sub_8079790, 5, 0, 32767, 12, 3, 1
- wait
+ createvisualtask sub_80DC0B0, 3, 1
+ createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_BANK_TARGET, 32767, 12, 3, 1
+ loopsewithpan SE_W179, 192, 24, 3
+ delay 16
+ createvisualtask sub_80DC0B0, 3, 0
+ createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_BANK_ATTACKER, 32767, 12, 3, 1
+ waitforvisualfinish
call Unknown_81D61F3
end
Move_IMPRISON: @ 81CC867
- loadsprite 10249
- loadsprite 10250
+ loadspritegfx 10249
+ loadspritegfx 10250
call Unknown_81D61E7
- monbg 3
- createtask sub_80DBE00, 5
- pause 8
- panse_1C SE_W030, 192, 8, 5
- wait
- pause 4
- sprite gBattleAnimSpriteTemplate_83DA8F4, 5, 0, 40
- createtask sub_80E1864, 5, 4, 1, 10
- panse_19 SE_W063, 192
- clearmonbg 3
+ monbg ANIM_BANK_DEF_PARTNER
+ createvisualtask sub_80DBE00, 5
+ delay 8
+ loopsewithpan SE_W030, 192, 8, 5
+ waitforvisualfinish
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DA8F4, 5, 0, 40
+ createvisualtask sub_80E1864, 5, 4, 1, 10
+ playsewithpan SE_W063, 192
+ clearmonbg ANIM_BANK_DEF_PARTNER
call Unknown_81D61F3
end
Move_GRUDGE: @ 81CC8AA
- loadsprite 10253
- monbg 0
+ loadspritegfx 10253
+ monbg ANIM_BANK_ATTACKER
monbgprio_29
fadetobg 2
- panse_19 SE_W060, 192
+ playsewithpan SE_W060, 192
waitbgfadein
- createtask sub_80DF1A4, 3
- panse_1C SE_W052, 192, 16, 4
- pause 10
- pause 80
- panse_19 SE_W171, 63
- wait
+ createvisualtask sub_80DF1A4, 3
+ loopsewithpan SE_W052, 192, 16, 4
+ delay 10
+ delay 80
+ playsewithpan SE_W171, 63
+ waitforvisualfinish
restorebg
waitbgfadein
- clearmonbg 0
+ clearmonbg ANIM_BANK_ATTACKER
end
Move_CAMOUFLAGE: @ 81CC8D2
- monbg 2
+ monbg ANIM_BANK_ATK_PARTNER
monbgprio_28 0
setalpha 16, 0
- createtask sub_80E2B74, 5, 2, 3, 0, 14
- pause 16
- createtask sub_80DFC24, 2, 4
- panse_19 SE_W185, 192
- wait
- pause 8
- createtask sub_80E2B74, 5, 2, 0, 0, 0
- wait
- createtask sub_80DFD24, 2, 1
- wait
+ createvisualtask sub_80E2B74, 5, 2, 3, 0, 14
+ delay 16
+ createvisualtask sub_80DFC24, 2, 4
+ playsewithpan SE_W185, 192
+ waitforvisualfinish
+ delay 8
+ createvisualtask sub_80E2B74, 5, 2, 0, 0, 0
+ waitforvisualfinish
+ createvisualtask sub_80DFD24, 2, 1
+ waitforvisualfinish
blendoff
- clearmonbg 2
+ clearmonbg ANIM_BANK_ATK_PARTNER
end
Move_TAIL_GLOW: @ 81CC918
- loadsprite 10212
- monbg 0
+ loadspritegfx 10212
+ monbg ANIM_BANK_ATTACKER
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0
- wait
- sprite gBattleAnimSpriteTemplate_83DAC10, 66, 0
- pause 18
- panse_1C SE_W234, 192, 16, 6
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 0
- clearmonbg 0
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DAC10, 66, 0
+ delay 18
+ loopsewithpan SE_W234, 192, 16, 6
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 0
+ clearmonbg ANIM_BANK_ATTACKER
blendoff
- pause 1
+ delay 1
end
Move_LUSTER_PURGE: @ 81CC95B
- loadsprite 10267
- loadsprite 10135
+ loadspritegfx 10267
+ loadspritegfx 10135
fadetobg 3
waitbgfadeout
- createtask sub_812C624, 5
+ createvisualtask sub_812C624, 5
waitbgfadein
- monbg 0
- setalpha 12, 8
- panse_19 SE_W076, 192
- sprite gBattleAnimSpriteTemplate_83DA9E0, 41, 0, 0, 0, 0
- pause 20
- createtask sub_80E2A7C, 5, 5, 2, 0, 16, -1
- createtask sub_80E2C60, 5, 10267, 2, 0, 16, -1
- wait
- createtask sub_80E2C60, 5, 10135, 0, 12, 12, 23552
- wait
- sprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
- createtask sub_812B30C, 5, 215, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
- createtask sub_812B30C, 5, 215, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
- createtask sub_812B30C, 5, 215, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
- createtask sub_812B30C, 5, 215, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
- createtask sub_812B30C, 5, 215, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
- createtask sub_812B30C, 5, 215, 63
- wait
- createtask sub_80E2A7C, 5, 5, 2, 16, 0, -1
- createtask sub_80E1864, 5, 1, 5, 14
- wait
- clearmonbg 0
+ monbg ANIM_BANK_ATTACKER
+ setalpha 12, 8
+ playsewithpan SE_W076, 192
+ createsprite gBattleAnimSpriteTemplate_83DA9E0, 41, 0, 0, 0, 0
+ delay 20
+ createvisualtask sub_80E2A7C, 5, 5, 2, 0, 16, -1
+ createvisualtask sub_80E2C60, 5, 10267, 2, 0, 16, -1
+ waitforvisualfinish
+ createvisualtask sub_80E2C60, 5, 10135, 0, 12, 12, 23552
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
+ createvisualtask sub_812B30C, 5, 215, 63
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
+ createvisualtask sub_812B30C, 5, 215, 63
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
+ createvisualtask sub_812B30C, 5, 215, 63
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
+ createvisualtask sub_812B30C, 5, 215, 63
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
+ createvisualtask sub_812B30C, 5, 215, 63
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 2
+ createvisualtask sub_812B30C, 5, 215, 63
+ waitforvisualfinish
+ createvisualtask sub_80E2A7C, 5, 5, 2, 16, 0, -1
+ createvisualtask sub_80E1864, 5, 1, 5, 14
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
blendoff
call Unknown_81D61F3
end
Move_MIST_BALL: @ 81CCA72
- loadsprite 10155
- loadsprite 10270
- pause 0
- panse_19 SE_W081, 192
- sprite gBattleAnimSpriteTemplate_83D9D80, 128, 0, 0, 0, 0, 30, 0
- wait
- panse_19 SE_W028, 63
- createtask sub_80A7E7C, 2, 1, 5, 0, 10, 0
- sprite gBattleAnimSpriteTemplate_83DB3DC, 0, 1, 1, 1, 32279, 16, 32767, 16
- pause 0
- panse_19 SE_W114, 0
- createtask sub_80D8414, 5
- createtask sub_80E2A38, 10, 4, 3, 0, 16, 32767
- pause 8
- createtask sub_80A7E7C, 2, 1, 4, 0, 70, 0
- pause 70
- createtask sub_80E2A38, 10, 4, 2, 16, 0, 32767
+ loadspritegfx 10155
+ loadspritegfx 10270
+ delay 0
+ playsewithpan SE_W081, 192
+ createsprite gBattleAnimSpriteTemplate_83D9D80, 128, 0, 0, 0, 0, 30, 0
+ waitforvisualfinish
+ playsewithpan SE_W028, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 10, 0
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 0, 1, 1, 1, 32279, 16, 32767, 16
+ delay 0
+ playsewithpan SE_W114, 0
+ createvisualtask sub_80D8414, 5
+ createvisualtask sub_80E2A38, 10, 4, 3, 0, 16, 32767
+ delay 8
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 4, 0, 70, 0
+ delay 70
+ createvisualtask sub_80E2A38, 10, 4, 2, 16, 0, 32767
end
Move_FEATHER_DANCE: @ 81CCB01
- loadsprite 10270
- monbg 3
+ loadspritegfx 10270
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_29
- panse_19 SE_W080, 63
- pause 0
- sprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 64, 2, 104, 11304, 32, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 32, 2, 104, 11304, 32, 1
- sprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 0, 2, 104, 11304, 32, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 224, 2, 104, 11304, 32, 1
- sprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 128, 2, 104, 11304, 32, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 192, 2, 104, 11304, 32, 1
- sprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 160, 2, 104, 11304, 32, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 96, 2, 104, 11304, 32, 1
- wait
- clearmonbg 3
+ playsewithpan SE_W080, 63
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 64, 2, 104, 11304, 32, 1
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 32, 2, 104, 11304, 32, 1
+ createsprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 0, 2, 104, 11304, 32, 1
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 224, 2, 104, 11304, 32, 1
+ createsprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 128, 2, 104, 11304, 32, 1
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 192, 2, 104, 11304, 32, 1
+ createsprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 160, 2, 104, 11304, 32, 1
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DA498, 128, 0, -16, 96, 2, 104, 11304, 32, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
Move_TEETER_DANCE: @ 81CCBD1
- loadsprite 10072
- loadsprite 10073
- createtask sub_813219C, 5
- sprite gBattleAnimSpriteTemplate_83D715C, 2, 0, 16, -2
- panse_19 SE_W298, 192
- pause 24
- sprite gBattleAnimSpriteTemplate_83D715C, 2, 0, 0, -2
- panse_19 SE_W298, 192
- pause 24
- sprite gBattleAnimSpriteTemplate_83D715C, 2, 0, -16, -2
- panse_19 SE_W298, 192
- pause 24
- sprite gBattleAnimSpriteTemplate_83D715C, 2, 1, -8, -2
- panse_19 SE_W298, 192
- pause 24
- sprite gBattleAnimSpriteTemplate_83D715C, 2, 2, 8, -2
- panse_19 SE_W298, 192
+ loadspritegfx 10072
+ loadspritegfx 10073
+ createvisualtask sub_813219C, 5
+ createsprite gBattleAnimSpriteTemplate_83D715C, 2, 0, 16, -2
+ playsewithpan SE_W298, 192
+ delay 24
+ createsprite gBattleAnimSpriteTemplate_83D715C, 2, 0, 0, -2
+ playsewithpan SE_W298, 192
+ delay 24
+ createsprite gBattleAnimSpriteTemplate_83D715C, 2, 0, -16, -2
+ playsewithpan SE_W298, 192
+ delay 24
+ createsprite gBattleAnimSpriteTemplate_83D715C, 2, 1, -8, -2
+ playsewithpan SE_W298, 192
+ delay 24
+ createsprite gBattleAnimSpriteTemplate_83D715C, 2, 2, 8, -2
+ playsewithpan SE_W298, 192
end
Move_MUD_SPORT: @ 81CCC3C
- loadsprite 10074
- createtask sub_80D074C, 2, 0, 6
- pause 24
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 0, -4, -16
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 0, 4, -12
- panse_19 SE_W091, 192
- pause 32
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 0, -3, -12
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 0, 5, -14
- panse_19 SE_W091, 192
- pause 32
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 0, -5, -18
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 0, 3, -14
- panse_19 SE_W091, 192
- pause 16
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 220, 60
- panse_1D SE_W145B, 0, 15
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 60, 100
- panse_1D SE_W145B, 0, 25
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 140, 55
- panse_1D SE_W145B, 0, 14
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 180, 50
- panse_1D SE_W145B, 0, 10
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 20, 90
- panse_1D SE_W145B, 0, 22
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 90, 90
- panse_1D SE_W145B, 0, 22
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 160, 60
- panse_1D SE_W145B, 0, 15
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 30, 90
- panse_1D SE_W145B, 0, 22
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 120, 60
- panse_1D SE_W145B, 0, 15
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 200, 40
- panse_1D SE_W145B, 0, 10
+ loadspritegfx 10074
+ createvisualtask sub_80D074C, 2, 0, 6
+ delay 24
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 0, -4, -16
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 0, 4, -12
+ playsewithpan SE_W091, 192
+ delay 32
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 0, -3, -12
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 0, 5, -14
+ playsewithpan SE_W091, 192
+ delay 32
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 0, -5, -18
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 0, 3, -14
+ playsewithpan SE_W091, 192
+ delay 16
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 220, 60
+ waitplaysewithpan SE_W145B, 0, 15
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 60, 100
+ waitplaysewithpan SE_W145B, 0, 25
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 140, 55
+ waitplaysewithpan SE_W145B, 0, 14
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 180, 50
+ waitplaysewithpan SE_W145B, 0, 10
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 20, 90
+ waitplaysewithpan SE_W145B, 0, 22
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 90, 90
+ waitplaysewithpan SE_W145B, 0, 22
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 160, 60
+ waitplaysewithpan SE_W145B, 0, 15
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 30, 90
+ waitplaysewithpan SE_W145B, 0, 22
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 120, 60
+ waitplaysewithpan SE_W145B, 0, 15
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB334, 130, 1, 200, 40
+ waitplaysewithpan SE_W145B, 0, 10
end
Move_NEEDLE_ARM: @ 81CCD73
- loadsprite 10266
- loadsprite 10135
- loadsprite 10143
- panse_1C SE_W030, 63, 2, 16
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 0, -32, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 22, -22, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 30, 0, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 20, 20, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 0, 28, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, -19, 19, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, -27, 0, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, -18, -18, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 0, -25, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 17, -17, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 23, 0, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 16, 16, 16
- wait
- createtask sub_80A7FA0, 2, 1, 4, 0, 18, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, 0, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 132, 0, 0, 8, 1, 0
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, 0, -24, 10
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, 17, -17, 10
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, 24, 0, 10
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, 17, 17, 10
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, 0, 24, 10
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, -17, 17, 10
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, -24, 0, 10
- sprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, -17, -17, 10
+ loadspritegfx 10266
+ loadspritegfx 10135
+ loadspritegfx 10143
+ loopsewithpan SE_W030, 63, 2, 16
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 0, -32, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 22, -22, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 30, 0, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 20, 20, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 0, 28, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, -19, 19, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, -27, 0, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, -18, -18, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 0, -25, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 17, -17, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 23, 0, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 0, 16, 16, 16
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 18, 1
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, 132, 0, 0, 8, 1, 0
+ playsewithpan SE_W233B, 63
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, 0, -24, 10
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, 17, -17, 10
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, 24, 0, 10
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, 17, 17, 10
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, 0, 24, 10
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, -17, 17, 10
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, -24, 0, 10
+ createsprite gBattleAnimSpriteTemplate_83D6994, 130, 1, 1, -17, -17, 10
end
Move_SLACK_OFF: @ 81CCF23
- loadsprite 10031
- createtask sub_813257C, 2, 0
- panse_19 SE_W281, 192
- wait
+ loadspritegfx 10031
+ createvisualtask sub_813257C, 2, 0
+ playsewithpan SE_W281, 192
+ waitforvisualfinish
call Unknown_81D5EF5
- wait
+ waitforvisualfinish
end
Move_CRUSH_CLAW: @ 81CCF3B
- loadsprite 10167
- loadsprite 10039
- loadsprite 10208
- monbg 1
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4
- pause 4
- createtask sub_80A7FA0, 2, 1, 2, 0, 18, 1
- sprite gBattleAnimSpriteTemplate_83DB288, 130, -10, -10, 0
- sprite gBattleAnimSpriteTemplate_83DB288, 130, -10, 10, 0
- panse_19 SE_W013, 63
- pause 12
- sprite gBattleAnimSpriteTemplate_83DB288, 130, 10, -10, 1
- sprite gBattleAnimSpriteTemplate_83DB288, 130, 10, 10, 1
- panse_19 SE_W013, 63
- wait
- wait
- blendoff
- clearmonbg 1
+ loadspritegfx 10167
+ loadspritegfx 10039
+ loadspritegfx 10208
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4
+ delay 4
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 18, 1
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, -10, -10, 0
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, -10, 10, 0
+ playsewithpan SE_W013, 63
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, 10, -10, 1
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, 10, 10, 1
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ waitforvisualfinish
+ blendoff
+ clearmonbg ANIM_BANK_TARGET
end
Move_AROMATHERAPY: @ 81CCFAB
- panse_19 SE_W080, 0
- loadsprite 10159
- loadsprite 10203
- loadsprite 10049
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 0, 0, 7, 13293
- pause 1
- monbg 0
- pause 1
- sprite gBattleAnimSpriteTemplate_83D68B8, 0, 24, 16, 0, 2, 2, 0, 0
- sprite gBattleAnimSpriteTemplate_83D68B8, 66, 64, 24, 0, 3, 1, 1, 0
- sprite gBattleAnimSpriteTemplate_83D68D0, 0, 16, 24, 0, 2, 1, 0, 0
- pause 20
- sprite gBattleAnimSpriteTemplate_83D68B8, 66, 48, 12, 0, 4, 3, 1, 0
- sprite gBattleAnimSpriteTemplate_83D68B8, 0, 100, 16, 0, 3, 2, 0, 0
- sprite gBattleAnimSpriteTemplate_83D68B8, 0, 74, 24, 180, 3, 2, 0, 0
- pause 10
- sprite gBattleAnimSpriteTemplate_83D68B8, 66, 80, 30, 0, 4, 1, 1, 0
- sprite gBattleAnimSpriteTemplate_83D68B8, 0, 128, 12, 0, 3, 3, 0, 0
- sprite gBattleAnimSpriteTemplate_83D68D0, 0, 90, 16, 0, 2, 1, 0, 0
- wait
- clearmonbg 0
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 0, 7, 0, 13293
- pause 1
- panse_19 SE_W287, 192
- createtask sub_81300A4, 2, 1
- wait
- panse_19 SE_W234, 192
- sprite gBattleAnimSpriteTemplate_83D6CA0, 16, -15, 0, 0, 0, 32, 60, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83D6CA0, 16, 12, -5, 0, 0, 32, 60, 1
- wait
- panse_19 SE_REAPOKE, 192
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 43, 3, 10, 0, 13293
- sprite gBattleAnimSpriteTemplate_83D7974, 16, 0, 0, 0, 1
- wait
+ playsewithpan SE_W080, 0
+ loadspritegfx 10159
+ loadspritegfx 10203
+ loadspritegfx 10049
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 0, 0, 7, 13293
+ delay 1
+ monbg ANIM_BANK_ATTACKER
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D68B8, 0, 24, 16, 0, 2, 2, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D68B8, 66, 64, 24, 0, 3, 1, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83D68D0, 0, 16, 24, 0, 2, 1, 0, 0
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83D68B8, 66, 48, 12, 0, 4, 3, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83D68B8, 0, 100, 16, 0, 3, 2, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D68B8, 0, 74, 24, 180, 3, 2, 0, 0
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D68B8, 66, 80, 30, 0, 4, 1, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83D68B8, 0, 128, 12, 0, 3, 3, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D68D0, 0, 90, 16, 0, 2, 1, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 0, 7, 0, 13293
+ delay 1
+ playsewithpan SE_W287, 192
+ createvisualtask sub_81300A4, 2, 1
+ waitforvisualfinish
+ playsewithpan SE_W234, 192
+ createsprite gBattleAnimSpriteTemplate_83D6CA0, 16, -15, 0, 0, 0, 32, 60, 1
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83D6CA0, 16, 12, -5, 0, 0, 32, 60, 1
+ waitforvisualfinish
+ playsewithpan SE_REAPOKE, 192
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 43, 3, 10, 0, 13293
+ createsprite gBattleAnimSpriteTemplate_83D7974, 16, 0, 0, 0, 1
+ waitforvisualfinish
end
Move_FAKE_TEARS: @ 81CD10D
- loadsprite 10155
- loadsprite 10209
- loadsprite 10072
- createtask sub_80E2C60, 5, 10155, 0, 4, 4, 32108
- wait
- createtask sub_812E568, 5, 0, 2, 1
- panse_1C SE_W039, 192, 12, 4
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 0
- sprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 2
- sprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 3
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 0
- sprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 2
- sprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 3
- wait
+ loadspritegfx 10155
+ loadspritegfx 10209
+ loadspritegfx 10072
+ createvisualtask sub_80E2C60, 5, 10155, 0, 4, 4, 32108
+ waitforvisualfinish
+ createvisualtask sub_812E568, 5, 0, 2, 1
+ loopsewithpan SE_W039, 192, 12, 4
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 1
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 2
+ createsprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 3
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 1
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 2
+ createsprite gBattleAnimSpriteTemplate_83DB238, 2, 0, 3
+ waitforvisualfinish
end
Move_AIR_CUTTER: @ 81CD19D
- loadsprite 10003
- loadsprite 10138
- loadsprite 10135
- pause 0
- monbg 3
- setalpha 12, 8
- pause 0
- createtask sub_80CFB04, 2, 32, -24, 1536, 2, 128
- wait
- panse_19 SE_W015, 63
- sprite gBattleAnimSpriteTemplate_83D6B40, 2, 40, -32, 0, 2
- pause 5
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- createtask sub_80A7FA0, 2, 3, 2, 0, 8, 1
- wait
- blendoff
- clearmonbg 3
- pause 0
+ loadspritegfx 10003
+ loadspritegfx 10138
+ loadspritegfx 10135
+ delay 0
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ delay 0
+ createvisualtask sub_80CFB04, 2, 32, -24, 1536, 2, 128
+ waitforvisualfinish
+ playsewithpan SE_W015, 63
+ createsprite gBattleAnimSpriteTemplate_83D6B40, 2, 40, -32, 0, 2
+ delay 5
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_DEF_PARTNER, 2, 0, 8, 1
+ waitforvisualfinish
+ blendoff
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ delay 0
end
Move_ODOR_SLEUTH: @ 81CD1FF
- monbg 1
- createtask sub_81316F8, 5
- pause 24
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 4
- panse_19 SE_W207, 192
- pause 6
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 3, 4
- panse_19 SE_W207, 192
- wait
- clearmonbg 1
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, -1, 16, -1, 0
- panse_19 SE_W043, 192
+ monbg ANIM_BANK_TARGET
+ createvisualtask sub_81316F8, 5
+ delay 24
+ createsprite gHorizontalLungeSpriteTemplate, 2, 3, 4
+ playsewithpan SE_W207, 192
+ delay 6
+ createsprite gHorizontalLungeSpriteTemplate, 2, 3, 4
+ playsewithpan SE_W207, 192
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 3, 1, -1, 16, -1, 0
+ playsewithpan SE_W043, 192
end
Move_GRASS_WHISTLE: @ 81CD249
- loadsprite 10072
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 13298
- wait
- createtask sub_80CEA20, 2
- wait
+ loadspritegfx 10072
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 13298
+ waitforvisualfinish
+ createvisualtask sub_80CEA20, 2
+ waitforvisualfinish
panse_1B SE_W320, 192, 63, 2, 0
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 7, 1, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 6, 1, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 1, 1, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 3, 1, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 5, 1, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 6, 1, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 1, 1, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D7114, 130, 5, 1, 0
- pause 4
- wait
- createtask sub_80CEAD8, 2
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 13298
- wait
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 7, 1, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 6, 1, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 1, 1, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 3, 1, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 5, 1, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 6, 1, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 2, 1, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 1, 1, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D7114, 130, 5, 1, 0
+ delay 4
+ waitforvisualfinish
+ createvisualtask sub_80CEAD8, 2
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 4, 0, 13298
+ waitforvisualfinish
end
Move_TICKLE: @ 81CD33C
- loadsprite 10218
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 0, 16, 0
- wait
- sprite gBattleAnimSpriteTemplate_83D7B94, 0, -16, -8
- sprite gBattleAnimSpriteTemplate_83D7B94, 0, 16, -8
- panse_19 SE_W197, 192
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 16, 0, 0
- wait
- pause 20
- createtask sub_80A8B88, 3, 0, 6, 1280, 3, 0
- pause 12
- createtask sub_812E568, 3, 1, 6, 2
- panse_1C SE_W039, 63, 8, 8
- wait
+ loadspritegfx 10218
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 0, 16, 0
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D7B94, 0, -16, -8
+ createsprite gBattleAnimSpriteTemplate_83D7B94, 0, 16, -8
+ playsewithpan SE_W197, 192
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 16, 0, 0
+ waitforvisualfinish
+ delay 20
+ createvisualtask AnimTask_SwayMon, 3, 0, 6, 1280, 3, 0
+ delay 12
+ createvisualtask sub_812E568, 3, 1, 6, 2
+ loopsewithpan SE_W039, 63, 8, 8
+ waitforvisualfinish
end
Move_WATER_SPOUT: @ 81CD3A8
- loadsprite 10268
- loadsprite 10148
- monbg 3
+ loadspritegfx 10268
+ loadspritegfx 10148
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- createtask sub_80D40F4, 5
- panse_19 SE_W029, 192
- pause 44
- panse_19 SE_W291, 192
- wait
- pause 16
- createtask sub_80D45D8, 5
- panse_19 SE_W057, 63
- clearmonbg 3
+ createvisualtask sub_80D40F4, 5
+ playsewithpan SE_W029, 192
+ delay 44
+ playsewithpan SE_W291, 192
+ waitforvisualfinish
+ delay 16
+ createvisualtask sub_80D45D8, 5
+ playsewithpan SE_W057, 63
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_SHADOW_PUNCH: @ 81CD3D6
- loadsprite 10135
- loadsprite 10143
+ loadspritegfx 10135
+ loadspritegfx 10143
fadetobg 2
waitbgfadein
- monbg 2
+ monbg ANIM_BANK_ATK_PARTNER
setalpha 9, 8
- createtask sub_807A69C, 2, 0, 13
- panse_19 SE_W026, 192
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, 0, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 132, 0, 0, 8, 1, 0
- panse_19 SE_W004, 63
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- wait
- clearmonbg 2
+ createvisualtask sub_807A69C, 2, 0, 13
+ playsewithpan SE_W026, 192
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, 132, 0, 0, 8, 1, 0
+ playsewithpan SE_W004, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
restorebg
waitbgfadein
@@ -4313,819 +4315,819 @@ Move_SHADOW_PUNCH: @ 81CD3D6
Move_EXTRASENSORY: @ 81CD431
call Unknown_81D61E7
- monbg 3
- setalpha 12, 8
- createtask sub_8079790, 5, 0, 891, 12, 1, 1
- createtask sub_80DC2D4, 5, 0
- panse_19 SE_W020, 63
- wait
- createtask sub_8079790, 5, 0, 891, 12, 1, 1
- createtask sub_80DC2D4, 5, 1
- panse_19 SE_W020, 63
- wait
- createtask sub_80DC4F4, 5, 0
- createtask sub_80DC2D4, 5, 2
- panse_19 SE_W043, 192
- wait
- blendoff
- clearmonbg 3
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_BANK_ATTACKER, 891, 12, 1, 1
+ createvisualtask sub_80DC2D4, 5, 0
+ playsewithpan SE_W020, 63
+ waitforvisualfinish
+ createvisualtask AnimTask_BlendMonInAndOut, 5, ANIM_BANK_ATTACKER, 891, 12, 1, 1
+ createvisualtask sub_80DC2D4, 5, 1
+ playsewithpan SE_W020, 63
+ waitforvisualfinish
+ createvisualtask sub_80DC4F4, 5, 0
+ createvisualtask sub_80DC2D4, 5, 2
+ playsewithpan SE_W043, 192
+ waitforvisualfinish
+ blendoff
+ clearmonbg ANIM_BANK_DEF_PARTNER
call Unknown_81D61F3
end
Move_AERIAL_ACE: @ 81CD499
- loadsprite 10138
- monbg 1
+ loadspritegfx 10138
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- createtask sub_80A8500, 2, 0, 24, 6, 1, 5
- createtask sub_80E2DD8, 2, 0, 4, 7, 3
- sprite gBattleAnimSpriteTemplate_83D6B28, 2, 40, -32, 0
- panse_19 SE_W013B, 192
- pause 5
- createtask sub_80A7E7C, 2, 1, 0, 3, 10, 1
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 10, 0, 0
- panse_19 SE_W013, 63
- wait
- clearmonbg 1
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 24, 6, 1, 5
+ createvisualtask sub_80E2DD8, 2, 0, 4, 7, 3
+ createsprite gCuttingSliceSpriteTemplate, 2, 40, -32, 0
+ playsewithpan SE_W013B, 192
+ delay 5
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 10, 1
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 10, 0, 0
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_IRON_DEFENSE: @ 81CD503
- panse_1C SE_REAPOKE, 192, 28, 2
- createtask sub_80E0A4C, 5, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 8, 2, -1, 14, -1, 0
- wait
+ loopsewithpan SE_REAPOKE, 192, 28, 2
+ createvisualtask sub_80E0A4C, 5, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 1, 8, 2, -1, 14, -1, 0
+ waitforvisualfinish
end
Move_BLOCK: @ 81CD52D
- loadsprite 10250
- sprite gBattleAnimSpriteTemplate_8402A6C, 194
- panse_19 SE_W207, 63
+ loadspritegfx 10250
+ createsprite gBattleAnimSpriteTemplate_8402A6C, 194
+ playsewithpan SE_W207, 63
end
Move_HOWL: @ 81CD53C
- loadsprite 10053
- createtask sub_812F724, 2, 0
- pause 12
+ loadspritegfx 10053
+ createvisualtask sub_812F724, 2, 0
+ delay 12
call _81CE35E
- createtask sub_812B18C, 2, 0, 3
- wait
- pause 30
+ createvisualtask sub_812B18C, 2, 0, 3
+ waitforvisualfinish
+ delay 30
end
Move_BULK_UP: @ 81CD55E
- loadsprite 10086
- createtask sub_80D08C8, 2
- panse_19 SE_W207, 192
- wait
- sprite gBattleAnimSpriteTemplate_83D7764, 2
- panse_1C SE_W207, 192, 4, 2
- wait
+ loadspritegfx 10086
+ createvisualtask sub_80D08C8, 2
+ playsewithpan SE_W207, 192
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D7764, 2
+ loopsewithpan SE_W207, 192, 4, 2
+ waitforvisualfinish
end
Move_COVET: @ 81CD57C
- loadsprite 10210
- loadsprite 10224
- createtask sub_812E568, 5, 0, 2, 0
- sprite gBattleAnimSpriteTemplate_83D7A80, 3, 0, 20
- panse_19 SE_W204, 192
- pause 15
- sprite gBattleAnimSpriteTemplate_83D7A80, 3, -20, 20
- panse_19 SE_W204, 192
- pause 15
- sprite gBattleAnimSpriteTemplate_83D7A80, 3, 20, 20
- panse_19 SE_W204, 192
- wait
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- panse_1C SE_W146, 63, 4, 3
+ loadspritegfx 10210
+ loadspritegfx 10224
+ createvisualtask sub_812E568, 5, 0, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83D7A80, 3, 0, 20
+ playsewithpan SE_W204, 192
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83D7A80, 3, -20, 20
+ playsewithpan SE_W204, 192
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83D7A80, 3, 20, 20
+ playsewithpan SE_W204, 192
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ loopsewithpan SE_W146, 63, 4, 3
end
Move_VOLT_TACKLE: @ 81CD5D9
- loadsprite 10001
- loadsprite 10212
- loadsprite 10213
- monbg 0
- setalpha 12, 8
- createtask sub_80E2A38, 10, 1, 0, 0, 8, 0
- wait
- sprite gBattleAnimSpriteTemplate_83D9AB4, 1
- panse_19 SE_W268, 192
- wait
- clearmonbg 0
- blendoff
- pause 8
- createtask sub_80D700C, 5, 0
- panse_19 SE_W085, 192
- wait
- createtask sub_80D700C, 5, 1
- panse_19 SE_W085, 63
- wait
- createtask sub_80D700C, 5, 2
- panse_19 SE_W085, 192
- wait
- createtask sub_80D700C, 5, 3
- panse_19 SE_W085, 63
- wait
- createtask sub_80D700C, 5, 4
- panse_19 SE_W085, 192
- pause 8
- createtask sub_80A7FA0, 2, 1, 10, 0, 18, 1
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D9A9C, 2, 1, 16, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9A9C, 2, 1, -16, -16
- pause 8
- createtask sub_80D6E9C, 5
- wait
- createtask sub_80A7FA0, 2, 0, 3, 0, 9, 1
- panse_19 SE_W085B, 192
- sprite gBattleAnimSpriteTemplate_83D9A9C, 2, 0, 16, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9A9C, 2, 0, -16, -16
- wait
- createtask sub_80E2A38, 10, 1, 0, 8, 0, 0
- wait
+ loadspritegfx 10001
+ loadspritegfx 10212
+ loadspritegfx 10213
+ monbg ANIM_BANK_ATTACKER
+ setalpha 12, 8
+ createvisualtask sub_80E2A38, 10, 1, 0, 0, 8, 0
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D9AB4, 1
+ playsewithpan SE_W268, 192
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
+ blendoff
+ delay 8
+ createvisualtask sub_80D700C, 5, 0
+ playsewithpan SE_W085, 192
+ waitforvisualfinish
+ createvisualtask sub_80D700C, 5, 1
+ playsewithpan SE_W085, 63
+ waitforvisualfinish
+ createvisualtask sub_80D700C, 5, 2
+ playsewithpan SE_W085, 192
+ waitforvisualfinish
+ createvisualtask sub_80D700C, 5, 3
+ playsewithpan SE_W085, 63
+ waitforvisualfinish
+ createvisualtask sub_80D700C, 5, 4
+ playsewithpan SE_W085, 192
+ delay 8
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 10, 0, 18, 1
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D9A9C, 2, 1, 16, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9A9C, 2, 1, -16, -16
+ delay 8
+ createvisualtask sub_80D6E9C, 5
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 3, 0, 9, 1
+ playsewithpan SE_W085B, 192
+ createsprite gBattleAnimSpriteTemplate_83D9A9C, 2, 0, 16, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9A9C, 2, 0, -16, -16
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 1, 0, 8, 0, 0
+ waitforvisualfinish
end
Move_WATER_SPORT: @ 81CD6D1
- loadsprite 10268
- createtask sub_80D48F4, 5
- pause 8
- panse_19 SE_W057, 192
- pause 44
- panse_19 SE_W057, 192
- pause 44
- panse_19 SE_W057, 192
- pause 44
+ loadspritegfx 10268
+ createvisualtask sub_80D48F4, 5
+ delay 8
+ playsewithpan SE_W057, 192
+ delay 44
+ playsewithpan SE_W057, 192
+ delay 44
+ playsewithpan SE_W057, 192
+ delay 44
panse_1B SE_W057, 192, 63, 2, 0
end
Move_CALM_MIND: @ 81CD6F7
- loadsprite 10203
- monbg 2
- createtask sub_80E2A7C, 5, 0, 0, 0, 16, 0
- wait
- createtask sub_80E3BDC, 5, 1
- wait
- sprite gBattleAnimSpriteTemplate_83D795C, 40, 0, 0, 0, 0
- panse_19 SE_W048, 192
- pause 14
- sprite gBattleAnimSpriteTemplate_83D795C, 40, 0, 0, 0, 0
- panse_19 SE_W048, 192
- pause 14
- sprite gBattleAnimSpriteTemplate_83D795C, 40, 0, 0, 0, 0
- panse_19 SE_W048, 192
- wait
- createtask sub_80E3BDC, 5, 0
- wait
- createtask sub_80E2A7C, 5, 0, 0, 16, 0, 0
- wait
- clearmonbg 2
+ loadspritegfx 10203
+ monbg ANIM_BANK_ATK_PARTNER
+ createvisualtask sub_80E2A7C, 5, 0, 0, 0, 16, 0
+ waitforvisualfinish
+ createvisualtask sub_80E3BDC, 5, 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D795C, 40, 0, 0, 0, 0
+ playsewithpan SE_W048, 192
+ delay 14
+ createsprite gBattleAnimSpriteTemplate_83D795C, 40, 0, 0, 0, 0
+ playsewithpan SE_W048, 192
+ delay 14
+ createsprite gBattleAnimSpriteTemplate_83D795C, 40, 0, 0, 0, 0
+ playsewithpan SE_W048, 192
+ waitforvisualfinish
+ createvisualtask sub_80E3BDC, 5, 0
+ waitforvisualfinish
+ createvisualtask sub_80E2A7C, 5, 0, 0, 16, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
end
Move_LEAF_BLADE: @ 81CD775
- loadsprite 10063
- loadsprite 10285
- createtask sub_80CBDF4, 5
- pause 2
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- panse_19 SE_W015, 63
- pause 50
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- panse_19 SE_W015, 63
- pause 50
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- panse_19 SE_W015, 63
- wait
- monbg 1
- setalpha 12, 8
- pause 12
- createtask sub_80A7FA0, 2, 1, 8, 0, 18, 1
- sprite gBattleAnimSpriteTemplate_83DB520, 130, 0, 0, 1, 36
- panse_19 SE_W043, 63
- wait
- clearmonbg 1
+ loadspritegfx 10063
+ loadspritegfx 10285
+ createvisualtask sub_80CBDF4, 5
+ delay 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ playsewithpan SE_W015, 63
+ delay 50
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ playsewithpan SE_W015, 63
+ delay 50
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ playsewithpan SE_W015, 63
+ waitforvisualfinish
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ delay 12
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 8, 0, 18, 1
+ createsprite gBattleAnimSpriteTemplate_83DB520, 130, 0, 0, 1, 36
+ playsewithpan SE_W043, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_DRAGON_DANCE: @ 81CD7F8
- loadsprite 10249
- monbg 0
+ loadspritegfx 10249
+ monbg ANIM_BANK_ATTACKER
monbgprio_28 0
- pause 1
- createtask sub_80DF924, 5
- panse_19 SE_W100, 192
- pause 8
- createtask sub_80798AC, 5, 10249, 19456, 14, 0, 3
- sprite gBattleAnimSpriteTemplate_83DB0E8, 2, 0
- sprite gBattleAnimSpriteTemplate_83DB0E8, 2, 43
- sprite gBattleAnimSpriteTemplate_83DB0E8, 2, 85
- sprite gBattleAnimSpriteTemplate_83DB0E8, 2, 128
- sprite gBattleAnimSpriteTemplate_83DB0E8, 2, 170
- sprite gBattleAnimSpriteTemplate_83DB0E8, 2, 213
- pause 30
- panse_19 SE_W100, 192
- pause 30
- panse_19 SE_W100, 192
- wait
- clearmonbg 0
- pause 1
+ delay 1
+ createvisualtask sub_80DF924, 5
+ playsewithpan SE_W100, 192
+ delay 8
+ createvisualtask sub_80798AC, 5, 10249, 19456, 14, 0, 3
+ createsprite gBattleAnimSpriteTemplate_83DB0E8, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83DB0E8, 2, 43
+ createsprite gBattleAnimSpriteTemplate_83DB0E8, 2, 85
+ createsprite gBattleAnimSpriteTemplate_83DB0E8, 2, 128
+ createsprite gBattleAnimSpriteTemplate_83DB0E8, 2, 170
+ createsprite gBattleAnimSpriteTemplate_83DB0E8, 2, 213
+ delay 30
+ playsewithpan SE_W100, 192
+ delay 30
+ playsewithpan SE_W100, 192
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
+ delay 1
end
Move_SHOCK_WAVE: @ 81CD867
- loadsprite 10211
- loadsprite 10212
- loadsprite 10001
- loadsprite 10037
- monbg 0
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0
- wait
- createtask sub_80D6B3C, 2, 0, 20, 0, 2
- panse_19 SE_W268, 192
- pause 12
- sprite gBattleAnimSpriteTemplate_83D9B28, 2
- pause 30
- createtask sub_80D72DC, 5
- pause 12
- wait
- createtask sub_80D759C, 5
- panse_19 SE_W161B, 63
- wait
- createtask sub_80A7E7C, 2, 1, 0, 6, 18, 1
- createtask sub_80E2A38, 5, 1, 3, 16, 0, 32767
- createtask sub_80E2A38, 5, 4, 0, 16, 16, 0
- pause 4
- createtask sub_80E2A38, 5, 4, 0, 0, 0, 0
- wait
- clearmonbg 0
+ loadspritegfx 10211
+ loadspritegfx 10212
+ loadspritegfx 10001
+ loadspritegfx 10037
+ monbg ANIM_BANK_ATTACKER
+ setalpha 12, 8
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 4, 0
+ waitforvisualfinish
+ createvisualtask sub_80D6B3C, 2, 0, 20, 0, 2
+ playsewithpan SE_W268, 192
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83D9B28, 2
+ delay 30
+ createvisualtask sub_80D72DC, 5
+ delay 12
+ waitforvisualfinish
+ createvisualtask sub_80D759C, 5
+ playsewithpan SE_W161B, 63
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 6, 18, 1
+ createvisualtask sub_80E2A38, 5, 1, 3, 16, 0, 32767
+ createvisualtask sub_80E2A38, 5, 4, 0, 16, 16, 0
+ delay 4
+ createvisualtask sub_80E2A38, 5, 4, 0, 0, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
blendoff
end
Move_HARDEN: @ 81CD909
- panse_1C SE_W231, 192, 28, 2
- createtask sub_80E0A4C, 5, 0, 0, 0
- wait
+ loopsewithpan SE_W231, 192, 28, 2
+ createvisualtask sub_80E0A4C, 5, 0, 0, 0
+ waitforvisualfinish
end
Move_BELLY_DRUM: @ 81CD91E
- loadsprite 10072
- loadsprite 10193
- createtask sub_80CEA20, 2
- wait
+ loadspritegfx 10072
+ loadspritegfx 10193
+ createvisualtask sub_80CEA20, 2
+ waitforvisualfinish
call _81CD9EB
- sprite gBattleAnimSpriteTemplate_83D71A8, 2, 0, 0, 0, 0
- panse_19 SE_W187, 192
- pause 15
+ createsprite gBattleAnimSpriteTemplate_83D71A8, 2, 0, 0, 0, 0
+ playsewithpan SE_W187, 192
+ delay 15
call _81CD9D0
- sprite gBattleAnimSpriteTemplate_83D71A8, 2, 1, 1, 1, 0
- panse_19 SE_W187, 192
- pause 15
+ createsprite gBattleAnimSpriteTemplate_83D71A8, 2, 1, 1, 1, 0
+ playsewithpan SE_W187, 192
+ delay 15
call _81CD9EB
- sprite gBattleAnimSpriteTemplate_83D71A8, 2, 0, 3, 3, 128
- panse_19 SE_W187, 192
- pause 7
+ createsprite gBattleAnimSpriteTemplate_83D71A8, 2, 0, 3, 3, 128
+ playsewithpan SE_W187, 192
+ delay 7
call _81CD9D0
- sprite gBattleAnimSpriteTemplate_83D71A8, 2, 1, 2, 0, 128
- panse_19 SE_W187, 192
- pause 7
+ createsprite gBattleAnimSpriteTemplate_83D71A8, 2, 1, 2, 0, 128
+ playsewithpan SE_W187, 192
+ delay 7
call _81CD9EB
- sprite gBattleAnimSpriteTemplate_83D71A8, 2, 0, 1, 1, 0
- panse_19 SE_W187, 192
- pause 7
+ createsprite gBattleAnimSpriteTemplate_83D71A8, 2, 0, 1, 1, 0
+ playsewithpan SE_W187, 192
+ delay 7
call _81CD9D0
- sprite gBattleAnimSpriteTemplate_83D71A8, 2, 1, 0, 3, 0
- panse_19 SE_W187, 192
- wait
- createtask sub_80CEAD8, 2
- wait
+ createsprite gBattleAnimSpriteTemplate_83D71A8, 2, 1, 0, 3, 0
+ playsewithpan SE_W187, 192
+ waitforvisualfinish
+ createvisualtask sub_80CEAD8, 2
+ waitforvisualfinish
end
_81CD9D0:
- sprite gBattleAnimSpriteTemplate_83D7174, 3, 0
- createtask sub_80A7E7C, 2, 0, 0, 8, 2, 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83D7174, 3, 0
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_ATTACKER, 0, 8, 2, 1
+ return
_81CD9EB:
- sprite gBattleAnimSpriteTemplate_83D7174, 3, 1
- createtask sub_80A7E7C, 2, 0, 0, 8, 2, 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83D7174, 3, 1
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_ATTACKER, 0, 8, 2, 1
+ return
Move_MIND_READER: @ 81CDA06
- loadsprite 10189
- loadsprite 10190
- loadsprite 10191
+ loadspritegfx 10189
+ loadspritegfx 10190
+ loadspritegfx 10191
monbg 4
- panse_19 SE_W109, 63
- sprite gBattleAnimSpriteTemplate_84021DC, 5, 0, 0, 1, 0
- sprite gBattleAnimSpriteTemplate_84021F4, 5
- pause 40
- panse_19 SE_W043, 63
- createtask sub_80E1F8C, 2, 1, 1, 2, 0, 10, 0
+ playsewithpan SE_W109, 63
+ createsprite gBattleAnimSpriteTemplate_84021DC, 5, 0, 0, 1, 0
+ createsprite gBattleAnimSpriteTemplate_84021F4, 5
+ delay 40
+ playsewithpan SE_W043, 63
+ createvisualtask sub_80E1F8C, 2, 1, 1, 2, 0, 10, 0
call _81CDA4D
- wait
+ waitforvisualfinish
clearmonbg 4
end
_81CDA4D:
- sprite gBattleAnimSpriteTemplate_840220C, 4, 70, 0, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, 40, 40, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, 10, -60, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, -50, -40, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, -40, 40, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, 50, -50, 6
- pause 2
- sprite gBattleAnimSpriteTemplate_840220C, 4, 50, -30, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, 60, 10, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, 0, 60, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, 0, -40, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, -60, 20, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, -60, -30, 6
- pause 2
- sprite gBattleAnimSpriteTemplate_840220C, 4, -50, 50, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, -60, 20, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, -40, -40, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, 20, -60, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, 50, -50, 6
- sprite gBattleAnimSpriteTemplate_840220C, 4, 35, 40, 6
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 70, 0, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 40, 40, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 10, -60, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, -50, -40, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, -40, 40, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 50, -50, 6
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 50, -30, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 60, 10, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 0, 60, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 0, -40, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, -60, 20, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, -60, -30, 6
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, -50, 50, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, -60, 20, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, -40, -40, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 20, -60, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 50, -50, 6
+ createsprite gBattleAnimSpriteTemplate_840220C, 4, 35, 40, 6
+ delay 2
+ return
Move_ICE_PUNCH: @ 81CDB3E
- monbg 3
- setalpha 12, 8
- loadsprite 10141
- loadsprite 10135
- loadsprite 10143
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0
- createtask sub_80E2A38, 10, 4, 2, 0, 9, 32588
- pause 20
- panse_19 SE_W081, 63
- sprite gBattleAnimSpriteTemplate_83D9BF8, 2, 0
- sprite gBattleAnimSpriteTemplate_83D9BF8, 2, 64
- sprite gBattleAnimSpriteTemplate_83D9BF8, 2, 128
- sprite gBattleAnimSpriteTemplate_83D9BF8, 2, 192
- pause 5
- sprite gBattleAnimSpriteTemplate_83D9BE0, 2, 32
- sprite gBattleAnimSpriteTemplate_83D9BE0, 2, 96
- sprite gBattleAnimSpriteTemplate_83D9BE0, 2, 160
- sprite gBattleAnimSpriteTemplate_83D9BE0, 2, 224
- pause 17
- sprite gBattleAnimSpriteTemplate_83D9FA8, 4, 0, -10, 8, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, -10, 1, 1
- panse_19 SE_W004, 63
- pause 2
- createtask sub_80A7E7C, 5, 1, 0, 5, 3, 1
- wait
- pause 15
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ loadspritegfx 10141
+ loadspritegfx 10135
+ loadspritegfx 10143
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 9, 32588
+ delay 20
+ playsewithpan SE_W081, 63
+ createsprite gBattleAnimSpriteTemplate_83D9BF8, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83D9BF8, 2, 64
+ createsprite gBattleAnimSpriteTemplate_83D9BF8, 2, 128
+ createsprite gBattleAnimSpriteTemplate_83D9BF8, 2, 192
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D9BE0, 2, 32
+ createsprite gBattleAnimSpriteTemplate_83D9BE0, 2, 96
+ createsprite gBattleAnimSpriteTemplate_83D9BE0, 2, 160
+ createsprite gBattleAnimSpriteTemplate_83D9BE0, 2, 224
+ delay 17
+ createsprite gFistFootSpriteTemplate, 4, 0, -10, 8, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, -10, 1, 1
+ playsewithpan SE_W004, 63
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 3, 1
+ waitforvisualfinish
+ delay 15
call Unknown_81D5C36
- pause 5
- createtask sub_80E2A38, 10, 4, 2, 9, 0, 32588
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 7, 0, 0
- wait
- clearmonbg 3
+ delay 5
+ createvisualtask sub_80E2A38, 10, 4, 2, 9, 0, 32588
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 7, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_REST: @ 81CDC29
- panse_19 SE_W173, 192
- loadsprite 10228
- sprite gBattleAnimSpriteTemplate_83D6D94, 2, 4, -10, 16, 0, 0
- pause 20
- sprite gBattleAnimSpriteTemplate_83D6D94, 2, 4, -10, 16, 0, 0
- pause 20
- sprite gBattleAnimSpriteTemplate_83D6D94, 2, 4, -10, 16, 0, 0
- wait
+ playsewithpan SE_W173, 192
+ loadspritegfx 10228
+ createsprite gBattleAnimSpriteTemplate_83D6D94, 2, 4, -10, 16, 0, 0
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83D6D94, 2, 4, -10, 16, 0, 0
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83D6D94, 2, 4, -10, 16, 0, 0
+ waitforvisualfinish
end
Move_CONFUSION: @ 81CDC69
- monbg 3
+ monbg ANIM_BANK_DEF_PARTNER
call Unknown_81D61E7
setalpha 8, 8
- createtask sub_80A7FA0, 2, 0, 1, 0, 10, 1
- createtask sub_80E1F8C, 2, 2, 0, 2, 0, 8, 32767
- wait
- panse_19 SE_W048, 63
- createtask sub_80A7E7C, 2, 1, 3, 0, 15, 1
- createtask sub_80A8D34, 5, -4, -4, 15, 1, 1
- wait
- clearmonbg 3
- blendoff
- pause 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 10, 1
+ createvisualtask sub_80E1F8C, 2, 2, 0, 2, 0, 8, 32767
+ waitforvisualfinish
+ playsewithpan SE_W048, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 15, 1
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_BANK_TARGET, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ blendoff
+ delay 1
call Unknown_81D61F3
end
Move_PSYCHIC: @ 81CDCCA
- monbg 3
+ monbg ANIM_BANK_DEF_PARTNER
call Unknown_81D61E7
setalpha 8, 8
- createtask sub_80A7FA0, 2, 0, 1, 0, 10, 1
- createtask sub_80E1F8C, 2, 2, 0, 2, 0, 8, 767
- wait
- panse_1C SE_W048, 63, 10, 3
- createtask sub_80A7E7C, 2, 1, 5, 0, 15, 1
- createtask sub_80A8D34, 5, -6, -6, 15, 1, 1
- wait
- clearmonbg 3
- blendoff
- pause 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 10, 1
+ createvisualtask sub_80E1F8C, 2, 2, 0, 2, 0, 8, 767
+ waitforvisualfinish
+ loopsewithpan SE_W048, 63, 10, 3
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 15, 1
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, ANIM_BANK_TARGET, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ blendoff
+ delay 1
call Unknown_81D61F3
end
Move_FUTURE_SIGHT: @ 81CDD2D
- jump _81CDD3B
+ goto _81CDD3B
_81CDD32:
- wait
- pause 1
+ waitforvisualfinish
+ delay 1
call Unknown_81D61F3
end
_81CDD3B:
- monbg 2
- panse_19 SE_W060, 192
+ monbg ANIM_BANK_ATK_PARTNER
+ playsewithpan SE_W060, 192
call Unknown_81D61E7
setalpha 8, 8
- panse_19 SE_W048, 192
- createtask sub_80E1F8C, 2, 2, 0, 2, 0, 8, 32767
- createtask sub_80A8D34, 5, -4, -4, 15, 0, 1
- wait
- clearmonbg 2
+ playsewithpan SE_W048, 192
+ createvisualtask sub_80E1F8C, 2, 2, 0, 2, 0, 8, 32767
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_BANK_ATTACKER, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
- jump _81CDD32
+ goto _81CDD32
Unknown_81CDD7A: @ 81CDD7A
- monbg 3
- panse_19 SE_W060, 192
+ monbg ANIM_BANK_DEF_PARTNER
+ playsewithpan SE_W060, 192
call Unknown_81D61E7
setalpha 8, 8
- panse_19 SE_W048, 63
- panse_1D SE_W048, 63, 8
- createtask sub_80A7E7C, 2, 1, 4, 0, 15, 1
- createtask sub_80A8D34, 5, -5, -5, 15, 1, 1
- wait
- createtask sub_80A7E7C, 2, 1, 4, 0, 24, 1
- wait
- clearmonbg 3
+ playsewithpan SE_W048, 63
+ waitplaysewithpan SE_W048, 63, 8
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 4, 0, 15, 1
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, ANIM_BANK_TARGET, 1
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 4, 0, 24, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
- jump _81CDD32
+ goto _81CDD32
Move_THUNDER: @ 81CDDCE
- loadsprite 10037
+ loadspritegfx 10037
fadetobg 11
waitbgfadeout
- createtask sub_80E3A58, 5, -256, 0, 1, -1
+ createvisualtask sub_80E3A58, 5, -256, 0, 1, -1
waitbgfadein
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0
- pause 16
- createtask sub_80E2324, 2, 257, 257, 257
- panse_19 SE_W086, 63
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 16, -36
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 16, -20
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 16, 12
- pause 20
- sprite gBattleAnimSpriteTemplate_83D97D0, 134, -16, -32
- panse_19 SE_W086, 63
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 134, -16, -16
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 134, -16, 16
- panse_19 SE_W086, 63
- pause 5
- createtask sub_80E2324, 2, 257, 257, 257
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 24, -32
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 24, -16
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 24, 16
- pause 30
- createtask sub_80E2324, 2, 257, 257, 257
- pause 5
- createtask sub_80E2324, 2, 257, 257, 257
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, -32
- panse_19 SE_W161B, 63
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, -16
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, 16
- pause 10
- createtask sub_80E2324, 2, 257, 257, 257
- pause 1
- createtask sub_80D60B4, 2, 30, 3, 1, 0
- pause 2
- createtask sub_80E2324, 2, 257, 257, 257
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB3C4, 130, 1, 2, 16, 0, 0
- wait
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0
+ delay 16
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ playsewithpan SE_W086, 63
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 16, -36
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 16, -20
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 16, 12
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 134, -16, -32
+ playsewithpan SE_W086, 63
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 134, -16, -16
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 134, -16, 16
+ playsewithpan SE_W086, 63
+ delay 5
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 24, -32
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 24, -16
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 24, 16
+ delay 30
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 5
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, -32
+ playsewithpan SE_W161B, 63
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, -16
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, 16
+ delay 10
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 1
+ createvisualtask sub_80D60B4, 2, 30, 3, 1, 0
+ delay 2
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 130, 1, 2, 16, 0, 0
+ waitforvisualfinish
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
end
Move_THUNDER_PUNCH: @ 81CDF28
- loadsprite 10135
- loadsprite 10143
- loadsprite 10037
- monbg 1
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0
- wait
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83D9FA8, 132, 0, 0, 8, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, 0, 1, 1
- pause 1
- createtask sub_80E2324, 2, 257, 257, 257
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, -48
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 2, 0, -16
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 2, 0, 16
- pause 1
- panse_19 SE_W161B, 63
- createtask sub_80E2324, 2, 257, 257, 257
- pause 2
- createtask sub_80A7E7C, 2, 1, 0, 3, 15, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 2
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0
- pause 20
- wait
- clearmonbg 1
+ loadspritegfx 10135
+ loadspritegfx 10143
+ loadspritegfx 10037
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0
+ waitforvisualfinish
+ playsewithpan SE_W004, 63
+ createsprite gFistFootSpriteTemplate, 132, 0, 0, 8, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 1
+ delay 1
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, -48
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 2, 0, -16
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 2, 0, 16
+ delay 1
+ playsewithpan SE_W161B, 63
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 15, 1
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0
+ delay 20
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_SACRED_FIRE: @ 81CDFF1
- loadsprite 10033
- loadsprite 10035
- panse_1C SE_W221, 192, 7, 5
- sprite gBattleAnimSpriteTemplate_83D9538, 2, -32, 0, 50, 5, -2, 0
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9538, 66, -20, -10, 50, 5, -1, -1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9538, 66, 0, -16, 50, 5, 0, -1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9538, 66, 20, -10, 50, 5, 1, -1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9538, 2, 32, 0, 50, 5, 2, 0
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9538, 2, 20, 10, 50, 5, 1, 1
- pause 1
- createtask sub_80E2324, 2, 257, 257, 257
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9538, 2, 0, 16, 50, 5, 0, 1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9538, 2, -20, 10, 50, 5, -1, 1
- createtask sub_80E2324, 2, 257, 257, 257
- pause 1
- wait
- panse_19 SE_W221B, 63
- sprite gBattleAnimSpriteTemplate_83D9508, 130, -16, 0, 70, 16, 0, 1
- pause 10
- panse_19 SE_W221B, 63
- sprite gBattleAnimSpriteTemplate_83D9508, 130, 0, 0, 70, 16, 0, 1
- pause 10
- panse_19 SE_W221B, 63
- sprite gBattleAnimSpriteTemplate_83D9508, 130, 16, 0, 80, 16, 0, 1
- pause 1
- createtask sub_80E2324, 2, 257, 257, 257
- pause 1
- wait
- createtask sub_80E2324, 2, 257, 257, 257
- pause 1
- panse_19 SE_W172B, 63
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, 0
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 0, 1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, -1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 2, 1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 1, -1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, 1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 1, -2
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 3, 1
- wait
+ loadspritegfx 10033
+ loadspritegfx 10035
+ loopsewithpan SE_W221, 192, 7, 5
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, -32, 0, 50, 5, -2, 0
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, -20, -10, 50, 5, -1, -1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, 0, -16, 50, 5, 0, -1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, 20, -10, 50, 5, 1, -1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, 32, 0, 50, 5, 2, 0
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, 20, 10, 50, 5, 1, 1
+ delay 1
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, 0, 16, 50, 5, 0, 1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, -20, 10, 50, 5, -1, 1
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 1
+ waitforvisualfinish
+ playsewithpan SE_W221B, 63
+ createsprite gBattleAnimSpriteTemplate_83D9508, 130, -16, 0, 70, 16, 0, 1
+ delay 10
+ playsewithpan SE_W221B, 63
+ createsprite gBattleAnimSpriteTemplate_83D9508, 130, 0, 0, 70, 16, 0, 1
+ delay 10
+ playsewithpan SE_W221B, 63
+ createsprite gBattleAnimSpriteTemplate_83D9508, 130, 16, 0, 80, 16, 0, 1
+ delay 1
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 1
+ waitforvisualfinish
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 1
+ playsewithpan SE_W172B, 63
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, 0
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 0, 1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, -1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 2, 1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 1, -1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, 1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 1, -2
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 3, 1
+ waitforvisualfinish
end
Move_SCRATCH: @ 81CE1D8
- loadsprite 10137
- monbg 1
+ loadspritegfx 10137
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- panse_19 SE_W010, 63
- sprite gBattleAnimSpriteTemplate_8402180, 2, 0, 0, 1, 0
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W010, 63
+ createsprite gBattleAnimSpriteTemplate_8402180, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
- wait
+ waitforvisualfinish
end
Move_DRAGON_BREATH: @ 81CE20A
- loadsprite 10029
- monbg 3
+ loadspritegfx 10029
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
- panse_1C SE_W172, 192, 7, 7
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- pause 2
- createtask sub_80E2A38, 10, 4, 1, 0, 9, 31
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- pause 2
- createtask sub_80A7FA0, 2, 1, 2, 0, 21, 1
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
- wait
- createtask sub_80E2A38, 10, 4, 1, 9, 0, 31
- wait
- clearmonbg 3
+ loopsewithpan SE_W172, 192, 7, 7
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ delay 2
+ createvisualtask sub_80E2A38, 10, 4, 1, 0, 9, 31
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ delay 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 21, 1
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DB044, 130, 0, 0, 0, 0, 20
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 4, 1, 9, 0, 31
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
Move_ROAR: @ 81CE31E
- loadsprite 10053
- monbg 0
+ loadspritegfx 10053
+ monbg ANIM_BANK_ATTACKER
monbgprio_28 0
setalpha 8, 8
- createtask sub_812B18C, 2, 0, 2
- createtask sub_80A8D34, 5, -5, -5, 10, 0, 1
+ createvisualtask sub_812B18C, 2, 0, 2
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_BANK_ATTACKER, 1
call _81CE35E
- pause 20
- createtask sub_80A8A80, 5, 1, 2
- wait
- clearmonbg 0
+ delay 20
+ createvisualtask sub_80A8A80, 5, 1, 2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
blendoff
- wait
- pause 20
+ waitforvisualfinish
+ delay 20
end
_81CE35E:
- sprite gBattleAnimSpriteTemplate_8402934, 2, 24, -8, 0
- sprite gBattleAnimSpriteTemplate_8402934, 2, 24, 0, 2
- sprite gBattleAnimSpriteTemplate_8402934, 2, 24, 8, 1
- pause 15
- sprite gBattleAnimSpriteTemplate_8402934, 2, 24, -8, 0
- sprite gBattleAnimSpriteTemplate_8402934, 2, 24, 0, 2
- sprite gBattleAnimSpriteTemplate_8402934, 2, 24, 8, 1
- ret
+ createsprite gBattleAnimSpriteTemplate_8402934, 2, 24, -8, 0
+ createsprite gBattleAnimSpriteTemplate_8402934, 2, 24, 0, 2
+ createsprite gBattleAnimSpriteTemplate_8402934, 2, 24, 8, 1
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_8402934, 2, 24, -8, 0
+ createsprite gBattleAnimSpriteTemplate_8402934, 2, 24, 0, 2
+ createsprite gBattleAnimSpriteTemplate_8402934, 2, 24, 8, 1
+ return
Move_GROWL: @ 81CE3AF
- loadsprite 10053
- createtask sub_812B18C, 2, 0, 255
+ loadspritegfx 10053
+ createvisualtask sub_812B18C, 2, 0, 255
call _81CE35E
- pause 10
- createtask sub_80A7FA0, 2, 1, 1, 0, 9, 1
- createtask sub_80A7FA0, 2, 3, 1, 0, 9, 1
- wait
- pause 20
+ delay 10
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 1, 0, 9, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_DEF_PARTNER, 1, 0, 9, 1
+ waitforvisualfinish
+ delay 20
end
Move_SNORE: @ 81CE3EA
- loadsprite 10197
- monbg 2
+ loadspritegfx 10197
+ monbg ANIM_BANK_ATK_PARTNER
setalpha 8, 8
call _81CE403
- pause 30
+ delay 30
call _81CE403
- wait
- clearmonbg 2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
end
_81CE403:
- panse_19 SE_W173, 192
- createtask sub_80A8D34, 5, -7, -7, 7, 0, 1
- createtask sub_80A7FA0, 2, 1, 4, 0, 7, 1
- sprite gBattleAnimSpriteTemplate_83DB428, 2, 6, 1, 14, 0, 0
- sprite gBattleAnimSpriteTemplate_83D77F8, 2, 0, 0, -42, -38, 24, 0, 0
- sprite gBattleAnimSpriteTemplate_83D77F8, 2, 0, 0, 0, -42, 24, 0, 0
- sprite gBattleAnimSpriteTemplate_83D77F8, 2, 0, 0, 42, -38, 24, 0, 0
- ret
+ playsewithpan SE_W173, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -7, -7, 7, ANIM_BANK_ATTACKER, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 7, 1
+ createsprite gBattleAnimSpriteTemplate_83DB428, 2, 6, 1, 14, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D77F8, 2, 0, 0, -42, -38, 24, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D77F8, 2, 0, 0, 0, -42, 24, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D77F8, 2, 0, 0, 42, -38, 24, 0, 0
+ return
Move_LIGHT_SCREEN: @ 81CE47A
- loadsprite 10070
- loadsprite 10166
+ loadspritegfx 10070
+ loadspritegfx 10166
setalpha 0, 16
- panse_1D SE_W115, 192, 15
- sprite gBattleAnimSpriteTemplate_83DA6A8, 1, 40, 0, 10166
- pause 10
+ waitplaysewithpan SE_W115, 192, 15
+ createsprite gBattleAnimSpriteTemplate_83DA6A8, 1, 40, 0, 10166
+ delay 10
call _81CE4A1
- wait
- pause 1
+ waitforvisualfinish
+ delay 1
blendoff
end
_81CE4A1:
- sprite gBattleAnimSpriteTemplate_83DA76C, 2, 23, 0, 0, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA76C, 2, 31, -8, 0, 1
- pause 5
- sprite gBattleAnimSpriteTemplate_83DA76C, 2, 30, 20, 0, 1
- pause 7
- sprite gBattleAnimSpriteTemplate_83DA76C, 2, 10, -15, 0, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA76C, 2, 20, 10, 0, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA76C, 2, 10, 18, 0, 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83DA76C, 2, 23, 0, 0, 1
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DA76C, 2, 31, -8, 0, 1
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83DA76C, 2, 30, 20, 0, 1
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83DA76C, 2, 10, -15, 0, 1
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DA76C, 2, 20, 10, 0, 1
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83DA76C, 2, 10, 18, 0, 1
+ return
Move_MIRROR_COAT: @ 81CE506
- loadsprite 10070
- loadsprite 10168
+ loadspritegfx 10070
+ loadspritegfx 10168
setalpha 0, 16
- sprite gBattleAnimSpriteTemplate_83DA6D8, 1, 40, 0, 10168
- pause 10
- panse_19 SE_W115, 192
+ createsprite gBattleAnimSpriteTemplate_83DA6D8, 1, 40, 0, 10168
+ delay 10
+ playsewithpan SE_W115, 192
call _81CE4A1
- wait
- pause 1
+ waitforvisualfinish
+ delay 1
blendoff
end
Move_REFLECT: @ 81CE52C
- loadsprite 10071
- loadsprite 10167
+ loadspritegfx 10071
+ loadspritegfx 10167
setalpha 0, 16
- panse_1D SE_W115, 192, 15
- sprite gBattleAnimSpriteTemplate_83DA6C0, 1, 40, 0, 10167
- pause 20
- sprite gBattleAnimSpriteTemplate_83DA73C, 2, 30, 0, 0, 1
- pause 7
- sprite gBattleAnimSpriteTemplate_83DA73C, 2, 19, -12, 0, 1
- pause 7
- sprite gBattleAnimSpriteTemplate_83DA73C, 2, 10, 20, 0, 1
- wait
- pause 1
+ waitplaysewithpan SE_W115, 192, 15
+ createsprite gBattleAnimSpriteTemplate_83DA6C0, 1, 40, 0, 10167
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83DA73C, 2, 30, 0, 0, 1
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83DA73C, 2, 19, -12, 0, 1
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83DA73C, 2, 10, 20, 0, 1
+ waitforvisualfinish
+ delay 1
blendoff
end
Move_BARRIER: @ 81CE57F
- loadsprite 10169
+ loadspritegfx 10169
setalpha 0, 16
- panse_1D SE_W112, 192, 15
- sprite gBattleAnimSpriteTemplate_83DA6F0, 3, 40, 0, 10169
- wait
- pause 1
+ waitplaysewithpan SE_W112, 192, 15
+ createsprite gBattleAnimSpriteTemplate_83DA6F0, 3, 40, 0, 10169
+ waitforvisualfinish
+ delay 1
blendoff
end
Move_BUBBLE: @ 81CE59C
- loadsprite 10146
- loadsprite 10155
- monbg 1
- setalpha 12, 8
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 15, -15, 10, 128, 100
- panse_19 SE_W145, 192
- panse_1D SE_W145B, 63, 100
- pause 6
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 35, 37, 40, 128, 100
- panse_19 SE_W145, 192
- panse_1D SE_W145B, 63, 100
- pause 6
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 10, -37, 30, 128, 100
- panse_19 SE_W145, 192
- panse_1D SE_W145B, 63, 100
- pause 6
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 30, 10, 15, 128, 100
- panse_19 SE_W145, 192
- panse_1D SE_W145B, 63, 100
- pause 6
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 20, 33, 20, 128, 100
- panse_19 SE_W145, 192
- panse_1D SE_W145B, 63, 100
- pause 6
- sprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 25, -30, 10, 128, 100
- panse_19 SE_W145, 192
- panse_1D SE_W145B, 63, 100
- wait
- call Unknown_81D6069
- wait
- clearmonbg 1
+ loadspritegfx 10146
+ loadspritegfx 10155
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 15, -15, 10, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 35, 37, 40, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 10, -37, 30, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 30, 10, 15, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 20, 33, 20, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83D9178, 2, 18, 0, 25, -30, 10, 128, 100
+ playsewithpan SE_W145, 192
+ waitplaysewithpan SE_W145B, 63, 100
+ waitforvisualfinish
+ call WaterBubbleEffect2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_SMOG: @ 81CE672
- loadsprite 10172
- monbg 3
+ loadspritegfx 10172
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_29
setalpha 12, 8
- panse_1C SE_W054, 63, 17, 10
+ loopsewithpan SE_W054, 63, 17, 10
call _81CE6D7
call _81CE6D7
call _81CE6D7
@@ -5133,231 +5135,231 @@ Move_SMOG: @ 81CE672
call _81CE6D7
call _81CE6D7
call _81CE6D7
- pause 120
- panse_1C SE_W092, 63, 18, 2
- createtask sub_80E1F8C, 2, 4, 2, 2, 0, 12, 26650
- pause 10
- createtask sub_80A7FA0, 2, 1, 2, 0, 15, 1
- wait
- clearmonbg 3
+ delay 120
+ loopsewithpan SE_W092, 63, 18, 2
+ createvisualtask sub_80E1F8C, 2, 4, 2, 2, 0, 12, 26650
+ delay 10
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 15, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81CE6D7:
- sprite gBattleAnimSpriteTemplate_83D9D54, 2, 0, -24, 48, 240, 1, 0
- pause 7
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9D54, 2, 0, -24, 48, 240, 1, 0
+ delay 7
+ return
Move_FAINT_ATTACK: @ 81CE6ED
- loadsprite 10135
- monbg 0
+ loadspritegfx 10135
+ monbg ANIM_BANK_ATTACKER
fadetobg 1
waitbgfadein
- pause 0
- panse_19 SE_W185, 192
- createtask sub_80A8500, 2, 0, 18, 6, 1, 3
- createtask sub_80DFC24, 2, 1
- wait
- clearmonbg 0
+ delay 0
+ playsewithpan SE_W185, 192
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 18, 6, 1, 3
+ createvisualtask sub_80DFC24, 2, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
invisible 0
- pause 1
- createtask sub_80E4300, 2
- monbg 1
- setalpha 12, 8
- pause 1
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 1
- createtask sub_80A7FA0, 2, 1, 2, 0, 9, 1
- wait
- clearmonbg 1
- blendoff
- pause 1
- setvar 7, 4096
- pause 32
- createtask sub_80DFDC0, 2
- monbg 0
- createtask sub_80DFD24, 2, 1
- wait
- clearmonbg 0
- pause 1
+ delay 1
+ createvisualtask sub_80E4300, 2
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ delay 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 9, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
+ blendoff
+ delay 1
+ setarg 7, 4096
+ delay 32
+ createvisualtask sub_80DFDC0, 2
+ monbg ANIM_BANK_ATTACKER
+ createvisualtask sub_80DFD24, 2, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
+ delay 1
restorebg
waitbgfadein
end
Move_SAND_ATTACK: @ 81CE774
- loadsprite 10074
- monbg 2
+ loadspritegfx 10074
+ monbg ANIM_BANK_ATK_PARTNER
monbgprio_28 0
setalpha 12, 8
- panse_19 SE_W028, 192
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, -10, 0, 0, 3
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 2
+ playsewithpan SE_W028, 192
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, -10, 0, 0, 3
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 2
call _81CE7C4
call _81CE7C4
call _81CE7C4
call _81CE7C4
call _81CE7C4
call _81CE7C4
- wait
- clearmonbg 2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
end
_81CE7C4:
- sprite gBattleAnimSpriteTemplate_83DB2F8, 130, 15, 15, 20, 0, 0
- sprite gBattleAnimSpriteTemplate_83DB2F8, 130, 15, 15, 20, 10, 10
- sprite gBattleAnimSpriteTemplate_83DB2F8, 130, 15, 15, 20, -10, -10
- sprite gBattleAnimSpriteTemplate_83DB2F8, 130, 15, 15, 20, 20, 5
- sprite gBattleAnimSpriteTemplate_83DB2F8, 130, 15, 15, 20, -20, -5
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83DB2F8, 130, 15, 15, 20, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83DB2F8, 130, 15, 15, 20, 10, 10
+ createsprite gBattleAnimSpriteTemplate_83DB2F8, 130, 15, 15, 20, -10, -10
+ createsprite gBattleAnimSpriteTemplate_83DB2F8, 130, 15, 15, 20, 20, 5
+ createsprite gBattleAnimSpriteTemplate_83DB2F8, 130, 15, 15, 20, -20, -5
+ delay 2
+ return
Move_MUD_SLAP: @ 81CE81C
- loadsprite 10074
- panse_19 SE_W028, 192
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, -10, 0, 0, 3
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 2
+ loadspritegfx 10074
+ playsewithpan SE_W028, 192
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, -10, 0, 0, 3
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 2
call _81CE862
call _81CE862
call _81CE862
call _81CE862
call _81CE862
call _81CE862
- wait
+ waitforvisualfinish
end
_81CE862:
- sprite gBattleAnimSpriteTemplate_83DB31C, 130, 15, 15, 20, 0, 0
- sprite gBattleAnimSpriteTemplate_83DB31C, 130, 15, 15, 20, 10, 5
- sprite gBattleAnimSpriteTemplate_83DB31C, 130, 15, 15, 20, -10, -5
- sprite gBattleAnimSpriteTemplate_83DB31C, 130, 15, 15, 20, 20, 10
- sprite gBattleAnimSpriteTemplate_83DB31C, 130, 15, 15, 20, -20, -10
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83DB31C, 130, 15, 15, 20, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83DB31C, 130, 15, 15, 20, 10, 5
+ createsprite gBattleAnimSpriteTemplate_83DB31C, 130, 15, 15, 20, -10, -5
+ createsprite gBattleAnimSpriteTemplate_83DB31C, 130, 15, 15, 20, 20, 10
+ createsprite gBattleAnimSpriteTemplate_83DB31C, 130, 15, 15, 20, -20, -10
+ delay 2
+ return
Move_DRAGON_RAGE: @ 81CE8BA
- loadsprite 10029
- loadsprite 10035
- panse_19 SE_W082, 192
- createtask sub_80A7E7C, 5, 0, 0, 2, 40, 1
- wait
- sprite gBattleAnimSpriteTemplate_83C1FF8, 130, 0, 15, 0, 0, 4
- wait
- sprite gBattleAnimSpriteTemplate_83DB0D0, 130, 30, 15, 0, 10, 10
- wait
- panse_1C SE_W172B, 63, 11, 3
- createtask sub_80A7E7C, 5, 1, 0, 3, 25, 1
- sprite gBattleAnimSpriteTemplate_83DB078, 194, 1, 5, 0
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB078, 194, 1, -10, -15
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB078, 130, 1, 0, 25
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB078, 194, 1, 15, 5
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB078, 194, 1, -25, 0
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB078, 130, 1, 30, 30
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB078, 130, 1, -27, 25
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB078, 194, 1, 0, 8
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 194, 0, 0, 4
- wait
+ loadspritegfx 10029
+ loadspritegfx 10035
+ playsewithpan SE_W082, 192
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 40, 1
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, 130, 0, 15, 0, 0, 4
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB0D0, 130, 30, 15, 0, 10, 10
+ waitforvisualfinish
+ loopsewithpan SE_W172B, 63, 11, 3
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 3, 25, 1
+ createsprite gBattleAnimSpriteTemplate_83DB078, 194, 1, 5, 0
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB078, 194, 1, -10, -15
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB078, 130, 1, 0, 25
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB078, 194, 1, 15, 5
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB078, 194, 1, -25, 0
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB078, 130, 1, 30, 30
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB078, 130, 1, -27, 25
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB078, 194, 1, 0, 8
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 194, 0, 0, 4
+ waitforvisualfinish
end
Move_RAIN_DANCE: @ 81CE997
- loadsprite 10115
- panse_19 SE_W240, 192
- createtask sub_80E2A38, 10, 1921, 2, 0, 4, 0
- wait
- createtask CreateAnimRaindrops, 2, 0, 3, 120
- createtask CreateAnimRaindrops, 2, 0, 3, 120
- pause 120
- pause 30
- wait
- createtask sub_80E2A38, 10, 1921, 2, 4, 0, 0
- wait
+ loadspritegfx 10115
+ playsewithpan SE_W240, 192
+ createvisualtask sub_80E2A38, 10, 1921, 2, 0, 4, 0
+ waitforvisualfinish
+ createvisualtask CreateAnimRaindrops, 2, 0, 3, 120
+ createvisualtask CreateAnimRaindrops, 2, 0, 3, 120
+ delay 120
+ delay 30
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 1921, 2, 4, 0, 0
+ waitforvisualfinish
end
Move_BITE: @ 81CE9E2
- loadsprite 10139
- loadsprite 10135
- monbg 1
+ loadspritegfx 10139
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- panse_19 SE_W044, 63
- sprite gBattleAnimSpriteTemplate_83DB1D0, 2, 0, -32, 0, 0, 819, 10
- sprite gBattleAnimSpriteTemplate_83DB1D0, 2, 0, 32, 4, 0, -819, 10
- pause 10
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A7E7C, 5, 1, 0, 4, 7, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W044, 63
+ createsprite gBattleAnimSpriteTemplate_83DB1D0, 2, 0, -32, 0, 0, 819, 10
+ createsprite gBattleAnimSpriteTemplate_83DB1D0, 2, 0, 32, 4, 0, -819, 10
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 4, 7, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
- pause 1
+ delay 1
end
Move_CRUNCH: @ 81CEA40
- loadsprite 10139
- loadsprite 10135
- monbg 1
+ loadspritegfx 10139
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
fadetobg 1
waitbgfadein
setalpha 12, 8
- panse_19 SE_W044, 63
- sprite gBattleAnimSpriteTemplate_83DB1D0, 2, -32, -32, 1, 819, 819, 10
- sprite gBattleAnimSpriteTemplate_83DB1D0, 2, 32, 32, 5, -819, -819, 10
- pause 10
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -8, 0, 1, 1
- createtask sub_80A7E7C, 5, 1, 0, 7, 5, 2
- wait
- panse_19 SE_W044, 63
- sprite gBattleAnimSpriteTemplate_83DB1D0, 2, 32, -32, 7, -819, 819, 10
- sprite gBattleAnimSpriteTemplate_83DB1D0, 2, -32, 32, 3, 819, -819, 10
- pause 10
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 8, 0, 1, 1
- createtask sub_80A7E7C, 5, 1, 0, 8, 4, 2
- wait
- clearmonbg 1
- blendoff
- pause 1
+ playsewithpan SE_W044, 63
+ createsprite gBattleAnimSpriteTemplate_83DB1D0, 2, -32, -32, 1, 819, 819, 10
+ createsprite gBattleAnimSpriteTemplate_83DB1D0, 2, 32, 32, 5, -819, -819, 10
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, 2, -8, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 7, 5, 2
+ waitforvisualfinish
+ playsewithpan SE_W044, 63
+ createsprite gBattleAnimSpriteTemplate_83DB1D0, 2, 32, -32, 7, -819, 819, 10
+ createsprite gBattleAnimSpriteTemplate_83DB1D0, 2, -32, 32, 3, 819, -819, 10
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, 2, 8, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 8, 4, 2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
+ blendoff
+ delay 1
restorebg
waitbgfadein
end
Move_CLAMP: @ 81CEAF0
- loadsprite 10145
- loadsprite 10135
- monbg 1
+ loadspritegfx 10145
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- panse_19 SE_W011, 63
- sprite gBattleAnimSpriteTemplate_83DB1E8, 2, -32, 0, 2, 819, 0, 10
- sprite gBattleAnimSpriteTemplate_83DB1E8, 2, 32, 0, 6, -819, 0, 10
- pause 10
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A7E7C, 5, 1, 3, 0, 5, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W011, 63
+ createsprite gBattleAnimSpriteTemplate_83DB1E8, 2, -32, 0, 2, 819, 0, 10
+ createsprite gBattleAnimSpriteTemplate_83DB1E8, 2, 32, 0, 6, -819, 0, 10
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
- wait
+ waitforvisualfinish
end
Move_ICE_BEAM: @ 81CEB4D
- monbg 1
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- loadsprite 10141
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0
- wait
- createtask_1F sub_812B058, 183, -64, 63, 4, 4, 0, 10
- sprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, 12, 0, 12, 20
- sprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, -12, 0, -12, 20
- pause 1
+ loadspritegfx 10141
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0
+ waitforvisualfinish
+ createsoundtask sub_812B058, 183, -64, 63, 4, 4, 0, 10
+ createsprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, 12, 0, 12, 20
+ createsprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, -12, 0, -12, 20
+ delay 1
call _81CEC4E
call _81CEC4E
call _81CEC4E
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 4, -31, 0, 7, 32384
- createtask sub_80A7FA0, 2, 1, 2, 0, 25, 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 4, -31, 0, 7, 32384
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 25, 1
call _81CEC4E
call _81CEC4E
call _81CEC4E
@@ -5366,257 +5368,257 @@ Move_ICE_BEAM: @ 81CEB4D
call _81CEC4E
call _81CEC4E
call _81CEC4E
- sprite gBattleAnimSpriteTemplate_83D9C24, 2, 20, 0, 0, 0, 11
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9C24, 2, 20, 0, 0, 0, 11
- wait
- pause 20
+ createsprite gBattleAnimSpriteTemplate_83D9C24, 2, 20, 0, 0, 0, 11
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9C24, 2, 20, 0, 0, 0, 11
+ waitforvisualfinish
+ delay 20
call Unknown_81D5C36
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 4, 5, 7, 0, 32384
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 7, 0, 0
- wait
- clearmonbg 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 4, 5, 7, 0, 32384
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 7, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
_81CEC4E:
- sprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, 12, 0, 12, 20
- sprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, -12, 0, -12, 20
- sprite gBattleAnimSpriteTemplate_83D9C24, 2, 20, 0, 0, 0, 11
- pause 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, 12, 0, 12, 20
+ createsprite gBattleAnimSpriteTemplate_83D9C3C, 2, 20, -12, 0, -12, 20
+ createsprite gBattleAnimSpriteTemplate_83D9C24, 2, 20, 0, 0, 0, 11
+ delay 1
+ return
Move_WITHDRAW: @ 81CEC84
- panse_19 SE_W029, 192
- createtask sub_80CF4D8, 5
- wait
+ playsewithpan SE_W029, 192
+ createvisualtask sub_80CF4D8, 5
+ waitforvisualfinish
end
Move_AURORA_BEAM: @ 81CEC91
- loadsprite 10140
+ loadspritegfx 10140
fadetobg 20
waitbgfadein
- panse_19 SE_W062, 192
- setvar 7, 0
- createtask sub_80D3490, 10, 130
+ playsewithpan SE_W062, 192
+ setarg 7, 0
+ createvisualtask sub_80D3490, 10, 130
call _81CED18
- createtask sub_80A7FA0, 5, 1, 1, 0, 17, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 17, 1
call _81CED18
call _81CED18
call _81CED18
- setvar 7, -1
- createtask_1F sub_812B058, 183, -64, 63, 3, 6, 0, 10
- createtask sub_80A7FA0, 5, 1, 2, 0, 40, 1
+ setarg 7, -1
+ createsoundtask sub_812B058, 183, -64, 63, 3, 6, 0, 10
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 40, 1
call _81CED18
call _81CED18
call _81CED18
call _81CED18
call _81CED18
call _81CED18
- wait
+ waitforvisualfinish
restorebg
waitbgfadein
end
_81CED18:
- sprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17
- pause 1
- sprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17
- pause 1
- sprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17
- pause 1
- sprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17
- pause 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D91C4, 130, 20, 0, 0, 0, 17
+ delay 1
+ return
Move_SOLAR_BEAM: @ 81CED65
- loadsprite 10147
- ifelse _81CED73, _81CEE70
+ loadspritegfx 10147
+ choosetwoturnanim _81CED73, _81CEE70
_81CED71:
- wait
+ waitforvisualfinish
end
_81CED73:
- monbg 2
+ monbg ANIM_BANK_ATK_PARTNER
setalpha 12, 8
- createtask sub_80E1F8C, 2, 2, 1, 4, 0, 11, 12287
- panse_19 SE_W025, 192
+ createvisualtask sub_80E1F8C, 2, 2, 1, 4, 0, 11, 12287
+ playsewithpan SE_W025, 192
call _81CED9D
- wait
- clearmonbg 2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
- jump _81CED71
+ goto _81CED71
_81CED9D:
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 40, 40, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, -40, -40, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 0, 40, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 0, -40, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 40, -20, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 40, 20, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, -40, -20, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, -40, 20, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, -20, 30, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 20, -30, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, -20, -30, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 20, 30, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, -40, 0, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 40, 0, 16
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 40, 40, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, -40, -40, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 0, 40, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 0, -40, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 40, -20, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 40, 20, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, -40, -20, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, -40, 20, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, -20, 30, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 20, -30, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, -20, -30, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 20, 30, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, -40, 0, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 40, 0, 16
+ delay 2
+ return
_81CEE70:
call Unknown_81D6233
panse_1B SE_W076, 192, 63, 2, 0
- createtask sub_80CA928, 5
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 1
- pause 4
- createtask sub_80E2A38, 10, 4, 1, 0, 10, 1017
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 2
- pause 4
- createtask sub_80A7FA0, 5, 1, 2, 0, 65, 1
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 3
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 4
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 5
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 6
- pause 4
+ createvisualtask sub_80CA928, 5
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 1
+ delay 4
+ createvisualtask sub_80E2A38, 10, 4, 1, 0, 10, 1017
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 2
+ delay 4
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 65, 1
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 3
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 4
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 5
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 6
+ delay 4
call _81CEF42
call _81CEF42
- wait
- createtask sub_80E2A38, 10, 4, 1, 10, 0, 1017
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 4, 1, 10, 0, 1017
call Unknown_81D626D
- jump _81CED71
+ goto _81CED71
_81CEF42:
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 2
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 3
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 4
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 5
- pause 4
- sprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 6
- pause 4
- ret
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 2
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 3
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 4
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 5
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D6304, 131, 15, 0, 20, 6
+ delay 4
+ return
Move_BLIZZARD: @ 81CEFBA
- loadsprite 10141
- monbg 3
- createtask sub_80E3B4C, 2
- jumpvareq 7, 1, _81CF13F
+ loadspritegfx 10141
+ monbg ANIM_BANK_DEF_PARTNER
+ createvisualtask sub_80E3B4C, 2
+ jumpargeq 7, 1, _81CF13F
fadetobg 9
_81CEFD0:
waitbgfadeout
- createtask sub_80E3A58, 5, -2304, 0, 1, -1
+ createvisualtask sub_80E3A58, 5, -2304, 0, 1, -1
waitbgfadein
- wait
+ waitforvisualfinish
panse_1B SE_W059, 192, 63, 2, 0
call _81CF00A
call _81CF00A
- panse_19 SE_W059B, 63
- wait
+ playsewithpan SE_W059B, 63
+ waitforvisualfinish
call Unknown_81D5CBA
- wait
- clearmonbg 3
- pause 20
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ delay 20
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
end
_81CF00A:
- sprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -10, 0, -10, 72, 1
- sprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 0, 0, 0, 80, 0, 0, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -15, 0, -15, 72, 1
- sprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, -10, 0, -10, 80, 0, 0, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -5, 0, -5, 72, 1
- sprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 10, 0, 10, 80, 0, 0, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -10, 0, -10, 72, 1
- sprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, -20, 0, -20, 80, 0, 0, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -20, 0, -20, 72, 1
- sprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 15, 0, 15, 80, 0, 0, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -15, 0, -15, 72, 1
- sprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, -20, 0, -20, 80, 0, 0, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -25, 0, -25, 72, 1
- sprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 20, 0, 20, 80, 0, 0, 1
- pause 3
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -10, 0, -10, 72, 1
+ createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 0, 0, 0, 80, 0, 0, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -15, 0, -15, 72, 1
+ createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, -10, 0, -10, 80, 0, 0, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -5, 0, -5, 72, 1
+ createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 10, 0, 10, 80, 0, 0, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -10, 0, -10, 72, 1
+ createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, -20, 0, -20, 80, 0, 0, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -20, 0, -20, 72, 1
+ createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 15, 0, 15, 80, 0, 0, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -15, 0, -15, 72, 1
+ createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, -20, 0, -20, 80, 0, 0, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CA8, 40, 0, -25, 0, -25, 72, 1
+ createsprite gBattleAnimSpriteTemplate_83D9CC0, 40, 0, 20, 0, 20, 80, 0, 0, 1
+ delay 3
+ return
_81CF13F:
fadetobg 10
- jump _81CEFD0
+ goto _81CEFD0
Move_POWDER_SNOW: @ 81CF146
- loadsprite 10141
- monbg 3
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 1, 0, 3, 0
- wait
+ loadspritegfx 10141
+ monbg ANIM_BANK_DEF_PARTNER
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 1, 0, 3, 0
+ waitforvisualfinish
panse_1B SE_W016, 192, 63, 2, 0
call _81CF190
call _81CF190
- panse_19 SE_W016B, 63
- wait
+ playsewithpan SE_W016B, 63
+ waitforvisualfinish
waitsound
call Unknown_81D5CBA
- wait
- clearmonbg 3
- pause 20
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 1, 3, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 1, 3, 0, 0
end
_81CF190:
- sprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 0, 0, 0, 56, 4, 4, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, -10, 0, -10, 56, 4, 4, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 10, 0, 10, 56, -4, 3, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, -20, 0, -20, 56, -4, 5, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 15, 0, 15, 56, 4, 4, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, -20, 0, -20, 56, 4, 4, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 20, 0, 20, 56, 4, 4, 1
- pause 3
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 0, 0, 0, 56, 4, 4, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, -10, 0, -10, 56, 4, 4, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 10, 0, 10, 56, -4, 3, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, -20, 0, -20, 56, -4, 5, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 15, 0, 15, 56, 4, 4, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, -20, 0, -20, 56, 4, 4, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9CD8, 40, 0, 20, 0, 20, 56, 4, 4, 1
+ delay 3
+ return
Move_HYDRO_PUMP: @ 81CF240
- loadsprite 10149
- loadsprite 10148
- monbg 3
+ loadspritegfx 10149
+ loadspritegfx 10148
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- createtask sub_80A7E7C, 5, 0, 0, 2, 40, 1
- pause 6
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 40, 1
+ delay 6
panse_1B SE_W056, 192, 63, 2, 0
- createtask sub_80D3630, 5, 100
+ createvisualtask sub_80D3630, 5, 100
call _81CF2DF
call _81CF2DF
call _81CF2DF
- createtask sub_80A7E7C, 5, 1, 3, 0, 37, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 37, 1
call _81CF320
call _81CF2DF
call _81CF2DF
@@ -5630,42 +5632,42 @@ Move_HYDRO_PUMP: @ 81CF240
call _81CF2DF
call _81CF2DF
call _81CF320
- pause 1
- pause 1
+ delay 1
+ delay 1
call _81CF320
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81CF2DF:
- sprite gBattleAnimSpriteTemplate_83D91F4, 3, 10, 10, 0, 16
- sprite gBattleAnimSpriteTemplate_83D91F4, 3, 10, 10, 0, -16
- pause 1
- sprite gBattleAnimSpriteTemplate_83D91F4, 3, 10, 10, 0, 16
- sprite gBattleAnimSpriteTemplate_83D91F4, 3, 10, 10, 0, -16
- pause 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83D91F4, 3, 10, 10, 0, 16
+ createsprite gBattleAnimSpriteTemplate_83D91F4, 3, 10, 10, 0, -16
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D91F4, 3, 10, 10, 0, 16
+ createsprite gBattleAnimSpriteTemplate_83D91F4, 3, 10, 10, 0, -16
+ delay 1
+ return
_81CF320:
- sprite gBattleAnimSpriteTemplate_83DB4D8, 4, 0, 15, 1, 1
- sprite gBattleAnimSpriteTemplate_83DB4D8, 4, 0, -15, 1, 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 4, 0, 15, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 4, 0, -15, 1, 1
+ return
Move_SIGNAL_BEAM: @ 81CF33F
- loadsprite 10264
- loadsprite 10265
- loadsprite 10073
- createtask sub_80A7E7C, 5, 0, 0, 2, 25, 1
- pause 6
+ loadspritegfx 10264
+ loadspritegfx 10265
+ loadspritegfx 10073
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 25, 1
+ delay 6
panse_1B SE_W062, 192, 63, 1, 0
- createtask sub_80D3630, 5, 100
+ createvisualtask sub_80D3630, 5, 100
call _81CF406
call _81CF406
call _81CF406
call _81CF406
call _81CF406
call _81CF406
- createtask sub_80A7E7C, 5, 1, 3, 0, 25, 1
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 4, 8, 5, 31, 8, 961, 8
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 25, 1
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 4, 8, 5, 31, 8, 961, 8
call _81CF406
call _81CF406
call _81CF406
@@ -5683,273 +5685,273 @@ Move_SIGNAL_BEAM: @ 81CF33F
call _81CF406
call _81CF406
call _81CF406
- wait
+ waitforvisualfinish
end
_81CF406:
- sprite gBattleAnimSpriteTemplate_83D9224, 131, 10, 10, 0, 16
- sprite gBattleAnimSpriteTemplate_83D923C, 131, 10, 10, 0, -16
- pause 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9224, 131, 10, 10, 0, 16
+ createsprite gBattleAnimSpriteTemplate_83D923C, 131, 10, 10, 0, -16
+ delay 1
+ return
Move_ABSORB: @ 81CF427
- loadsprite 10147
- loadsprite 10031
- loadsprite 10135
- monbg 3
- monbgprio_2A 1
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 13293
- wait
- panse_19 SE_W071, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- pause 2
- createtask sub_80A7E7C, 5, 1, 0, 5, 5, 1
- wait
- pause 3
+ loadspritegfx 10147
+ loadspritegfx 10031
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ monbgprio_2A ANIM_BANK_TARGET
+ setalpha 12, 8
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 13293
+ waitforvisualfinish
+ playsewithpan SE_W071, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
+ waitforvisualfinish
+ delay 3
call _81CF496
- wait
- pause 15
+ waitforvisualfinish
+ delay 15
call Unknown_81D5EF5
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 13293
- wait
- clearmonbg 3
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 13293
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81CF496:
- panse_19 SE_W152, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- pause 4
- panse_19 SE_W152, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- pause 4
- panse_19 SE_W152, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
- pause 4
- panse_19 SE_W152, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
- pause 4
- panse_19 SE_W152, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- pause 4
- panse_19 SE_W152, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- pause 4
- panse_19 SE_W152, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
- pause 4
- panse_19 SE_W152, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -20, 35
- pause 4
- ret
+ playsewithpan SE_W152, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W152, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -20, 35
+ delay 4
+ return
Move_MEGA_DRAIN: @ 81CF53F
- loadsprite 10147
- loadsprite 10031
- loadsprite 10135
- monbg 3
- monbgprio_2A 1
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 8, 13293
- wait
- panse_19 SE_W071, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 1
- pause 2
- createtask sub_80A7E7C, 5, 1, 0, 5, 5, 1
- wait
- pause 3
+ loadspritegfx 10147
+ loadspritegfx 10031
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ monbgprio_2A ANIM_BANK_TARGET
+ setalpha 12, 8
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 8, 13293
+ waitforvisualfinish
+ playsewithpan SE_W071, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 1
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
+ waitforvisualfinish
+ delay 3
call _81CF5AE
- wait
- pause 15
+ waitforvisualfinish
+ delay 15
call Unknown_81D5EF5
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 8, 0, 13293
- wait
- clearmonbg 3
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 8, 0, 13293
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81CF5AE:
- panse_19 SE_W145C, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -20, 35
- pause 4
- panse_19 SE_W145C, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
- pause 4
- panse_19 SE_W145C, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- pause 4
- panse_19 SE_W145C, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- pause 4
- panse_19 SE_W145C, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
- pause 4
- panse_19 SE_W145C, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
- pause 4
- panse_19 SE_W145C, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- pause 4
- panse_19 SE_W145C, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -20, 35
- pause 4
- ret
+ playsewithpan SE_W145C, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -20, 35
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W145C, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -20, 35
+ delay 4
+ return
Move_GIGA_DRAIN: @ 81CF6CF
- loadsprite 10147
- loadsprite 10031
- loadsprite 10135
- monbg 3
- monbgprio_2A 1
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 12, 13293
- wait
- panse_19 SE_W071, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 0
- pause 2
- createtask sub_80A7E7C, 5, 1, 0, 5, 5, 1
- wait
- pause 3
+ loadspritegfx 10147
+ loadspritegfx 10031
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ monbgprio_2A ANIM_BANK_TARGET
+ setalpha 12, 8
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 12, 13293
+ waitforvisualfinish
+ playsewithpan SE_W071, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 0
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
+ waitforvisualfinish
+ delay 3
call _81CF73E
- wait
- pause 15
+ waitforvisualfinish
+ delay 15
call Unknown_81D5EF5
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 12, 0, 13293
- wait
- clearmonbg 3
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 12, 0, 13293
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81CF73E:
- panse_19 SE_W202, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -40, 35
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
- pause 4
- panse_19 SE_W202, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 28, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 40, 39
- pause 4
- panse_19 SE_W202, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -32, 26
- pause 4
- panse_19 SE_W202, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- pause 4
- panse_19 SE_W202, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- pause 4
- panse_19 SE_W202, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -40, 26
- pause 4
- panse_19 SE_W202, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 36, 33
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
- pause 4
- panse_19 SE_W202, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -20, 35
- pause 4
- ret
+ playsewithpan SE_W202, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -40, 35
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 28, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 40, 39
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -32, 26
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -40, 26
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 36, 33
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W202, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -20, 35
+ delay 4
+ return
Move_LEECH_LIFE: @ 81CF8D7
- loadsprite 10161
- loadsprite 10147
- pause 1
- loadsprite 10031
- loadsprite 10135
- monbg 3
- monbgprio_2A 1
- setalpha 12, 8
- pause 1
- sprite gBattleAnimSpriteTemplate_83DAB10, 2, -20, 15, 12
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- panse_19 SE_W071, 63
- pause 2
- createtask sub_80A7E7C, 5, 1, 0, 5, 5, 1
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0
- wait
+ loadspritegfx 10161
+ loadspritegfx 10147
+ delay 1
+ loadspritegfx 10031
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ monbgprio_2A ANIM_BANK_TARGET
+ setalpha 12, 8
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DAB10, 2, -20, 15, 12
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ playsewithpan SE_W071, 63
+ delay 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 7, 0
+ waitforvisualfinish
call _81CF496
- wait
- pause 15
+ waitforvisualfinish
+ delay 15
call Unknown_81D5EF5
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 7, 0, 0
- wait
- clearmonbg 3
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 7, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_SYNTHESIS: @ 81CF959
- loadsprite 10031
- loadsprite 10049
- createtask sub_80E1F8C, 2, 2, 2, 2, 0, 16, 19451
- panse_19 SE_W025, 192
+ loadspritegfx 10031
+ loadspritegfx 10049
+ createvisualtask sub_80E1F8C, 2, 2, 2, 2, 0, 16, 19451
+ playsewithpan SE_W025, 192
call Unknown_81D5ECA
- wait
+ waitforvisualfinish
call Unknown_81D5EF5
- wait
+ waitforvisualfinish
end
Move_TOXIC: @ 81CF983
- loadsprite 10151
- loadsprite 10150
+ loadspritegfx 10151
+ loadspritegfx 10150
call _81CF99D
call _81CF99D
- wait
- pause 15
- call Unknown_81D5F87
- wait
+ waitforvisualfinish
+ delay 15
+ call PoisonBubblesAnim
+ waitforvisualfinish
end
_81CF99D:
- sprite gBattleAnimSpriteTemplate_83DA244, 130, -24, 16, 1, 1
- panse_19 SE_W092, 63
- pause 15
- sprite gBattleAnimSpriteTemplate_83DA244, 130, 8, 16, 1, 1
- panse_19 SE_W092, 63
- pause 15
- sprite gBattleAnimSpriteTemplate_83DA244, 130, -8, 16, 1, 1
- panse_19 SE_W092, 63
- pause 15
- sprite gBattleAnimSpriteTemplate_83DA244, 130, 24, 16, 1, 1
- panse_19 SE_W092, 63
- pause 15
- ret
+ createsprite gBattleAnimSpriteTemplate_83DA244, 130, -24, 16, 1, 1
+ playsewithpan SE_W092, 63
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83DA244, 130, 8, 16, 1, 1
+ playsewithpan SE_W092, 63
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83DA244, 130, -8, 16, 1, 1
+ playsewithpan SE_W092, 63
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83DA244, 130, 24, 16, 1, 1
+ playsewithpan SE_W092, 63
+ delay 15
+ return
Move_SLUDGE: @ 81CF9F2
- loadsprite 10150
- panse_19 SE_W145C, 192
- sprite gBattleAnimSpriteTemplate_83DA2B8, 130, 20, 0, 40, 0
- wait
- createtask sub_80A7E7C, 5, 1, 3, 0, 5, 1
- createtask sub_80E1F8C, 2, 4, 1, 2, 0, 12, 31774
- call Unknown_81D5F87
- wait
+ loadspritegfx 10150
+ playsewithpan SE_W145C, 192
+ createsprite gBattleAnimSpriteTemplate_83DA2B8, 130, 20, 0, 40, 0
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1
+ createvisualtask sub_80E1F8C, 2, 4, 1, 2, 0, 12, 31774
+ call PoisonBubblesAnim
+ waitforvisualfinish
end
Move_SLUDGE_BOMB: @ 81CFA34
- loadsprite 10150
+ loadspritegfx 10150
call _81CFB44
call _81CFB44
call _81CFB44
@@ -5960,357 +5962,357 @@ Move_SLUDGE_BOMB: @ 81CFA34
call _81CFB44
call _81CFB44
call _81CFB44
- createtask sub_80A7FA0, 5, 1, 3, 0, 15, 1
- createtask sub_80E1F8C, 2, 4, 1, 2, 0, 12, 31774
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, 42, 27, 20
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, -27, 44, 20
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, 39, -28, 20
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, -42, -42, 20
- panse_19 SE_W091, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, 0, 40, 20
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, -8, -44, 20
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, -46, -28, 20
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, 46, 9, 20
- panse_19 SE_W091, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, 42, 0, 20
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, -43, -12, 20
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, 16, -46, 20
- sprite gBattleAnimSpriteTemplate_83DA2E8, 130, -16, 44, 20
- panse_19 SE_W091, 63
- pause 0
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 3, 0, 15, 1
+ createvisualtask sub_80E1F8C, 2, 4, 1, 2, 0, 12, 31774
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, 42, 27, 20
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, -27, 44, 20
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, 39, -28, 20
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, -42, -42, 20
+ playsewithpan SE_W091, 63
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, 0, 40, 20
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, -8, -44, 20
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, -46, -28, 20
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, 46, 9, 20
+ playsewithpan SE_W091, 63
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, 42, 0, 20
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, -43, -12, 20
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, 16, -46, 20
+ createsprite gBattleAnimSpriteTemplate_83DA2E8, 130, -16, 44, 20
+ playsewithpan SE_W091, 63
+ delay 0
waitsound
- wait
- call Unknown_81D5F87
- wait
+ waitforvisualfinish
+ call PoisonBubblesAnim
+ waitforvisualfinish
end
_81CFB44:
- panse_19 SE_W145C, 192
- sprite gBattleAnimSpriteTemplate_83DA2B8, 130, 20, 0, 40, 0
- pause 3
- ret
+ playsewithpan SE_W145C, 192
+ createsprite gBattleAnimSpriteTemplate_83DA2B8, 130, 20, 0, 40, 0
+ delay 3
+ return
Move_ACID: @ 81CFB5A
- loadsprite 10150
- monbg 3
- sprite gBattleAnimSpriteTemplate_83DA2D0, 130, 20, 0, 40, 1, 0, 0
- panse_19 SE_W145C, 192
- pause 5
- sprite gBattleAnimSpriteTemplate_83DA2D0, 130, 20, 0, 40, 1, 24, 0
- panse_19 SE_W145C, 192
- pause 5
- sprite gBattleAnimSpriteTemplate_83DA2D0, 130, 20, 0, 40, 1, -24, 0
- panse_19 SE_W145C, 192
- pause 15
- createtask sub_80A7FA0, 5, 1, 2, 0, 10, 1
- createtask sub_80A7FA0, 5, 3, 2, 0, 10, 1
- createtask sub_80E1F8C, 2, 20, 2, 2, 0, 12, 31774
- sprite gBattleAnimSpriteTemplate_83DA31C, 130, 0, -22, 0, 15, 55
- panse_19 SE_W145, 63
- pause 10
- sprite gBattleAnimSpriteTemplate_83DA31C, 130, -26, -24, 0, 15, 55
- panse_19 SE_W145, 63
- pause 10
- sprite gBattleAnimSpriteTemplate_83DA31C, 130, 15, -27, 0, 15, 50
- panse_19 SE_W145, 63
- pause 10
- sprite gBattleAnimSpriteTemplate_83DA31C, 130, -15, -17, 0, 10, 45
- panse_19 SE_W145, 63
- pause 10
- sprite gBattleAnimSpriteTemplate_83DA31C, 130, 27, -22, 0, 15, 50
- panse_19 SE_W145, 63
- wait
- clearmonbg 3
+ loadspritegfx 10150
+ monbg ANIM_BANK_DEF_PARTNER
+ createsprite gBattleAnimSpriteTemplate_83DA2D0, 130, 20, 0, 40, 1, 0, 0
+ playsewithpan SE_W145C, 192
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83DA2D0, 130, 20, 0, 40, 1, 24, 0
+ playsewithpan SE_W145C, 192
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83DA2D0, 130, 20, 0, 40, 1, -24, 0
+ playsewithpan SE_W145C, 192
+ delay 15
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 2, 0, 10, 1
+ createvisualtask AnimTask_ShakeMon2, 5, 3, 2, 0, 10, 1
+ createvisualtask sub_80E1F8C, 2, 20, 2, 2, 0, 12, 31774
+ createsprite gBattleAnimSpriteTemplate_83DA31C, 130, 0, -22, 0, 15, 55
+ playsewithpan SE_W145, 63
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DA31C, 130, -26, -24, 0, 15, 55
+ playsewithpan SE_W145, 63
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DA31C, 130, 15, -27, 0, 15, 50
+ playsewithpan SE_W145, 63
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DA31C, 130, -15, -17, 0, 10, 45
+ playsewithpan SE_W145, 63
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DA31C, 130, 27, -22, 0, 15, 50
+ playsewithpan SE_W145, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
Move_BONEMERANG: @ 81CFC54
- loadsprite 10000
- loadsprite 10135
- monbg 3
+ loadspritegfx 10000
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- panse_19 SE_W155, 192
- sprite gBattleAnimSpriteTemplate_83DB2C8, 2
- pause 20
- panse_19 SE_W030, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 1
- createtask sub_80A7E7C, 5, 1, 5, 0, 5, 1
- pause 17
- panse_19 SE_W233, 192
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, -4
- wait
- clearmonbg 3
+ playsewithpan SE_W155, 192
+ createsprite gBattleAnimSpriteTemplate_83DB2C8, 2
+ delay 20
+ playsewithpan SE_W030, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 5, 1
+ delay 17
+ playsewithpan SE_W233, 192
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, -4
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_BONE_CLUB: @ 81CFCA8
- loadsprite 10000
- loadsprite 10135
- monbg 3
+ loadspritegfx 10000
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- panse_19 SE_W155, 63
- sprite gBattleAnimSpriteTemplate_83DB2E0, 2, -42, -25, 0, 0, 15
- pause 12
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 1
- createtask sub_80A7E7C, 5, 1, 0, 5, 5, 1
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 7, 5, 1, 0, 10, 0, 0
- panse_19 SE_W233B, 63
- wait
- clearmonbg 3
+ playsewithpan SE_W155, 63
+ createsprite gBattleAnimSpriteTemplate_83DB2E0, 2, -42, -25, 0, 0, 15
+ delay 12
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 5, 1
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 7, 5, 1, 0, 10, 0, 0
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_BONE_RUSH: @ 81CFD0A
- loadsprite 10000
- loadsprite 10135
- monbg 3
+ loadspritegfx 10000
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- panse_19 SE_W155, 63
- sprite gBattleAnimSpriteTemplate_83DB2E0, 2, -42, -25, 0, 0, 15
- pause 12
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A7E7C, 5, 1, 0, 3, 5, 1
- panse_19 SE_W030, 63
- wait
- clearmonbg 3
+ playsewithpan SE_W155, 63
+ createsprite gBattleAnimSpriteTemplate_83DB2E0, 2, -42, -25, 0, 0, 15
+ delay 12
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 3, 5, 1
+ playsewithpan SE_W030, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_SPIKES: @ 81CFD55
- loadsprite 10152
- monbg 3
- panse_19 SE_W026, 192
- panse_1D SE_W030, 63, 28
- sprite gBattleAnimSpriteTemplate_840227C, 130, 20, 0, 0, 24, 30
- pause 10
- panse_19 SE_W026, 192
- panse_1D SE_W030, 63, 28
- sprite gBattleAnimSpriteTemplate_840227C, 130, 20, 0, -24, 24, 30
- pause 10
- panse_1D SE_W030, 63, 28
- sprite gBattleAnimSpriteTemplate_840227C, 130, 20, 0, 24, 24, 30
- wait
- clearmonbg 3
+ loadspritegfx 10152
+ monbg ANIM_BANK_DEF_PARTNER
+ playsewithpan SE_W026, 192
+ waitplaysewithpan SE_W030, 63, 28
+ createsprite gBattleAnimSpriteTemplate_840227C, 130, 20, 0, 0, 24, 30
+ delay 10
+ playsewithpan SE_W026, 192
+ waitplaysewithpan SE_W030, 63, 28
+ createsprite gBattleAnimSpriteTemplate_840227C, 130, 20, 0, -24, 24, 30
+ delay 10
+ waitplaysewithpan SE_W030, 63, 28
+ createsprite gBattleAnimSpriteTemplate_840227C, 130, 20, 0, 24, 24, 30
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
Move_MEGAHORN: @ 81CFDAC
- loadsprite 10153
- loadsprite 10135
- monbg 3
- panse_19 SE_W082, 192
- jumpunkcond _81CFE83
+ loadspritegfx 10153
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ playsewithpan SE_W082, 192
+ jumpifcontest _81CFE83
fadetobg 7
waitbgfadeout
- createtask sub_80E3A58, 5, -2304, 768, 1, -1
+ createvisualtask sub_80E3A58, 5, -2304, 768, 1, -1
_81CFDCF:
waitbgfadein
setalpha 12, 8
- createtask sub_80A7E7C, 5, 0, 2, 0, 15, 1
- wait
- pause 10
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 6
- pause 3
- sprite gBattleAnimSpriteTemplate_83DAABC, 3, -42, 25, 0, 0, 6
- pause 4
- panse_19 SE_W011, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 0
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -16, 4, 1, 4
- wait
- createtask sub_80A8154, 2, 1, -4, 1, 12, 1
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 7, 5, 1, 32767, 10, 0, 0
- pause 10
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 11
- pause 3
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 7
- wait
- wait
- clearmonbg 3
+ createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1
+ waitforvisualfinish
+ delay 10
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 6
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83DAABC, 3, -42, 25, 0, 0, 6
+ delay 4
+ playsewithpan SE_W011, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 0
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -16, 4, 1, 4
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, -4, 1, 12, 1
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 7, 5, 1, 32767, 10, 0, 0
+ delay 10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 11
+ delay 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 7
+ waitforvisualfinish
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
end
_81CFE83:
fadetobg 8
waitbgfadeout
- createtask sub_80E3A58, 5, 2304, 768, 0, -1
- jump _81CFDCF
+ createvisualtask sub_80E3A58, 5, 2304, 768, 0, -1
+ goto _81CFDCF
Move_GUST: @ 81CFE9A
- loadsprite 10009
- loadsprite 10135
- monbg 3
+ loadspritegfx 10009
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- panse_19 SE_W016, 63
- sprite gBattleAnimSpriteTemplate_83DA380, 2, 0, -16
- createtask sub_80DA09C, 5, 1, 70
- wait
- createtask sub_80A7FA0, 5, 1, 1, 0, 7, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- panse_19 SE_W016B, 63
- wait
- clearmonbg 3
+ playsewithpan SE_W016, 63
+ createsprite gBattleAnimSpriteTemplate_83DA380, 2, 0, -16
+ createvisualtask sub_80DA09C, 5, 1, 70
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 7, 1
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ playsewithpan SE_W016B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_WING_ATTACK: @ 81CFEEB
- loadsprite 10009
- loadsprite 10135
- monbg 3
+ loadspritegfx 10009
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- panse_1C SE_W017, 192, 20, 2
- createtask sub_80A8408, 2, 0, 12, 4, 1, 4
- createtask sub_80DA09C, 5, 1, 70
- sprite gBattleAnimSpriteTemplate_83DA3B4, 2, -25, 0, 0, 0, 20
- sprite gBattleAnimSpriteTemplate_83DA3B4, 2, 25, 0, 0, 0, 20
- pause 24
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 9
- pause 17
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 16, 0, 1, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -16, 0, 1, 1
- panse_1C SE_W003, 63, 5, 2
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 11
- wait
- clearmonbg 3
+ loopsewithpan SE_W017, 192, 20, 2
+ createvisualtask AnimTask_TranslateMonElliptical, 2, ANIM_BANK_ATTACKER, 12, 4, 1, 4
+ createvisualtask sub_80DA09C, 5, 1, 70
+ createsprite gBattleAnimSpriteTemplate_83DA3B4, 2, -25, 0, 0, 0, 20
+ createsprite gBattleAnimSpriteTemplate_83DA3B4, 2, 25, 0, 0, 0, 20
+ delay 24
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 9
+ delay 17
+ createsprite gBasicHitSplatSpriteTemplate, 2, 16, 0, 1, 1
+ createsprite gBasicHitSplatSpriteTemplate, 2, -16, 0, 1, 1
+ loopsewithpan SE_W003, 63, 5, 2
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 11
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_PECK: @ 81CFF88
- loadsprite 10135
- panse_19 SE_W030, 63
- createtask sub_80A8EFC, 2, 3, -768, 1, 2
- sprite gBattleAnimSpriteTemplate_83DB538, 131, -12, 0, 1, 3
- wait
+ loadspritegfx 10135
+ playsewithpan SE_W030, 63
+ createvisualtask sub_80A8EFC, 2, 3, -768, 1, 2
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, -12, 0, 1, 3
+ waitforvisualfinish
end
Move_AEROBLAST: @ 81CFFAF
- loadsprite 10154
- loadsprite 10135
- monbg 3
+ loadspritegfx 10154
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
call Unknown_81D61FB
monbgprio_28 1
setalpha 12, 8
call _81D000B
- createtask sub_80A7E7C, 5, 1, 5, 0, 50, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 50, 1
call _81D000B
call _81D000B
call _81D000B
call _81D000B
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 0
- panse_19 SE_W013, 63
- wait
- clearmonbg 3
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 0
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
- pause 0
+ delay 0
call Unknown_81D622B
end
_81D000B:
- panse_19 SE_W026, 192
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, -12, 0, -12, 15, 0, 0
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 26, 8, 12, 8, 15, 0, 0
- pause 3
- panse_19 SE_W026, 192
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, -12, 0, -12, 15, 1, 0
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 26, 8, 12, 8, 15, 1, 0
- pause 3
- panse_19 SE_W026, 192
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, -12, 0, -12, 15, 2, 0
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 26, 8, 12, 8, 15, 2, 0
- pause 3
- panse_19 SE_W026, 192
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, -12, 0, -12, 15, 3, 0
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 26, 8, 12, 8, 15, 3, 0
- pause 3
- ret
+ playsewithpan SE_W026, 192
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, -12, 0, -12, 15, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 26, 8, 12, 8, 15, 0, 0
+ delay 3
+ playsewithpan SE_W026, 192
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, -12, 0, -12, 15, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 26, 8, 12, 8, 15, 1, 0
+ delay 3
+ playsewithpan SE_W026, 192
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, -12, 0, -12, 15, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 26, 8, 12, 8, 15, 2, 0
+ delay 3
+ playsewithpan SE_W026, 192
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, -12, 0, -12, 15, 3, 0
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 26, 8, 12, 8, 15, 3, 0
+ delay 3
+ return
Move_WATER_GUN: @ 81D00CC
- loadsprite 10155
- loadsprite 10148
- monbg 3
+ loadspritegfx 10155
+ loadspritegfx 10148
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83D9318, 2, 20, 0, 0, 0, 40, -25
- panse_19 SE_W145, 192
- wait
- createtask sub_80A7FA0, 5, 1, 1, 0, 8, 1
- sprite gBattleAnimSpriteTemplate_83DB4D8, 4, 0, 0, 1, 2
- sprite gBattleAnimSpriteTemplate_83D9330, 2, 0, -15, 0, 15, 55
- panse_19 SE_W152, 63
- pause 10
- sprite gBattleAnimSpriteTemplate_83D9330, 2, 15, -20, 0, 15, 50
- panse_19 SE_W152, 63
- pause 10
- sprite gBattleAnimSpriteTemplate_83D9330, 2, -15, -10, 0, 10, 45
- panse_19 SE_W152, 63
- wait
- clearmonbg 3
+ createsprite gBattleAnimSpriteTemplate_83D9318, 2, 20, 0, 0, 0, 40, -25
+ playsewithpan SE_W145, 192
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 1, 0, 8, 1
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 4, 0, 0, 1, 2
+ createsprite gBattleAnimSpriteTemplate_83D9330, 2, 0, -15, 0, 15, 55
+ playsewithpan SE_W152, 63
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D9330, 2, 15, -20, 0, 15, 50
+ playsewithpan SE_W152, 63
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D9330, 2, -15, -10, 0, 10, 45
+ playsewithpan SE_W152, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_CRABHAMMER: @ 81D0159
- loadsprite 10141
- loadsprite 10148
- monbg 3
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB4D8, 4, 0, 0, 1, 0
- panse_19 SE_W233B, 63
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 32429, 10, 0, 0
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -24, 0, 0, 4
- wait
- pause 8
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 4
- wait
- panse_1C SE_W152, 63, 20, 3
- createtask sub_80A7E7C, 5, 1, 0, 4, 8, 1
- sprite gBattleAnimSpriteTemplate_83D9348, 2, 10, 10, 20, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9348, 2, 20, -20, 20, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9348, 2, -15, 15, 20, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9348, 2, 0, 0, 20, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9348, 2, -10, -20, 20, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9348, 2, 16, -8, 20, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9348, 2, 5, 8, 20, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9348, 2, -16, 0, 20, 1
- wait
- clearmonbg 3
+ loadspritegfx 10141
+ loadspritegfx 10148
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 4, 0, 0, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 32429, 10, 0, 0
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -24, 0, 0, 4
+ waitforvisualfinish
+ delay 8
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 4
+ waitforvisualfinish
+ loopsewithpan SE_W152, 63, 20, 3
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 4, 8, 1
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, 10, 10, 20, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, 20, -20, 20, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, -15, 15, 20, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, 0, 0, 20, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, -10, -20, 20, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, 16, -8, 20, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, 5, 8, 20, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9348, 2, -16, 0, 20, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_SURF: @ 81D0253
- createtask sub_80D38BC, 2, 0
- pause 24
+ createvisualtask sub_80D38BC, 2, 0
+ delay 24
panse_1B SE_W057, 192, 63, 2, 0
- wait
+ waitforvisualfinish
end
Move_FLAMETHROWER: @ 81D0267
- loadsprite 10029
- monbg 3
+ loadspritegfx 10029
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- createtask sub_80A7E7C, 5, 0, 0, 2, 46, 1
- pause 6
- createtask sub_80D3630, 5, 100
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 46, 1
+ delay 6
+ createvisualtask sub_80D3630, 5, 100
panse_1B SE_W053, 192, 63, 2, 0
call _81D02E1
call _81D02E1
call _81D02E1
- createtask sub_80A7E7C, 5, 1, 3, 0, 43, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 43, 1
call _81D02E1
call _81D02E1
call _81D02E1
@@ -6319,587 +6321,587 @@ Move_FLAMETHROWER: @ 81D0267
call _81D02E1
call _81D02E1
call _81D02E1
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81D02E1:
- sprite gBattleAnimSpriteTemplate_83D9268, 3, 10, 10, 0, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9268, 3, 10, 10, 0, 16
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9268, 3, 10, 10, 0, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9268, 3, 10, 10, 0, 16
+ delay 2
+ return
Move_SANDSTORM: @ 81D0304
- loadsprite 10261
- panse_19 SE_W201, 0
- createtask do_boulder_dust, 5, 0
- pause 16
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 10, 2304, 96, 0
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 90, 2048, 96, 0
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 50, 2560, 96, 0
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 20, 2304, 96, 0
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 70, 1984, 96, 0
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 0, 2816, 96, 0
- pause 10
- sprite gBattleAnimSpriteTemplate_83DACE8, 40, 60, 2560, 96, 0
+ loadspritegfx 10261
+ playsewithpan SE_W201, 0
+ createvisualtask do_boulder_dust, 5, 0
+ delay 16
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 10, 2304, 96, 0
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 90, 2048, 96, 0
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 50, 2560, 96, 0
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 20, 2304, 96, 0
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 70, 1984, 96, 0
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 0, 2816, 96, 0
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DACE8, 40, 60, 2560, 96, 0
end
Move_WHIRLPOOL: @ 81D038C
- loadsprite 10149
- monbg 3
+ loadspritegfx 10149
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- pause 0
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 23968
- panse_19 SE_W250, 63
- createtask sub_80A7E7C, 5, 1, 0, 2, 50, 1
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 23968
+ playsewithpan SE_W250, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 50, 1
call _81D03E4
call _81D03E4
call _81D03E4
- pause 12
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 23968
- wait
- clearmonbg 3
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 23968
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
_81D03E4:
- sprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 28, 384, 50, 8, 50, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 32, 240, 40, 11, -46, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 33, 416, 40, 4, 42, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 31, 288, 45, 6, -42, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 28, 448, 45, 11, 46, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 33, 464, 50, 10, -50, 1
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 28, 384, 50, 8, 50, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 32, 240, 40, 11, -46, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 33, 416, 40, 4, 42, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 31, 288, 45, 6, -42, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 28, 448, 45, 11, 46, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACB8, 130, 0, 33, 464, 50, 10, -50, 1
+ delay 2
+ return
Move_FLY: @ 81D046F
- loadsprite 10156
- loadsprite 10135
- ifelse _81D0480, _81D0498
+ loadspritegfx 10156
+ loadspritegfx 10135
+ choosetwoturnanim _81D0480, _81D0498
_81D047E:
- wait
+ waitforvisualfinish
end
_81D0480:
- panse_19 SE_W019, 192
- sprite gBattleAnimSpriteTemplate_83DA450, 2, 0, 0, 13, 336
- jump _81D047E
+ playsewithpan SE_W019, 192
+ createsprite gBattleAnimSpriteTemplate_83DA450, 2, 0, 0, 13, 336
+ goto _81D047E
_81D0498:
- monbg 3
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- panse_19 SE_W104, 192
- sprite gBattleAnimSpriteTemplate_83DA468, 2, 20
- pause 20
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 0
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- panse_19 SE_W013, 63
- wait
- clearmonbg 3
+ playsewithpan SE_W104, 192
+ createsprite gBattleAnimSpriteTemplate_83DA468, 2, 20
+ delay 20
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
- jump _81D047E
+ goto _81D047E
Move_BOUNCE: @ 81D04D9
- loadsprite 10156
- loadsprite 10135
- ifelse _81D04E9, _81D04FD
+ loadspritegfx 10156
+ loadspritegfx 10135
+ choosetwoturnanim _81D04E9, _81D04FD
_81D04E8:
end
_81D04E9:
- panse_19 SE_W100, 192
- sprite gBattleAnimSpriteTemplate_83DA568, 2, 0, 0
- jump _81D04E8
+ playsewithpan SE_W100, 192
+ createsprite gBattleAnimSpriteTemplate_83DA568, 2, 0, 0
+ goto _81D04E8
_81D04FD:
- monbg 3
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83DA594, 131
- pause 7
- panse_19 SE_W025B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 0, 0, 1, 0
- createtask sub_80A7E7C, 5, 1, 0, 5, 11, 1
- wait
- clearmonbg 3
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83DA594, 131
+ delay 7
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 5, 11, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
- jump _81D04E8
+ goto _81D04E8
Move_KARATE_CHOP: @ 81D053C
- loadsprite 10143
- loadsprite 10135
- monbg 3
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- panse_19 SE_W104, 63
- sprite gBattleAnimSpriteTemplate_83D9F78, 2, -16, 0, 0, 0, 10, 1, 3, 0
- wait
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 2
- createtask sub_80A7E7C, 5, 1, 4, 0, 6, 1
- wait
- clearmonbg 3
+ playsewithpan SE_W104, 63
+ createsprite gBattleAnimSpriteTemplate_83D9F78, 2, -16, 0, 0, 0, 10, 1, 3, 0
+ waitforvisualfinish
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_CROSS_CHOP: @ 81D058E
- loadsprite 10143
- loadsprite 10285
- monbg 3
+ loadspritegfx 10143
+ loadspritegfx 10285
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- panse_19 SE_W025, 63
- sprite gBattleAnimSpriteTemplate_83D9FD8, 2, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9FD8, 2, 0, 0, 1
- pause 40
- panse_19 SE_W013, 63
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 32767, 10, 0, 10
- sprite gBattleAnimSpriteTemplate_83DB520, 3, 0, 0, 1, 20
- createtask sub_80A7E7C, 5, 1, 7, 0, 9, 1
- wait
- clearmonbg 3
+ playsewithpan SE_W025, 63
+ createsprite gBattleAnimSpriteTemplate_83D9FD8, 2, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9FD8, 2, 0, 0, 1
+ delay 40
+ playsewithpan SE_W013, 63
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 32767, 10, 0, 10
+ createsprite gBattleAnimSpriteTemplate_83DB520, 3, 0, 0, 1, 20
+ createvisualtask AnimTask_ShakeMon, 5, 1, 7, 0, 9, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_JUMP_KICK: @ 81D05F7
- loadsprite 10143
- loadsprite 10135
- monbg 3
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4
- pause 3
- sprite gBattleAnimSpriteTemplate_83D9F90, 2, -16, 8, 0, 0, 10, 1, 1, 1
- panse_19 SE_W026, 63
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 1, 0, 0, 1, 1
- createtask sub_80A7E7C, 5, 1, 5, 0, 7, 1
- panse_19 SE_W004, 63
- wait
- clearmonbg 3
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D9F90, 2, -16, 8, 0, 0, 10, 1, 1, 1
+ playsewithpan SE_W026, 63
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 1, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 7, 1
+ playsewithpan SE_W004, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_HI_JUMP_KICK: @ 81D0654
- loadsprite 10143
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, -24, 0, 0, 8
- wait
- pause 10
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 3
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9F90, 2, -16, 8, 0, 0, 10, 1, 1, 1
- panse_19 SE_W026, 63
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 1
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -28, 0, 0, 3
- pause 3
- createtask sub_80A8154, 2, 1, 3, 0, 11, 1
- wait
- pause 5
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 6
- wait
- clearmonbg 3
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, -24, 0, 0, 8
+ waitforvisualfinish
+ delay 10
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 3
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D9F90, 2, -16, 8, 0, 0, 10, 1, 1, 1
+ playsewithpan SE_W026, 63
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 1
+ playsewithpan SE_W233B, 63
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -28, 0, 0, 3
+ delay 3
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 3, 0, 11, 1
+ waitforvisualfinish
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 6
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_DOUBLE_KICK: @ 81D06EA
- loadsprite 10143
- loadsprite 10135
- monbg 3
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83D9FC0, 3, 1, 20, 1
- createtask sub_80A7E7C, 5, 1, 4, 0, 6, 1
- panse_19 SE_W233B, 63
- wait
- wait
- clearmonbg 3
+ createsprite gBattleAnimSpriteTemplate_83D9FC0, 3, 1, 20, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_TRIPLE_KICK: @ 81D071D
- loadsprite 10143
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- panse_19 SE_W233B, 63
- jumpif 0, _81D0742
- jumpif 1, _81D0778
- jump _81D07AE
+ loadspritegfx 10143
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W233B, 63
+ jumpifmoveturn 0, _81D0742
+ jumpifmoveturn 1, _81D0778
+ goto _81D07AE
_81D073D:
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81D0742:
- sprite gBattleAnimSpriteTemplate_83D9FA8, 132, -16, -8, 20, 1, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, -16, -16, 1, 2
- createtask sub_80A7E7C, 5, 1, 4, 0, 6, 1
- jump _81D073D
+ createsprite gFistFootSpriteTemplate, 132, -16, -8, 20, 1, 1
+ createsprite gBasicHitSplatSpriteTemplate, 131, -16, -16, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1
+ goto _81D073D
_81D0778:
- sprite gBattleAnimSpriteTemplate_83D9FA8, 132, 8, 8, 20, 1, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 8, 0, 1, 2
- createtask sub_80A7E7C, 5, 1, 4, 0, 6, 1
- jump _81D073D
+ createsprite gFistFootSpriteTemplate, 132, 8, 8, 20, 1, 1
+ createsprite gBasicHitSplatSpriteTemplate, 131, 8, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1
+ goto _81D073D
_81D07AE:
- sprite gBattleAnimSpriteTemplate_83D9FA8, 132, 0, 0, 20, 1, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, -8, 1, 1
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- jump _81D073D
+ createsprite gFistFootSpriteTemplate, 132, 0, 0, 20, 1, 1
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, -8, 1, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ goto _81D073D
Move_DYNAMIC_PUNCH: @ 81D07E4
- loadsprite 10143
- loadsprite 10135
- loadsprite 10198
- loadsprite 10007
- pause 1
- monbg 3
- setalpha 12, 8
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83D9FA8, 131, 0, 0, 20, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 0, 0, 1, 0
- createtask sub_80A7E7C, 5, 1, 5, 0, 7, 1
- pause 1
+ loadspritegfx 10143
+ loadspritegfx 10135
+ loadspritegfx 10198
+ loadspritegfx 10007
+ delay 1
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W233B, 63
+ createsprite gFistFootSpriteTemplate, 131, 0, 0, 20, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 5, 0, 7, 1
+ delay 1
waitsound
- panse_19 SE_W120, 63
- createtask sub_80A7FA0, 5, 1, 5, 0, 28, 1
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 24, -24, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, -16, 16, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, -24, -12, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 1, 1
- wait
- clearmonbg 3
+ playsewithpan SE_W120, 63
+ createvisualtask AnimTask_ShakeMon2, 5, 1, 5, 0, 28, 1
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 24, -24, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, -16, 16, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, -24, -12, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 1, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_COUNTER: @ 81D08AC
- loadsprite 10135
- loadsprite 10143
- monbg 3
- setalpha 12, 8
- createtask sub_80A8500, 2, 0, 18, 6, 1, 4
- panse_19 SE_W233, 192
- wait
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 0, 0, 4
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -15, 18, 1, 0
- panse_19 SE_W233B, 63
- pause 1
- createtask sub_80A7E7C, 2, 1, 5, 0, 25, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 3, -15, 18, 8, 1, 0
- pause 3
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, -4, 1, 0
- panse_19 SE_W233B, 63
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 3, 0, -4, 8, 1, 0
- pause 3
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 15, 9, 1, 0
- panse_19 SE_W233B, 63
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 3, 15, 9, 8, 1, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5
- wait
- clearmonbg 3
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 18, 6, 1, 4
+ playsewithpan SE_W233, 192
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4
+ delay 4
+ createsprite gBasicHitSplatSpriteTemplate, 2, -15, 18, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 1
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 25, 1
+ createsprite gFistFootSpriteTemplate, 3, -15, 18, 8, 1, 0
+ delay 3
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, -4, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 1
+ createsprite gFistFootSpriteTemplate, 3, 0, -4, 8, 1, 0
+ delay 3
+ createsprite gBasicHitSplatSpriteTemplate, 2, 15, 9, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 1
+ createsprite gFistFootSpriteTemplate, 3, 15, 9, 8, 1, 0
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_VITAL_THROW: @ 81D097B
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- panse_19 SE_W233, 192
- createtask sub_80A8500, 2, 0, 12, 4, 1, 2
- wait
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 20, 0, 0, 4
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 1
- panse_19 SE_W233B, 63
- pause 1
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -24, 0, 0, 4
- wait
- pause 3
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 7
- pause 11
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 10
- wait
- clearmonbg 3
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W233, 192
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 12, 4, 1, 2
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 20, 0, 0, 4
+ delay 2
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
+ playsewithpan SE_W233B, 63
+ delay 1
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -24, 0, 0, 4
+ waitforvisualfinish
+ delay 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 7
+ delay 11
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 10
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_ROCK_SMASH: @ 81D09F6
- loadsprite 10058
- loadsprite 10135
- loadsprite 10143
- monbg 3
- setalpha 12, 8
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 1
- sprite gBattleAnimSpriteTemplate_83D9FA8, 2, 0, 0, 8, 1, 0
- panse_19 SE_W233B, 63
- createtask sub_80A7E7C, 2, 1, 3, 0, 5, 1
- wait
- panse_19 SE_W088, 63
- sprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, 0, 20, 24, 14, 2
- sprite gBattleAnimSpriteTemplate_83DAC64, 2, 5, 0, -20, 24, 14, 1
- sprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, 5, 20, -24, 14, 2
- sprite gBattleAnimSpriteTemplate_83DAC64, 2, -5, 0, -20, -24, 14, 2
- sprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, -5, 30, 18, 8, 2
- sprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, 0, 30, -18, 8, 2
- sprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, 0, -30, 18, 8, 2
- sprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, 0, -30, -18, 8, 2
- createtask sub_80A7E7C, 2, 1, 0, 3, 7, 1
- wait
- clearmonbg 3
+ loadspritegfx 10058
+ loadspritegfx 10135
+ loadspritegfx 10143
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ delay 1
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
+ createsprite gFistFootSpriteTemplate, 2, 0, 0, 8, 1, 0
+ playsewithpan SE_W233B, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 5, 1
+ waitforvisualfinish
+ playsewithpan SE_W088, 63
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, 0, 20, 24, 14, 2
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 2, 5, 0, -20, 24, 14, 1
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, 5, 20, -24, 14, 2
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 2, -5, 0, -20, -24, 14, 2
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, -5, 30, 18, 8, 2
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, 0, 30, -18, 8, 2
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, 0, -30, 18, 8, 2
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 2, 0, 0, -30, -18, 8, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 7, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_SUBMISSION: @ 81D0AEE
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- panse_19 SE_W104, 192
- panse_1D SE_W004, 63, 10
- panse_1D SE_W104, 192, 20
- panse_1D SE_W004, 63, 30
- panse_1D SE_W104, 192, 40
- panse_1D SE_W004, 63, 50
- panse_1D SE_W104, 192, 60
- panse_1D SE_W004, 63, 70
- panse_1D SE_W104, 192, 80
- panse_1D SE_W004, 63, 90
- createtask sub_80A8408, 2, 0, -18, 6, 6, 4
- createtask sub_80A8408, 2, 1, 18, 6, 6, 4
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W104, 192
+ waitplaysewithpan SE_W004, 63, 10
+ waitplaysewithpan SE_W104, 192, 20
+ waitplaysewithpan SE_W004, 63, 30
+ waitplaysewithpan SE_W104, 192, 40
+ waitplaysewithpan SE_W004, 63, 50
+ waitplaysewithpan SE_W104, 192, 60
+ waitplaysewithpan SE_W004, 63, 70
+ waitplaysewithpan SE_W104, 192, 80
+ waitplaysewithpan SE_W004, 63, 90
+ createvisualtask AnimTask_TranslateMonElliptical, 2, ANIM_BANK_ATTACKER, -18, 6, 6, 4
+ createvisualtask AnimTask_TranslateMonElliptical, 2, ANIM_BANK_TARGET, 18, 6, 6, 4
call _81D0B5D
call _81D0B5D
call _81D0B5D
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81D0B5D:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, -12, 1, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, -12, 8, 1, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 12, 0, 1, 1
- pause 8
- ret
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, -12, 1, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 3, -12, 8, 1, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 3, 12, 0, 1, 1
+ delay 8
+ return
Move_SUNNY_DAY: @ 81D0B91
- loadsprite 10157
- monbg 2
+ loadspritegfx 10157
+ monbg ANIM_BANK_ATK_PARTNER
setalpha 13, 3
- createtask sub_80E2A38, 10, 1921, 1, 0, 6, 32767
- wait
+ createvisualtask sub_80E2A38, 10, 1921, 1, 0, 6, 32767
+ waitforvisualfinish
panse_26 SE_W080, 192, 63, 1, 0
call _81D0BDD
call _81D0BDD
call _81D0BDD
call _81D0BDD
- wait
- createtask sub_80E2A38, 10, 1921, 1, 6, 0, 32767
- wait
- clearmonbg 2
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 1921, 1, 6, 0, 32767
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
end
_81D0BDD:
- sprite gBattleAnimSpriteTemplate_83D95B0, 40
- pause 6
- ret
+ createsprite gBattleAnimSpriteTemplate_83D95B0, 40
+ delay 6
+ return
Move_COTTON_SPORE: @ 81D0BE7
- loadsprite 10158
- monbg 3
+ loadspritegfx 10158
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
- panse_1C SE_W077, 63, 18, 10
+ loopsewithpan SE_W077, 63, 18, 10
call _81D0C07
call _81D0C07
call _81D0C07
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
_81D0C07:
- sprite gBattleAnimSpriteTemplate_83D63F8, 2, 0, -20, 85, 80, 0
- pause 12
- sprite gBattleAnimSpriteTemplate_83D63F8, 2, 0, -10, 170, 80, 0
- pause 12
- sprite gBattleAnimSpriteTemplate_83D63F8, 2, 0, -15, 0, 80, 0
- pause 12
- ret
+ createsprite gBattleAnimSpriteTemplate_83D63F8, 2, 0, -20, 85, 80, 0
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83D63F8, 2, 0, -10, 170, 80, 0
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83D63F8, 2, 0, -15, 0, 80, 0
+ delay 12
+ return
Move_SPORE: @ 81D0C41
- loadsprite 10158
- monbg 3
+ loadspritegfx 10158
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- createtask sub_80CACEC, 2
- panse_1C SE_W077, 63, 16, 11
+ createvisualtask sub_80CACEC, 2
+ loopsewithpan SE_W077, 63, 16, 11
call _81D0C6C
call _81D0C6C
call _81D0C6C
- wait
- pause 1
- clearmonbg 3
+ waitforvisualfinish
+ delay 1
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81D0C6C:
- sprite gBattleAnimSpriteTemplate_83D63F8, 130, 0, -20, 85, 80, 1
- pause 12
- sprite gBattleAnimSpriteTemplate_83D63F8, 130, 0, -10, 170, 80, 1
- pause 12
- sprite gBattleAnimSpriteTemplate_83D63F8, 130, 0, -15, 0, 80, 1
- pause 12
- ret
+ createsprite gBattleAnimSpriteTemplate_83D63F8, 130, 0, -20, 85, 80, 1
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83D63F8, 130, 0, -10, 170, 80, 1
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83D63F8, 130, 0, -15, 0, 80, 1
+ delay 12
+ return
Move_PETAL_DANCE: @ 81D0CA6
- loadsprite 10159
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- panse_19 SE_W080, 192
- createtask sub_80A8500, 2, 0, 12, 6, 6, 3
- sprite gBattleAnimSpriteTemplate_83D6428, 2, 0, -24, 8, 140
- sprite gBattleAnimSpriteTemplate_83D6440, 2, 16, -24, 8, 100
- sprite gBattleAnimSpriteTemplate_83D6440, 2, -16, -24, 8, 100
- pause 15
- sprite gBattleAnimSpriteTemplate_83D6428, 2, 0, -24, 8, 140
- sprite gBattleAnimSpriteTemplate_83D6440, 2, 32, -24, 8, 100
- sprite gBattleAnimSpriteTemplate_83D6440, 2, -32, -24, 8, 100
- pause 15
- sprite gBattleAnimSpriteTemplate_83D6428, 2, 0, -24, 8, 140
- sprite gBattleAnimSpriteTemplate_83D6440, 2, 24, -24, 8, 100
- sprite gBattleAnimSpriteTemplate_83D6440, 2, -24, -24, 8, 100
- pause 30
- sprite gBattleAnimSpriteTemplate_83D6440, 2, 16, -24, 0, 100
- sprite gBattleAnimSpriteTemplate_83D6440, 2, -16, -24, 0, 100
- pause 30
- sprite gBattleAnimSpriteTemplate_83D6440, 2, 20, -16, 14, 80
- sprite gBattleAnimSpriteTemplate_83D6440, 2, -20, -14, 16, 80
- wait
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 5
- pause 3
- panse_19 SE_W025B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 0
- createtask sub_80A7E7C, 2, 1, 6, 0, 8, 1
- wait
- pause 8
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 7
- wait
- clearmonbg 3
+ loadspritegfx 10159
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W080, 192
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 12, 6, 6, 3
+ createsprite gBattleAnimSpriteTemplate_83D6428, 2, 0, -24, 8, 140
+ createsprite gBattleAnimSpriteTemplate_83D6440, 2, 16, -24, 8, 100
+ createsprite gBattleAnimSpriteTemplate_83D6440, 2, -16, -24, 8, 100
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83D6428, 2, 0, -24, 8, 140
+ createsprite gBattleAnimSpriteTemplate_83D6440, 2, 32, -24, 8, 100
+ createsprite gBattleAnimSpriteTemplate_83D6440, 2, -32, -24, 8, 100
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83D6428, 2, 0, -24, 8, 140
+ createsprite gBattleAnimSpriteTemplate_83D6440, 2, 24, -24, 8, 100
+ createsprite gBattleAnimSpriteTemplate_83D6440, 2, -24, -24, 8, 100
+ delay 30
+ createsprite gBattleAnimSpriteTemplate_83D6440, 2, 16, -24, 0, 100
+ createsprite gBattleAnimSpriteTemplate_83D6440, 2, -16, -24, 0, 100
+ delay 30
+ createsprite gBattleAnimSpriteTemplate_83D6440, 2, 20, -16, 14, 80
+ createsprite gBattleAnimSpriteTemplate_83D6440, 2, -20, -14, 16, 80
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 5
+ delay 3
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 6, 0, 8, 1
+ waitforvisualfinish
+ delay 8
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 7
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_RAZOR_LEAF: @ 81D0DDE
- loadsprite 10063
- loadsprite 10160
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- pause 1
- panse_1C SE_W077, 192, 10, 5
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -2, 10
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -1, -1, 15
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -4, -4, 7
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, 3, -3, 11
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -1, -6, 8
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, 2, -1, 12
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -4, 13
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, 4, -5, 7
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, 2, -6, 11
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -5, 8
- pause 60
- panse_19 SE_W013B, 192
- sprite gBattleAnimSpriteTemplate_83D64E4, 131, 20, -10, 20, 0, 22, 20, 1
- sprite gBattleAnimSpriteTemplate_83D64E4, 131, 20, -10, 20, 0, 22, -20, 1
- pause 20
- panse_19 SE_W013, 63
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- createtask sub_80A7FA0, 2, 3, 2, 0, 8, 1
- wait
- clearmonbg 3
+ loadspritegfx 10063
+ loadspritegfx 10160
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ delay 1
+ loopsewithpan SE_W077, 192, 10, 5
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -2, 10
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -1, -1, 15
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -4, -4, 7
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, 3, -3, 11
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -1, -6, 8
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, 2, -1, 12
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -4, 13
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, 4, -5, 7
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, 2, -6, 11
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -5, 8
+ delay 60
+ playsewithpan SE_W013B, 192
+ createsprite gBattleAnimSpriteTemplate_83D64E4, 131, 20, -10, 20, 0, 22, 20, 1
+ createsprite gBattleAnimSpriteTemplate_83D64E4, 131, 20, -10, 20, 0, 22, -20, 1
+ delay 20
+ playsewithpan SE_W013, 63
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_DEF_PARTNER, 2, 0, 8, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_ANCIENT_POWER: @ 81D0EE5
- loadsprite 10058
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB428, 2, 4, 1, 10, 1
- sprite gBattleAnimSpriteTemplate_83DAD60, 2, 20, 32, -48, 50, 2
- sprite gBattleAnimSpriteTemplate_83DAD60, 2, 0, 32, -38, 25, 5
- sprite gBattleAnimSpriteTemplate_83DAD60, 2, 32, 32, -28, 40, 3
- sprite gBattleAnimSpriteTemplate_83DAD60, 2, -20, 32, -48, 50, 2
- sprite gBattleAnimSpriteTemplate_83DAD60, 2, 20, 32, -28, 60, 1
- sprite gBattleAnimSpriteTemplate_83DAD60, 2, 0, 32, -28, 30, 4
- createtask sub_80A7FA0, 2, 0, 1, 0, 30, 1
- panse_19 SE_W082, 192
- pause 10
- sprite gBattleAnimSpriteTemplate_83DAD60, 2, 15, 32, -48, 25, 5
- sprite gBattleAnimSpriteTemplate_83DAD60, 2, -10, 32, -42, 30, 4
- pause 10
- sprite gBattleAnimSpriteTemplate_83DAD60, 2, 0, 32, -42, 25, 5
- sprite gBattleAnimSpriteTemplate_83DAD60, 2, -25, 32, -48, 30, 4
- wait
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 16, 0, 0, 4
- pause 3
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 1
- createtask sub_80A7FA0, 2, 1, 3, 0, 6, 1
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 7
- wait
- clearmonbg 3
+ loadspritegfx 10058
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ createsprite gBattleAnimSpriteTemplate_83DB428, 2, 4, 1, 10, 1
+ createsprite gBattleAnimSpriteTemplate_83DAD60, 2, 20, 32, -48, 50, 2
+ createsprite gBattleAnimSpriteTemplate_83DAD60, 2, 0, 32, -38, 25, 5
+ createsprite gBattleAnimSpriteTemplate_83DAD60, 2, 32, 32, -28, 40, 3
+ createsprite gBattleAnimSpriteTemplate_83DAD60, 2, -20, 32, -48, 50, 2
+ createsprite gBattleAnimSpriteTemplate_83DAD60, 2, 20, 32, -28, 60, 1
+ createsprite gBattleAnimSpriteTemplate_83DAD60, 2, 0, 32, -28, 30, 4
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 30, 1
+ playsewithpan SE_W082, 192
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DAD60, 2, 15, 32, -48, 25, 5
+ createsprite gBattleAnimSpriteTemplate_83DAD60, 2, -10, 32, -42, 30, 4
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83DAD60, 2, 0, 32, -42, 25, 5
+ createsprite gBattleAnimSpriteTemplate_83DAD60, 2, -25, 32, -48, 30, 4
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 16, 0, 0, 4
+ delay 3
+ playsewithpan SE_W120, 63
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 7
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_OCTAZOOKA: @ 81D100D
- loadsprite 10030
- loadsprite 10017
- panse_19 SE_W025B, 192
- sprite gBattleAnimSpriteTemplate_83D6F08, 130, 20, 0, 0, 0, 20, 0
- wait
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D6F3C, 130, 8, 8, 1, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6F3C, 130, -8, -8, 1, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6F3C, 130, 8, -8, 1, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83D6F3C, 130, -8, 8, 1, 0
- wait
+ loadspritegfx 10030
+ loadspritegfx 10017
+ playsewithpan SE_W025B, 192
+ createsprite gBattleAnimSpriteTemplate_83D6F08, 130, 20, 0, 0, 0, 20, 0
+ waitforvisualfinish
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D6F3C, 130, 8, 8, 1, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6F3C, 130, -8, -8, 1, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6F3C, 130, 8, -8, 1, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D6F3C, 130, -8, 8, 1, 0
+ waitforvisualfinish
end
Move_MIST: @ 81D1073
- loadsprite 10144
- monbg 2
+ loadspritegfx 10144
+ monbg ANIM_BANK_ATK_PARTNER
setalpha 12, 8
- panse_1C SE_W054, 192, 20, 15
+ loopsewithpan SE_W054, 192, 20, 15
call _81D10BE
call _81D10BE
call _81D10BE
@@ -6907,209 +6909,209 @@ Move_MIST: @ 81D1073
call _81D10BE
call _81D10BE
call _81D10BE
- pause 32
- createtask sub_80E1F8C, 2, 10, 8, 2, 0, 14, 32767
- wait
- clearmonbg 2
+ delay 32
+ createvisualtask sub_80E1F8C, 2, 10, 8, 2, 0, 14, 32767
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
end
_81D10BE:
- sprite gBattleAnimSpriteTemplate_83D9D3C, 2, 0, -24, 48, 240, 0, 1
- pause 7
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9D3C, 2, 0, -24, 48, 240, 0, 1
+ delay 7
+ return
Move_HAZE: @ 81D10D4
- wait
- panse_19 SE_W114, 0
- createtask sub_80D80E0, 5
- pause 30
- createtask sub_80E2A38, 10, 1920, 2, 0, 16, 0
- pause 90
- createtask sub_80E2A38, 10, 1920, 1, 16, 0, 0
+ waitforvisualfinish
+ playsewithpan SE_W114, 0
+ createvisualtask sub_80D80E0, 5
+ delay 30
+ createvisualtask sub_80E2A38, 10, 1920, 2, 0, 16, 0
+ delay 90
+ createvisualtask sub_80E2A38, 10, 1920, 1, 16, 0, 0
end
Move_FIRE_PUNCH: @ 81D1107
- loadsprite 10143
- loadsprite 10029
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- createtask sub_80E2A38, 10, 4, 2, 0, 9, 31
- sprite gBattleAnimSpriteTemplate_83D9478, 129, 0
- sprite gBattleAnimSpriteTemplate_83D9478, 129, 64
- sprite gBattleAnimSpriteTemplate_83D9478, 129, 128
- sprite gBattleAnimSpriteTemplate_83D9478, 129, 196
- panse_19 SE_W172, 63
- wait
- sprite gBattleAnimSpriteTemplate_83D9FA8, 131, 0, 0, 8, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 0, 0, 1, 1
- createtask sub_80A7E7C, 2, 1, 0, 3, 15, 1
+ loadspritegfx 10143
+ loadspritegfx 10029
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 9, 31
+ createsprite gBattleAnimSpriteTemplate_83D9478, 129, 0
+ createsprite gBattleAnimSpriteTemplate_83D9478, 129, 64
+ createsprite gBattleAnimSpriteTemplate_83D9478, 129, 128
+ createsprite gBattleAnimSpriteTemplate_83D9478, 129, 196
+ playsewithpan SE_W172, 63
+ waitforvisualfinish
+ createsprite gFistFootSpriteTemplate, 131, 0, 0, 8, 1, 0
+ createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 15, 1
call _81D11A2
- pause 4
- panse_19 SE_W007, 63
- wait
- createtask sub_80E2A38, 10, 4, 0, 9, 0, 31
- wait
- clearmonbg 3
+ delay 4
+ playsewithpan SE_W007, 63
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 4, 0, 9, 0, 31
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81D11A2:
- sprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, 192, 176, 40
- sprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, -192, 240, 40
- sprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, 192, -160, 40
- sprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, -192, -112, 40
- sprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, 160, 48, 40
- sprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, -224, -32, 40
- sprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, 112, -128, 40
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, 192, 176, 40
+ createsprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, -192, 240, 40
+ createsprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, 192, -160, 40
+ createsprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, -192, -112, 40
+ createsprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, 160, 48, 40
+ createsprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, -224, -32, 40
+ createsprite gBattleAnimSpriteTemplate_83D9490, 129, 0, 10, 112, -128, 40
+ return
Move_LEER: @ 81D121A
- loadsprite 10027
- monbg 0
+ loadspritegfx 10027
+ monbg ANIM_BANK_ATTACKER
monbgprio_28 0
setalpha 8, 8
- panse_19 SE_W043, 192
- sprite gBattleAnimSpriteTemplate_84022B0, 2, 24, -12
- createtask sub_80A8D34, 5, -5, -5, 10, 0, 1
- wait
- pause 10
- createtask sub_80A7FA0, 2, 1, 1, 0, 9, 1
- createtask sub_80A7FA0, 2, 3, 1, 0, 9, 1
- wait
- clearmonbg 0
+ playsewithpan SE_W043, 192
+ createsprite gBattleAnimSpriteTemplate_84022B0, 2, 24, -12
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 10, ANIM_BANK_ATTACKER, 1
+ waitforvisualfinish
+ delay 10
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 1, 0, 9, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_DEF_PARTNER, 1, 0, 9, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
blendoff
- pause 1
- wait
+ delay 1
+ waitforvisualfinish
end
Move_DREAM_EATER: @ 81D1271
- loadsprite 10147
- loadsprite 10031
- monbg 3
- monbgprio_2A 1
- panse_19 SE_W060, 192
+ loadspritegfx 10147
+ loadspritegfx 10031
+ monbg ANIM_BANK_DEF_PARTNER
+ monbgprio_2A ANIM_BANK_TARGET
+ playsewithpan SE_W060, 192
call Unknown_81D61E7
setalpha 8, 8
- panse_19 SE_W107, 63
- createtask sub_80A7E7C, 2, 1, 5, 0, 15, 1
- createtask sub_80A8D34, 5, -6, -6, 15, 1, 1
- wait
+ playsewithpan SE_W107, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 5, 0, 15, 1
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -6, -6, 15, ANIM_BANK_TARGET, 1
+ waitforvisualfinish
setalpha 12, 8
- createtask sub_80A7E7C, 2, 1, 0, 2, 25, 1
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 2, 25, 1
call _81D12DB
- wait
- pause 15
+ waitforvisualfinish
+ delay 15
call Unknown_81D5EF5
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
- pause 1
+ delay 1
call Unknown_81D61F3
end
_81D12DB:
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -40, 35
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
- pause 4
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 28, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 40, 39
- pause 4
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -32, 26
- pause 4
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- pause 4
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- pause 4
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -40, 26
- pause 4
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 36, 33
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
- pause 4
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
- sprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -20, 35
- pause 4
- ret
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -40, 35
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 28, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 40, 39
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -32, 26
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, -15, -16, 36
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 16, 33
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -40, 26
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -5, 15, 36, 33
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 10, -5, -8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, -10, 20, 20, 39
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 0, 5, 8, 26
+ createsprite gBattleAnimSpriteTemplate_83D637C, 3, 5, -18, -20, 35
+ delay 4
+ return
Move_POISON_GAS: @ 81D1474
- loadsprite 10172
- loadsprite 10150
- pause 0
- monbg 3
+ loadspritegfx 10172
+ loadspritegfx 10150
+ delay 0
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_29
setalpha 12, 8
- pause 0
- panse_19 SE_W054, 192
- sprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
- pause 4
- panse_19 SE_W054, 192
- sprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
- pause 4
- panse_19 SE_W054, 192
- sprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
- pause 4
- panse_19 SE_W054, 192
- sprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
- pause 4
- panse_19 SE_W054, 192
- sprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
- pause 4
- panse_19 SE_W054, 192
- sprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
- pause 40
- panse_1C SE_W054, 63, 28, 6
- createtask sub_80E1F8C, 2, 4, 6, 2, 0, 12, 26650
- wait
- blendoff
- clearmonbg 3
- pause 0
+ delay 0
+ playsewithpan SE_W054, 192
+ createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 4
+ playsewithpan SE_W054, 192
+ createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 4
+ playsewithpan SE_W054, 192
+ createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 4
+ playsewithpan SE_W054, 192
+ createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 4
+ playsewithpan SE_W054, 192
+ createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 4
+ playsewithpan SE_W054, 192
+ createsprite gBattleAnimSpriteTemplate_83D9DAC, 128, 64, 0, 0, -32, -6, 4192, 1072, 0
+ delay 40
+ loopsewithpan SE_W054, 63, 28, 6
+ createvisualtask sub_80E1F8C, 2, 4, 6, 2, 0, 12, 26650
+ waitforvisualfinish
+ blendoff
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ delay 0
end
Move_BIND: @ 81D1552
- createtask sub_80A8B88, 5, 0, 6, 3328, 4, 0
- jump _81D1568
+ createvisualtask AnimTask_SwayMon, 5, 0, 6, 3328, 4, 0
+ goto _81D1568
_81D1568:
- panse_19 SE_W020, 63
+ playsewithpan SE_W020, 63
call _81D1578
call _81D1578
- wait
+ waitforvisualfinish
end
_81D1578:
- createtask sub_80A8D34, 5, 10, -5, 5, 1, 0
- pause 16
- ret
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, 10, -5, 5, ANIM_BANK_TARGET, 0
+ delay 16
+ return
Move_WRAP: @ 81D158C
- createtask sub_80A8500, 2, 0, 6, 4, 2, 4
- jump _81D1568
+ createvisualtask AnimTask_TranslateMonEllipticalRespectSide, 2, ANIM_BANK_ATTACKER, 6, 4, 2, 4
+ goto _81D1568
Move_PSYBEAM: @ 81D15A2
- loadsprite 10163
- panse_19 SE_W060, 192
+ loadspritegfx 10163
+ playsewithpan SE_W060, 192
call Unknown_81D61E7
- createtask_1F sub_812B058, 200, -64, 63, 3, 4, 0, 15
+ createsoundtask sub_812B058, 200, -64, 63, 3, 4, 0, 15
call _81D1626
call _81D1626
- createtask sub_80A8B88, 5, 0, 6, 2048, 4, 1
- createtask sub_80E1F8C, 2, 4, 2, 2, 0, 12, 32351
+ createvisualtask AnimTask_SwayMon, 5, 0, 6, 2048, 4, 1
+ createvisualtask sub_80E1F8C, 2, 4, 2, 2, 0, 12, 32351
call _81D1626
call _81D1626
call _81D1626
@@ -7119,294 +7121,294 @@ Move_PSYBEAM: @ 81D15A2
call _81D1626
call _81D1626
call _81D1626
- wait
- pause 1
+ waitforvisualfinish
+ delay 1
call Unknown_81D61F3
end
_81D1626:
- sprite gBattleAnimSpriteTemplate_83DA784, 130, 16, 0, 0, 0, 13, 0
- pause 4
- ret
+ createsprite gBattleAnimSpriteTemplate_83DA784, 130, 16, 0, 0, 0, 13, 0
+ delay 4
+ return
Move_HYPNOSIS: @ 81D163C
- loadsprite 10163
+ loadspritegfx 10163
call Unknown_81D61E7
call _81D166F
call _81D166F
call _81D166F
- createtask sub_80E1F8C, 2, 4, 2, 2, 0, 12, 32351
- wait
- pause 1
+ createvisualtask sub_80E1F8C, 2, 4, 2, 2, 0, 12, 32351
+ waitforvisualfinish
+ delay 1
call Unknown_81D61F3
end
_81D166F:
- panse_19 SE_W048, 192
- sprite gBattleAnimSpriteTemplate_83DA784, 130, 0, 8, 0, 8, 27, 0
- sprite gBattleAnimSpriteTemplate_83DA784, 130, 16, -8, 0, -8, 27, 0
- pause 6
- ret
+ playsewithpan SE_W048, 192
+ createsprite gBattleAnimSpriteTemplate_83DA784, 130, 0, 8, 0, 8, 27, 0
+ createsprite gBattleAnimSpriteTemplate_83DA784, 130, 16, -8, 0, -8, 27, 0
+ delay 6
+ return
Move_PSYWAVE: @ 81D169C
- loadsprite 10165
- panse_19 SE_W060, 192
+ loadspritegfx 10165
+ playsewithpan SE_W060, 192
call Unknown_81D61E7
- createtask sub_80D3630, 5, 100
- createtask_1F sub_812B058, 203, -64, 63, 2, 9, 0, 10
+ createvisualtask sub_80D3630, 5, 100
+ createsoundtask sub_812B058, 203, -64, 63, 2, 9, 0, 10
call _81D16FF
call _81D16FF
- createtask sub_80E1F8C, 2, 4, 1, 4, 0, 12, 32351
+ createvisualtask sub_80E1F8C, 2, 4, 1, 4, 0, 12, 32351
call _81D16FF
call _81D16FF
call _81D16FF
call _81D16FF
- wait
- pause 1
+ waitforvisualfinish
+ delay 1
call Unknown_81D61F3
end
_81D16FF:
- sprite gBattleAnimSpriteTemplate_83D9280, 131, 10, 10, 0, 16
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9280, 131, 10, 10, 0, 16
- pause 4
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9280, 131, 10, 10, 0, 16
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9280, 131, 10, 10, 0, 16
+ delay 4
+ return
Move_ZAP_CANNON: @ 81D1722
- loadsprite 10171
- loadsprite 10011
- panse_19 SE_W086, 192
- sprite gBattleAnimSpriteTemplate_83D9874, 131, 10, 0, 0, 0, 30, 0
- sprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 16, 30, 0, 40, 0
- sprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 16, 30, 64, 40, 1
- sprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 16, 30, 128, 40, 0
- sprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 16, 30, 192, 40, 2
- sprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 8, 30, 32, 40, 0
- sprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 8, 30, 96, 40, 1
- sprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 8, 30, 160, 40, 0
- sprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 8, 30, 224, 40, 2
- wait
- createtask sub_80A7FA0, 2, 1, 4, 0, 5, 1
- pause 15
- panse_1D SE_W085B, 63, 19
- call Unknown_81D6100
- wait
+ loadspritegfx 10171
+ loadspritegfx 10011
+ playsewithpan SE_W086, 192
+ createsprite gBattleAnimSpriteTemplate_83D9874, 131, 10, 0, 0, 0, 30, 0
+ createsprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 16, 30, 0, 40, 0
+ createsprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 16, 30, 64, 40, 1
+ createsprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 16, 30, 128, 40, 0
+ createsprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 16, 30, 192, 40, 2
+ createsprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 8, 30, 32, 40, 0
+ createsprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 8, 30, 96, 40, 1
+ createsprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 8, 30, 160, 40, 0
+ createsprite gBattleAnimSpriteTemplate_83D98A0, 132, 10, 0, 8, 30, 224, 40, 2
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 5, 1
+ delay 15
+ waitplaysewithpan SE_W085B, 63, 19
+ call ElectricityEffect
+ waitforvisualfinish
end
Move_STEEL_WING: @ 81D1807
- loadsprite 10009
- loadsprite 10135
- panse_1C SE_W231, 192, 28, 2
- createtask sub_80E0A4C, 5, 0, 0, 0
- wait
- monbg 3
+ loadspritegfx 10009
+ loadspritegfx 10135
+ loopsewithpan SE_W231, 192, 28, 2
+ createvisualtask sub_80E0A4C, 5, 0, 0, 0
+ waitforvisualfinish
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- panse_1C SE_W017, 192, 20, 2
- createtask sub_80A8408, 2, 0, 12, 4, 1, 4
- createtask sub_80DA09C, 5, 1, 70
- sprite gBattleAnimSpriteTemplate_83DA3B4, 2, -25, 0, 0, 0, 20
- sprite gBattleAnimSpriteTemplate_83DA3B4, 2, 25, 0, 0, 0, 20
- pause 24
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 9
- pause 17
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 16, 0, 1, 1
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -16, 0, 1, 1
- panse_19 SE_W013, 63
- wait
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 11
- wait
- clearmonbg 3
+ loopsewithpan SE_W017, 192, 20, 2
+ createvisualtask AnimTask_TranslateMonElliptical, 2, ANIM_BANK_ATTACKER, 12, 4, 1, 4
+ createvisualtask sub_80DA09C, 5, 1, 70
+ createsprite gBattleAnimSpriteTemplate_83DA3B4, 2, -25, 0, 0, 0, 20
+ createsprite gBattleAnimSpriteTemplate_83DA3B4, 2, 25, 0, 0, 0, 20
+ delay 24
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 9
+ delay 17
+ createsprite gBasicHitSplatSpriteTemplate, 2, 16, 0, 1, 1
+ createsprite gBasicHitSplatSpriteTemplate, 2, -16, 0, 1, 1
+ playsewithpan SE_W013, 63
+ waitforvisualfinish
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 11
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_IRON_TAIL: @ 81D18B6
- loadsprite 10135
- panse_1C SE_W231, 192, 28, 2
- createtask sub_80E0A4C, 5, 1, 0, 0
- wait
- monbg 1
+ loadspritegfx 10135
+ loopsewithpan SE_W231, 192, 28, 2
+ createvisualtask sub_80E0A4C, 5, 1, 0, 0
+ waitforvisualfinish
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 0, 0, 1, 2
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- panse_19 SE_W233B, 63
- wait
- createtask sub_80E0E24, 5, 0, 1
- clearmonbg 1
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ createvisualtask sub_80E0E24, 5, 0, 1
+ clearmonbg ANIM_BANK_TARGET
blendoff
- wait
+ waitforvisualfinish
end
Move_POISON_TAIL: @ 81D1914
- loadsprite 10135
- loadsprite 10150
- panse_1C SE_W231, 192, 28, 2
- createtask sub_80E0A4C, 5, 1, 1, 23768
- wait
- monbg 1
- setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 4
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 0, 0, 1, 2
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- panse_19 SE_W233B, 63
- wait
- createtask sub_80E0E24, 5, 0, 1
- clearmonbg 1
- blendoff
- call Unknown_81D5F87
- wait
+ loadspritegfx 10135
+ loadspritegfx 10150
+ loopsewithpan SE_W231, 192, 28, 2
+ createvisualtask sub_80E0A4C, 5, 1, 1, 23768
+ waitforvisualfinish
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 4
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ waitforvisualfinish
+ createvisualtask sub_80E0E24, 5, 0, 1
+ clearmonbg ANIM_BANK_TARGET
+ blendoff
+ call PoisonBubblesAnim
+ waitforvisualfinish
end
Move_METAL_CLAW: @ 81D197A
- loadsprite 10039
- panse_1C SE_W231, 192, 28, 2
- createtask sub_80E0A4C, 5, 0, 0, 0
- wait
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4
- pause 2
- panse_19 SE_W013, 63
- sprite gBattleAnimSpriteTemplate_83DB288, 130, -10, -10, 0
- sprite gBattleAnimSpriteTemplate_83DB288, 130, -10, 10, 0
- sprite gBattleAnimSpriteTemplate_83DB428, 2, -4, 1, 10, 3, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4
- pause 2
- panse_19 SE_W013, 63
- sprite gBattleAnimSpriteTemplate_83DB288, 130, 10, -10, 1
- sprite gBattleAnimSpriteTemplate_83DB288, 130, 10, 10, 1
- sprite gBattleAnimSpriteTemplate_83DB428, 2, -4, 1, 10, 3, 1
- wait
+ loadspritegfx 10039
+ loopsewithpan SE_W231, 192, 28, 2
+ createvisualtask sub_80E0A4C, 5, 0, 0, 0
+ waitforvisualfinish
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4
+ delay 2
+ playsewithpan SE_W013, 63
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, -10, -10, 0
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, -10, 10, 0
+ createsprite gBattleAnimSpriteTemplate_83DB428, 2, -4, 1, 10, 3, 1
+ delay 8
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4
+ delay 2
+ playsewithpan SE_W013, 63
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, 10, -10, 1
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, 10, 10, 1
+ createsprite gBattleAnimSpriteTemplate_83DB428, 2, -4, 1, 10, 3, 1
+ waitforvisualfinish
end
Move_NIGHT_SHADE: @ 81D1A0D
- monbg 0
+ monbg ANIM_BANK_ATTACKER
monbgprio_28 0
- panse_19 SE_W060, 192
+ playsewithpan SE_W060, 192
fadetobg 2
waitbgfadein
- pause 10
- panse_19 SE_W043, 192
- createtask sub_80DDDF0, 5, 85
- pause 70
- createtask sub_80A7FA0, 2, 1, 2, 0, 12, 1
- createtask sub_80E1F8C, 2, 4, 0, 2, 0, 13, 0
- wait
- clearmonbg 0
- pause 1
+ delay 10
+ playsewithpan SE_W043, 192
+ createvisualtask sub_80DDDF0, 5, 85
+ delay 70
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 12, 1
+ createvisualtask sub_80E1F8C, 2, 4, 0, 2, 0, 13, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
+ delay 1
restorebg
waitbgfadein
end
Move_EGG_BOMB: @ 81D1A55
- loadsprite 10198
- loadsprite 10175
- panse_19 SE_W039, 192
- sprite gBattleAnimSpriteTemplate_83D7594, 130, 10, 0, 0, 0, 25, -32
- wait
- createtask sub_80A7FA0, 2, 1, 4, 0, 16, 1
- sprite gBattleAnimSpriteTemplate_83D7828, 132, 6, 5, 1, 0
- panse_19 SE_W120, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83D7828, 132, -16, -15, 1, 0
- panse_19 SE_W120, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83D7828, 132, 16, -5, 1, 0
- panse_19 SE_W120, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83D7828, 132, -12, 18, 1, 0
- panse_19 SE_W120, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83D7828, 132, 0, 5, 1, 0
- panse_19 SE_W120, 63
- pause 3
- wait
+ loadspritegfx 10198
+ loadspritegfx 10175
+ playsewithpan SE_W039, 192
+ createsprite gBattleAnimSpriteTemplate_83D7594, 130, 10, 0, 0, 0, 25, -32
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 16, 1
+ createsprite gBattleAnimSpriteTemplate_83D7828, 132, 6, 5, 1, 0
+ playsewithpan SE_W120, 63
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D7828, 132, -16, -15, 1, 0
+ playsewithpan SE_W120, 63
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D7828, 132, 16, -5, 1, 0
+ playsewithpan SE_W120, 63
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D7828, 132, -12, 18, 1, 0
+ playsewithpan SE_W120, 63
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D7828, 132, 0, 5, 1, 0
+ playsewithpan SE_W120, 63
+ delay 3
+ waitforvisualfinish
end
Move_SHADOW_BALL: @ 81D1AEF
- loadsprite 10176
+ loadspritegfx 10176
fadetobg 2
waitbgfadein
- pause 15
- createtask_1F sub_812B058, 168, -64, 63, 5, 5, 0, 5
- sprite gBattleAnimSpriteTemplate_83DAEA8, 130, 16, 16, 8
- wait
- panse_19 SE_W028, 63
- createtask sub_80A7FA0, 2, 1, 4, 0, 8, 1
- wait
+ delay 15
+ createsoundtask sub_812B058, 168, -64, 63, 5, 5, 0, 5
+ createsprite gBattleAnimSpriteTemplate_83DAEA8, 130, 16, 16, 8
+ waitforvisualfinish
+ playsewithpan SE_W028, 63
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 8, 1
+ waitforvisualfinish
restorebg
waitbgfadein
end
Move_LICK: @ 81D1B32
- loadsprite 10177
- pause 15
- panse_19 SE_W122, 63
- sprite gBattleAnimSpriteTemplate_83DAEDC, 130, 0, 0
- createtask sub_80A7FA0, 2, 1, 1, 0, 16, 1
- wait
+ loadspritegfx 10177
+ delay 15
+ playsewithpan SE_W122, 63
+ createsprite gBattleAnimSpriteTemplate_83DAEDC, 130, 0, 0
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 1, 0, 16, 1
+ waitforvisualfinish
end
Move_FOCUS_ENERGY: @ 81D1B59
- loadsprite 10184
- panse_19 SE_W082, 192
+ loadspritegfx 10184
+ playsewithpan SE_W082, 192
call EndureFlamesAnim
- pause 8
- createtask sub_80E1F8C, 2, 2, 2, 2, 0, 11, 32767
- createtask sub_80A7FA0, 2, 0, 1, 0, 32, 1
+ delay 8
+ createvisualtask sub_80E1F8C, 2, 2, 2, 2, 0, 11, 32767
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 32, 1
call EndureFlamesAnim
- pause 8
+ delay 8
call EndureFlamesAnim
- wait
+ waitforvisualfinish
end
Move_BIDE: @ 81D1B99
- ifelse _81D1BA3, _81D1BCF
+ choosetwoturnanim _81D1BA3, _81D1BCF
end
_81D1BA3:
- panse_1C SE_W036, 192, 9, 2
- createtask sub_80E1F8C, 2, 2, 2, 2, 0, 11, 31
- createtask sub_80A7FA0, 2, 0, 1, 0, 32, 1
- wait
+ loopsewithpan SE_W036, 192, 9, 2
+ createvisualtask sub_80E1F8C, 2, 2, 2, 2, 0, 11, 31
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 32, 1
+ waitforvisualfinish
end
_81D1BCF:
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- panse_1C SE_W036, 192, 9, 2
- createtask sub_80E2A38, 10, 2, 2, 0, 11, 31
- createtask sub_80A7FA0, 2, 0, 1, 0, 32, 1
- wait
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 24, 0, 0, 4
- wait
- createtask sub_80A8154, 2, 0, 2, 0, 12, 1
- createtask sub_80A7FA0, 2, 1, 3, 0, 16, 1
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 1, 18, -8, 1, 1
- pause 5
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 1, -18, 8, 1, 1
- pause 5
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 1, -8, -5, 1, 1
- wait
- pause 5
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 7
- wait
- createtask sub_80E2A38, 10, 2, 2, 11, 0, 31
- wait
- clearmonbg 3
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ loopsewithpan SE_W036, 192, 9, 2
+ createvisualtask sub_80E2A38, 10, 2, 2, 0, 11, 31
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 32, 1
+ waitforvisualfinish
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 24, 0, 0, 4
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_ATTACKER, 2, 0, 12, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 16, 1
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 1, 18, -8, 1, 1
+ delay 5
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 1, -18, 8, 1, 1
+ delay 5
+ playsewithpan SE_W004, 63
+ createsprite gBasicHitSplatSpriteTemplate, 1, -8, -5, 1, 1
+ waitforvisualfinish
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 7
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 2, 2, 11, 0, 31
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_STRING_SHOT: @ 81D1C98
- loadsprite 10179
- loadsprite 10180
- monbg 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 0, 9, 0
- wait
- panse_1C SE_W081, 192, 9, 6
+ loadspritegfx 10179
+ loadspritegfx 10180
+ monbg ANIM_BANK_DEF_PARTNER
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 0, 9, 0
+ waitforvisualfinish
+ loopsewithpan SE_W081, 192, 9, 6
call _81D1D56
call _81D1D56
call _81D1D56
@@ -7425,33 +7427,33 @@ Move_STRING_SHOT: @ 81D1C98
call _81D1D56
call _81D1D56
call _81D1D56
- wait
- panse_19 SE_W081B, 63
- sprite gBattleAnimSpriteTemplate_83DAB40, 130, 0, 10
- pause 4
- sprite gBattleAnimSpriteTemplate_83DAB40, 130, 0, -2
- pause 4
- sprite gBattleAnimSpriteTemplate_83DAB40, 130, 0, 22
- wait
- clearmonbg 3
- pause 1
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 9, 0, 0
+ waitforvisualfinish
+ playsewithpan SE_W081B, 63
+ createsprite gBattleAnimSpriteTemplate_83DAB40, 130, 0, 10
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DAB40, 130, 0, -2
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DAB40, 130, 0, 22
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ delay 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 9, 0, 0
end
_81D1D56:
- sprite gBattleAnimSpriteTemplate_83DAB28, 130, 20, 0, 512, 20, 1
- pause 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83DAB28, 130, 20, 0, 512, 20, 1
+ delay 1
+ return
Move_SPIDER_WEB: @ 81D1D6A
- loadsprite 10181
- loadsprite 10180
- monbg 3
- pause 0
- sprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 0, 9, 0
- wait
+ loadspritegfx 10181
+ loadspritegfx 10180
+ monbg ANIM_BANK_DEF_PARTNER
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 0, 9, 0
+ waitforvisualfinish
monbgprio_28 1
- panse_1C SE_W081, 192, 9, 6
+ loopsewithpan SE_W081, 192, 9, 6
call _81D1DF7
call _81D1DF7
call _81D1DF7
@@ -7466,792 +7468,792 @@ Move_SPIDER_WEB: @ 81D1D6A
call _81D1DF7
call _81D1DF7
call _81D1DF7
- wait
- panse_19 SE_W081B, 63
- sprite gBattleAnimSpriteTemplate_83DAB74, 2
- wait
- clearmonbg 3
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 9, 0, 0
+ waitforvisualfinish
+ playsewithpan SE_W081B, 63
+ createsprite gBattleAnimSpriteTemplate_83DAB74, 2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 5, 1, 2, 9, 0, 0
end
_81D1DF7:
- sprite gBattleAnimSpriteTemplate_83DAB28, 130, 20, 0, 512, 20, 0
- pause 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83DAB28, 130, 20, 0, 512, 20, 0
+ delay 1
+ return
Move_RAZOR_WIND: @ 81D1E0B
- ifelse _81D1E16, _81D1E66
+ choosetwoturnanim _81D1E16, _81D1E66
_81D1E14:
- wait
+ waitforvisualfinish
end
_81D1E16:
- loadsprite 10009
- panse_19 SE_W016, 192
- sprite gBattleAnimSpriteTemplate_83D765C, 2, 32, 0, 16, 16, 0, 7, 40
- sprite gBattleAnimSpriteTemplate_83D765C, 2, 32, 0, 16, 16, 85, 7, 40
- sprite gBattleAnimSpriteTemplate_83D765C, 2, 32, 0, 16, 16, 170, 7, 40
- wait
- panse_19 SE_W016B, 192
- jump _81D1E14
+ loadspritegfx 10009
+ playsewithpan SE_W016, 192
+ createsprite gBattleAnimSpriteTemplate_83D765C, 2, 32, 0, 16, 16, 0, 7, 40
+ createsprite gBattleAnimSpriteTemplate_83D765C, 2, 32, 0, 16, 16, 85, 7, 40
+ createsprite gBattleAnimSpriteTemplate_83D765C, 2, 32, 0, 16, 16, 170, 7, 40
+ waitforvisualfinish
+ playsewithpan SE_W016B, 192
+ goto _81D1E14
_81D1E66:
- loadsprite 10154
- loadsprite 10135
- monbg 1
- setalpha 12, 8
- panse_19 SE_W013B, 192
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, 8, 0, 0, 22, 2, 1
- pause 2
- panse_19 SE_W013B, 192
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, -8, 16, 14, 22, 1, 1
- pause 2
- panse_19 SE_W013B, 192
- sprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, 12, -16, -14, 22, 0, 1
- pause 17
- panse_19 SE_W013, 63
- createtask sub_80A7FA0, 2, 1, 2, 0, 10, 1
- createtask sub_80A7FA0, 2, 3, 2, 0, 10, 1
- wait
- clearmonbg 1
- blendoff
- jump _81D1E14
+ loadspritegfx 10154
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ playsewithpan SE_W013B, 192
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, 8, 0, 0, 22, 2, 1
+ delay 2
+ playsewithpan SE_W013B, 192
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, -8, 16, 14, 22, 1, 1
+ delay 2
+ playsewithpan SE_W013B, 192
+ createsprite gBattleAnimSpriteTemplate_83DA3E4, 2, 14, 12, -16, -14, 22, 0, 1
+ delay 17
+ playsewithpan SE_W013, 63
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 10, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_DEF_PARTNER, 2, 0, 10, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
+ blendoff
+ goto _81D1E14
Move_DISABLE: @ 81D1EF1
- loadsprite 10071
- monbg 1
+ loadspritegfx 10071
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 8, 8
- panse_19 SE_W197, 192
- sprite gBattleAnimSpriteTemplate_83930F4, 13, 24, -16
- wait
- createtask sub_80D03C4, 5
- panse_1C SE_W020, 63, 15, 4
- wait
- pause 1
- clearmonbg 1
+ playsewithpan SE_W197, 192
+ createsprite gBattleAnimSpriteTemplate_83930F4, 13, 24, -16
+ waitforvisualfinish
+ createvisualtask sub_80D03C4, 5
+ loopsewithpan SE_W020, 63, 15, 4
+ waitforvisualfinish
+ delay 1
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_RECOVER: @ 81D1F1F
- loadsprite 10147
- loadsprite 10031
- monbg 2
+ loadspritegfx 10147
+ loadspritegfx 10031
+ monbg ANIM_BANK_ATK_PARTNER
setalpha 12, 8
- panse_1C SE_W025, 192, 13, 3
- createtask sub_80E1F8C, 2, 2, 0, 6, 0, 11, 12287
+ loopsewithpan SE_W025, 192, 13, 3
+ createvisualtask sub_80E1F8C, 2, 2, 0, 6, 0, 11, 12287
call _81D1F5F
call _81D1F5F
call _81D1F5F
- wait
- clearmonbg 2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
- pause 1
+ delay 1
call Unknown_81D5EF5
- wait
+ waitforvisualfinish
end
_81D1F5F:
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 40, -10, 13
- pause 3
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, -35, -10, 13
- pause 3
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 15, -40, 13
- pause 3
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, -10, -32, 13
- pause 3
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 25, -20, 13
- pause 3
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, -40, -20, 13
- pause 3
- sprite gBattleAnimSpriteTemplate_83D62EC, 2, 5, -40, 13
- pause 3
- ret
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 40, -10, 13
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, -35, -10, 13
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 15, -40, 13
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, -10, -32, 13
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 25, -20, 13
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, -40, -20, 13
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D62EC, 2, 5, -40, 13
+ delay 3
+ return
Move_MIMIC: @ 81D1FC9
- loadsprite 10147
+ loadspritegfx 10147
monbg_22 3
setalpha 11, 5
panse_1B SE_W107, 63, 192, 253, 0
- createtask sub_80CB340, 5, 128, 24
- pause 15
- sprite gBattleAnimSpriteTemplate_83D65E8, 130, -12, 24
- pause 10
- setvar 7, -1
- wait
- panse_19 SE_W036, 192
- createtask sub_80E1F8C, 2, 2, 0, 2, 0, 11, 32767
- wait
+ createvisualtask sub_80CB340, 5, 128, 24
+ delay 15
+ createsprite gBattleAnimSpriteTemplate_83D65E8, 130, -12, 24
+ delay 10
+ setarg 7, -1
+ waitforvisualfinish
+ playsewithpan SE_W036, 192
+ createvisualtask sub_80E1F8C, 2, 2, 0, 2, 0, 11, 32767
+ waitforvisualfinish
clearmonbg_23 3
blendoff
end
Move_CONSTRICT: @ 81D2013
- loadsprite 10186
- panse_1C SE_W010, 63, 6, 4
- sprite gBattleAnimSpriteTemplate_83D65A0, 132, 0, 16, 0, 2
- pause 7
- sprite gBattleAnimSpriteTemplate_83D65A0, 131, 0, 0, 0, 2
- sprite gBattleAnimSpriteTemplate_83D65A0, 130, 0, 8, 1, 2
- pause 7
- sprite gBattleAnimSpriteTemplate_83D65A0, 131, 0, -8, 1, 2
- pause 8
- createtask sub_80A7FA0, 2, 1, 3, 0, 6, 1
- pause 20
- panse_19 SE_W020, 63
- setvar 7, -1
- wait
+ loadspritegfx 10186
+ loopsewithpan SE_W010, 63, 6, 4
+ createsprite gBattleAnimSpriteTemplate_83D65A0, 132, 0, 16, 0, 2
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83D65A0, 131, 0, 0, 0, 2
+ createsprite gBattleAnimSpriteTemplate_83D65A0, 130, 0, 8, 1, 2
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83D65A0, 131, 0, -8, 1, 2
+ delay 8
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ delay 20
+ playsewithpan SE_W020, 63
+ setarg 7, -1
+ waitforvisualfinish
end
Move_CURSE: @ 81D207B
- ifelse _81D2084, _81D2101
+ choosetwoturnanim _81D2084, _81D2101
_81D2084:
- loadsprite 10199
- loadsprite 10200
- monbg 2
- createtask sub_80DECB0, 5
- wait
- pause 20
- sprite gBattleAnimSpriteTemplate_83DAF20, 2
- pause 60
+ loadspritegfx 10199
+ loadspritegfx 10200
+ monbg ANIM_BANK_ATK_PARTNER
+ createvisualtask sub_80DECB0, 5
+ waitforvisualfinish
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_83DAF20, 2
+ delay 60
call _81D20EB
- pause 41
+ delay 41
call _81D20EB
- pause 41
+ delay 41
call _81D20EB
- wait
- clearmonbg 2
- pause 1
- monbg 3
- panse_19 SE_W171, 63
- sprite gBattleAnimSpriteTemplate_83DAF38, 130
- createtask sub_80A7FA0, 2, 1, 2, 0, 14, 1
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 16, 0, 0
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
+ delay 1
+ monbg ANIM_BANK_DEF_PARTNER
+ playsewithpan SE_W171, 63
+ createsprite gBattleAnimSpriteTemplate_83DAF38, 130
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 14, 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 16, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
_81D20EB:
- createtask sub_80A7FA0, 2, 0, 4, 0, 10, 0
- panse_19 SE_W020, 192
- ret
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 4, 0, 10, 0
+ playsewithpan SE_W020, 192
+ return
_81D2101:
- createtask sub_80A8B88, 5, 0, 10, 1536, 3, 0
- wait
- pause 10
+ createvisualtask AnimTask_SwayMon, 5, 0, 10, 1536, 3, 0
+ waitforvisualfinish
+ delay 10
call _81D211C
- wait
+ waitforvisualfinish
end
_81D211C:
- panse_19 SE_W082, 192
- createtask sub_80E2F2C, 5
- createtask sub_80E1F8C, 5, 2, 4, 2, 0, 10, 31
- ret
+ playsewithpan SE_W082, 192
+ createvisualtask sub_80E2F2C, 5
+ createvisualtask sub_80E1F8C, 5, 2, 4, 2, 0, 10, 31
+ return
Move_SOFT_BOILED: @ 81D213B
- loadsprite 10202
- loadsprite 10203
- loadsprite 10031
- monbg 2
- panse_19 SE_W039, 192
- createtask sub_80A7E7C, 2, 0, 0, 2, 6, 1
- sprite gBattleAnimSpriteTemplate_83D78BC, 4, 0, 16, 0
- sprite gBattleAnimSpriteTemplate_83D78BC, 4, 0, 16, 1
- pause 120
- pause 7
- panse_19 SE_W030, 192
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 10, 0, 31500
- sprite gBattleAnimSpriteTemplate_83D7928, 3, 31, 16, 0, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83D7928, 3, 31, 16, 0, 1
- pause 60
- setvar 7, -1
- wait
- clearmonbg 2
+ loadspritegfx 10202
+ loadspritegfx 10203
+ loadspritegfx 10031
+ monbg ANIM_BANK_ATK_PARTNER
+ playsewithpan SE_W039, 192
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_ATTACKER, 0, 2, 6, 1
+ createsprite gBattleAnimSpriteTemplate_83D78BC, 4, 0, 16, 0
+ createsprite gBattleAnimSpriteTemplate_83D78BC, 4, 0, 16, 1
+ delay 120
+ delay 7
+ playsewithpan SE_W030, 192
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 10, 0, 31500
+ createsprite gBattleAnimSpriteTemplate_83D7928, 3, 31, 16, 0, 1
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83D7928, 3, 31, 16, 0, 1
+ delay 60
+ setarg 7, -1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
call Unknown_81D5F3E
end
Move_HEAL_BELL: @ 81D21BD
- loadsprite 10205
- loadsprite 10206
- loadsprite 10203
- loadsprite 10049
- createtask sub_80E2A38, 10, 10, 0, 0, 10, 32767
- wait
- createtask sub_80D1ADC, 5
- sprite gBattleAnimSpriteTemplate_83D7A44, 2, 0, -24, 0, 1
- pause 12
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 48, -18, 35, 0, 0
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -48, 20, 30, 1, 1
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -38, -29, 30, 2, 2
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 36, 18, 30, 3, 3
+ loadspritegfx 10205
+ loadspritegfx 10206
+ loadspritegfx 10203
+ loadspritegfx 10049
+ createvisualtask sub_80E2A38, 10, 10, 0, 0, 10, 32767
+ waitforvisualfinish
+ createvisualtask sub_80D1ADC, 5
+ createsprite gBattleAnimSpriteTemplate_83D7A44, 2, 0, -24, 0, 1
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 48, -18, 35, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -48, 20, 30, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -38, -29, 30, 2, 2
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 36, 18, 30, 3, 3
call _81D2372
- pause 33
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 19, 26, 35, 4, 4
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -34, -12, 30, 5, 5
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 41, -20, 34, 6, 6
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -15, 26, 32, 7, 0
+ delay 33
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 19, 26, 35, 4, 4
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -34, -12, 30, 5, 5
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 41, -20, 34, 6, 6
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -15, 26, 32, 7, 0
call _81D2372
- pause 33
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -48, 18, 31, 0, 2
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 48, -20, 30, 2, 5
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 38, 29, 33, 4, 3
- sprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -36, -18, 30, 6, 1
+ delay 33
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -48, 18, 31, 0, 2
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 48, -20, 30, 2, 5
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, 38, 29, 33, 4, 3
+ createsprite gBattleAnimSpriteTemplate_83D7A68, 40, 0, -24, -36, -18, 30, 6, 1
call _81D2372
- wait
- createtask sub_80D1B80, 5
- wait
- panse_19 SE_W234, 192
- sprite gBattleAnimSpriteTemplate_83D6CA0, 16, -15, 0, 0, 0, 32, 60, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83D6CA0, 16, 12, -5, 0, 0, 32, 60, 1
- wait
- panse_19 SE_REAPOKE, 192
- createtask sub_80E2A7C, 10, 4, 3, 10, 0, 31500
- createtask sub_80E2A38, 10, 10, 3, 10, 0, 32767
- sprite gBattleAnimSpriteTemplate_83D7974, 16, 0, 0, 0, 1
+ waitforvisualfinish
+ createvisualtask sub_80D1B80, 5
+ waitforvisualfinish
+ playsewithpan SE_W234, 192
+ createsprite gBattleAnimSpriteTemplate_83D6CA0, 16, -15, 0, 0, 0, 32, 60, 1
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83D6CA0, 16, 12, -5, 0, 0, 32, 60, 1
+ waitforvisualfinish
+ playsewithpan SE_REAPOKE, 192
+ createvisualtask sub_80E2A7C, 10, 4, 3, 10, 0, 31500
+ createvisualtask sub_80E2A38, 10, 10, 3, 10, 0, 32767
+ createsprite gBattleAnimSpriteTemplate_83D7974, 16, 0, 0, 0, 1
end
_81D2372:
- createtask sub_80E2A7C, 10, 4, 3, 8, 0, 31500
- createtask sub_80E2A38, 10, 10, 3, 2, 10, 32767
- sprite gBattleAnimSpriteTemplate_83D7928, 40, 0, -24, 0, 1
- panse_19 SE_W215, 192
- ret
+ createvisualtask sub_80E2A7C, 10, 4, 3, 8, 0, 31500
+ createvisualtask sub_80E2A38, 10, 10, 3, 2, 10, 32767
+ createsprite gBattleAnimSpriteTemplate_83D7928, 40, 0, -24, 0, 1
+ playsewithpan SE_W215, 192
+ return
Move_FAKE_OUT: @ 81D23A8
- panse_19 SE_W260, 0
- createtask sub_80D1CD0, 5
- wait
- panse_19 SE_W166, 63
- createtask sub_80A7FA0, 2, 1, 4, 0, 5, 1
- createtask sub_80D1E38, 3
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767
+ playsewithpan SE_W260, 0
+ createvisualtask sub_80D1CD0, 5
+ waitforvisualfinish
+ playsewithpan SE_W166, 63
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 5, 1
+ createvisualtask sub_80D1E38, 3
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767
end
Move_SCARY_FACE: @ 81D23E3
- loadsprite 10218
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 27, 3, 0, 16, 0
- panse_19 SE_W060, 192
- wait
- pause 10
- panse_19 SE_W043, 192
- createtask sub_80D23B4, 5
- pause 13
- sprite gBattleAnimSpriteTemplate_83D7B94, 0, -16, -8
- sprite gBattleAnimSpriteTemplate_83D7B94, 0, 16, -8
- wait
- createtask sub_80D60B4, 3, 20, 1, 0
- panse_19 SE_W081B, 63
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 27, 3, 16, 0, 0
- wait
+ loadspritegfx 10218
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 27, 3, 0, 16, 0
+ playsewithpan SE_W060, 192
+ waitforvisualfinish
+ delay 10
+ playsewithpan SE_W043, 192
+ createvisualtask sub_80D23B4, 5
+ delay 13
+ createsprite gBattleAnimSpriteTemplate_83D7B94, 0, -16, -8
+ createsprite gBattleAnimSpriteTemplate_83D7B94, 0, 16, -8
+ waitforvisualfinish
+ createvisualtask sub_80D60B4, 3, 20, 1, 0
+ playsewithpan SE_W081B, 63
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 27, 3, 16, 0, 0
+ waitforvisualfinish
end
Move_SWEET_KISS: @ 81D2446
- loadsprite 10216
- loadsprite 10220
- sprite gBattleAnimSpriteTemplate_83D7BB8, 130, 16, -48
- panse_19 SE_W215, 63
- pause 23
- panse_19 SE_W215, 63
- pause 23
- panse_19 SE_W215, 63
- wait
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, 160, -30
- panse_19 SE_W213, 63
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, -256, -42
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, 128, -14
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, 416, -38
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, -128, -22
- sprite gBattleAnimSpriteTemplate_83D7AC8, 131, -384, -31
+ loadspritegfx 10216
+ loadspritegfx 10220
+ createsprite gBattleAnimSpriteTemplate_83D7BB8, 130, 16, -48
+ playsewithpan SE_W215, 63
+ delay 23
+ playsewithpan SE_W215, 63
+ delay 23
+ playsewithpan SE_W215, 63
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, 160, -30
+ playsewithpan SE_W213, 63
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, -256, -42
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, 128, -14
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, 416, -38
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, -128, -22
+ createsprite gBattleAnimSpriteTemplate_83D7AC8, 131, -384, -31
end
Move_LOVELY_KISS: @ 81D24AF
- loadsprite 10219
- loadsprite 10221
- sprite gBattleAnimSpriteTemplate_83D7C00, 130, 0, -24
- panse_19 SE_W060B, 63
- wait
- panse_19 SE_W213, 63
- sprite gBattleAnimSpriteTemplate_83D7BD0, 131, -256, -42
- sprite gBattleAnimSpriteTemplate_83D7BD0, 131, 128, -14
- sprite gBattleAnimSpriteTemplate_83D7BD0, 131, 416, -38
- sprite gBattleAnimSpriteTemplate_83D7BD0, 131, -128, -22
+ loadspritegfx 10219
+ loadspritegfx 10221
+ createsprite gBattleAnimSpriteTemplate_83D7C00, 130, 0, -24
+ playsewithpan SE_W060B, 63
+ waitforvisualfinish
+ playsewithpan SE_W213, 63
+ createsprite gBattleAnimSpriteTemplate_83D7BD0, 131, -256, -42
+ createsprite gBattleAnimSpriteTemplate_83D7BD0, 131, 128, -14
+ createsprite gBattleAnimSpriteTemplate_83D7BD0, 131, 416, -38
+ createsprite gBattleAnimSpriteTemplate_83D7BD0, 131, -128, -22
end
Move_FURY_SWIPES: @ 81D24F6
- loadsprite 10222
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 5, 5
- pause 4
- panse_19 SE_W010, 63
- sprite gBattleAnimSpriteTemplate_83D7C48, 130, 16, 0, 1
- createtask sub_80A7FA0, 2, 1, 3, 0, 5, 1
- pause 10
- sprite gBattleAnimSpriteTemplate_83C1FB0, 130, 5, 5
- pause 4
- panse_19 SE_W010, 63
- sprite gBattleAnimSpriteTemplate_83D7C48, 130, -16, 0, 0
- createtask sub_80A7FA0, 2, 1, 4, 0, 7, 1
+ loadspritegfx 10222
+ createsprite gHorizontalLungeSpriteTemplate, 2, 5, 5
+ delay 4
+ playsewithpan SE_W010, 63
+ createsprite gBattleAnimSpriteTemplate_83D7C48, 130, 16, 0, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 5, 1
+ delay 10
+ createsprite gHorizontalLungeSpriteTemplate, 130, 5, 5
+ delay 4
+ playsewithpan SE_W010, 63
+ createsprite gBattleAnimSpriteTemplate_83D7C48, 130, -16, 0, 0
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 7, 1
end
Move_INGRAIN: @ 81D255A
- loadsprite 10223
- loadsprite 10147
- sprite gBattleAnimSpriteTemplate_83D6658, 2, 16, 26, -1, 2, 150
- panse_19 SE_W010, 192
- pause 10
- sprite gBattleAnimSpriteTemplate_83D6658, 2, -32, 20, 1, 1, 140
- panse_19 SE_W010, 192
- pause 10
- sprite gBattleAnimSpriteTemplate_83D6658, 2, 32, 22, 1, 0, 130
- panse_19 SE_W010, 192
- pause 10
- sprite gBattleAnimSpriteTemplate_83D6658, 2, -16, 25, -1, 3, 120
- panse_19 SE_W010, 192
- pause 40
- sprite gBattleAnimSpriteTemplate_83D6698, 3, 32, 26, -1, 3, 30
- pause 5
- panse_19 SE_W145C, 192
- pause 5
- sprite gBattleAnimSpriteTemplate_83D6698, 3, -48, 20, 1, 2, 30
- panse_19 SE_W145C, 192
- pause 5
- panse_19 SE_W145C, 192
- pause 5
- sprite gBattleAnimSpriteTemplate_83D6698, 3, 48, 26, -2, 3, 18
- panse_19 SE_W145C, 192
- pause 10
- wait
+ loadspritegfx 10223
+ loadspritegfx 10147
+ createsprite gBattleAnimSpriteTemplate_83D6658, 2, 16, 26, -1, 2, 150
+ playsewithpan SE_W010, 192
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D6658, 2, -32, 20, 1, 1, 140
+ playsewithpan SE_W010, 192
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D6658, 2, 32, 22, 1, 0, 130
+ playsewithpan SE_W010, 192
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D6658, 2, -16, 25, -1, 3, 120
+ playsewithpan SE_W010, 192
+ delay 40
+ createsprite gBattleAnimSpriteTemplate_83D6698, 3, 32, 26, -1, 3, 30
+ delay 5
+ playsewithpan SE_W145C, 192
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D6698, 3, -48, 20, 1, 2, 30
+ playsewithpan SE_W145C, 192
+ delay 5
+ playsewithpan SE_W145C, 192
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D6698, 3, 48, 26, -2, 3, 18
+ playsewithpan SE_W145C, 192
+ delay 10
+ waitforvisualfinish
end
Move_PRESENT: @ 81D260B
- loadsprite 10224
- createtask sub_812C960, 2
- sprite gBattleAnimSpriteTemplate_83D671C, 130, 0, -5, 10, 2, -1
- panse_19 SE_W039, 192
- pause 14
- panse_19 SE_W145B, 192
- pause 14
- panse_19 SE_W145B, 0
- pause 20
- panse_19 SE_W145B, 63
- wait
- jumpvareq 7, 0, _81D264E
- jumpvareq 7, 1, _81D26B9
+ loadspritegfx 10224
+ createvisualtask sub_812C960, 2
+ createsprite gBattleAnimSpriteTemplate_83D671C, 130, 0, -5, 10, 2, -1
+ playsewithpan SE_W039, 192
+ delay 14
+ playsewithpan SE_W145B, 192
+ delay 14
+ playsewithpan SE_W145B, 0
+ delay 20
+ playsewithpan SE_W145B, 63
+ waitforvisualfinish
+ jumpargeq 7, 0, _81D264E
+ jumpargeq 7, 1, _81D26B9
end
_81D264E:
- loadsprite 10198
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 131, 0, 0, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 131, 24, -24, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 131, -16, 16, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 131, -24, -12, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 131, 16, 16, 1, 1
+ loadspritegfx 10198
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 131, 0, 0, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 131, 24, -24, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 131, -16, 16, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 131, -24, -12, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 131, 16, 16, 1, 1
end
_81D26B9:
- loadsprite 10195
- loadsprite 10031
- panse_19 SE_W234, 63
- sprite gBattleAnimSpriteTemplate_83D6764, 132, -16, 32, -3, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6764, 132, 16, 32, -3, -1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6764, 132, 32, 32, -3, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6764, 132, -32, 32, -3, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6764, 132, 0, 32, -3, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6764, 132, -8, 32, -3, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6764, 132, -8, 32, -3, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6764, 132, 24, 32, -3, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D6764, 132, -24, 32, -3, 1
- wait
+ loadspritegfx 10195
+ loadspritegfx 10031
+ playsewithpan SE_W234, 63
+ createsprite gBattleAnimSpriteTemplate_83D6764, 132, -16, 32, -3, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6764, 132, 16, 32, -3, -1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6764, 132, 32, 32, -3, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6764, 132, -32, 32, -3, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6764, 132, 0, 32, -3, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6764, 132, -8, 32, -3, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6764, 132, -8, 32, -3, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6764, 132, 24, 32, -3, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D6764, 132, -24, 32, -3, 1
+ waitforvisualfinish
waitsound
call Unknown_81D5F3E
end
Move_BATON_PASS: @ 81D2762
- loadsprite 10226
- panse_19 SE_W226, 192
- createtask sub_80E1F8C, 2, 31, 1, 2, 0, 11, 31455
- sprite gBattleAnimSpriteTemplate_84024D0, 2
+ loadspritegfx 10226
+ playsewithpan SE_W226, 192
+ createvisualtask sub_80E1F8C, 2, 31, 1, 2, 0, 11, 31455
+ createsprite gBattleAnimSpriteTemplate_84024D0, 2
end
Move_PERISH_SONG: @ 81D2784
- loadsprite 10206
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 1, 1, 16
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 2, 1, 32
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 3, 2, 48
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 4, 2, 64
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 5, 0, 80
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 6, 0, 96
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 7, 1, 112
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 8, 2, 128
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 9, 0, 144
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 10, 2, 160
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 11, 0, 176
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 12, 1, 192
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 13, 3, 208
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 14, 3, 224
- sprite gBattleAnimSpriteTemplate_83D7D1C, 4, 15, 0, 240
- sprite gBattleAnimSpriteTemplate_83D7D34, 4, 15, 0, 0
- pause 20
+ loadspritegfx 10206
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 1, 1, 16
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 2, 1, 32
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 3, 2, 48
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 4, 2, 64
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 5, 0, 80
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 6, 0, 96
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 7, 1, 112
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 8, 2, 128
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 9, 0, 144
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 10, 2, 160
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 11, 0, 176
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 12, 1, 192
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 13, 3, 208
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 14, 3, 224
+ createsprite gBattleAnimSpriteTemplate_83D7D1C, 4, 15, 0, 240
+ createsprite gBattleAnimSpriteTemplate_83D7D34, 4, 15, 0, 0
+ delay 20
panse_1B SE_W195, 192, 63, 2, 0
- pause 80
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 0
- createtask sub_80E0E24, 5, 4, 0
- createtask sub_80E0E24, 5, 5, 0
- createtask sub_80E0E24, 5, 6, 0
- createtask sub_80E0E24, 5, 7, 0
- pause 100
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 0
- createtask sub_80E0E24, 5, 4, 1
- createtask sub_80E0E24, 5, 5, 1
- createtask sub_80E0E24, 5, 6, 1
- createtask sub_80E0E24, 5, 7, 1
- wait
+ delay 80
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 0
+ createvisualtask sub_80E0E24, 5, 4, 0
+ createvisualtask sub_80E0E24, 5, 5, 0
+ createvisualtask sub_80E0E24, 5, 6, 0
+ createvisualtask sub_80E0E24, 5, 7, 0
+ delay 100
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 0
+ createvisualtask sub_80E0E24, 5, 4, 1
+ createvisualtask sub_80E0E24, 5, 5, 1
+ createvisualtask sub_80E0E24, 5, 6, 1
+ createvisualtask sub_80E0E24, 5, 7, 1
+ waitforvisualfinish
end
Move_SLEEP_TALK: @ 81D28ED
- loadsprite 10228
- createtask sub_80A8B88, 5, 0, 4, 4096, 2, 0
- pause 20
- sprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -1
- panse_19 SE_W173, 192
- pause 6
- sprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -1
- pause 6
- sprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -1
- pause 20
- sprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -5
- panse_19 SE_W173, 192
- pause 6
- sprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -5
- pause 6
- sprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -5
- pause 20
- sprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -3
- panse_19 SE_W173, 192
- pause 6
- sprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -3
- pause 6
- sprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -3
- wait
+ loadspritegfx 10228
+ createvisualtask AnimTask_SwayMon, 5, 0, 4, 4096, 2, 0
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -1
+ playsewithpan SE_W173, 192
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -1
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -1
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -5
+ playsewithpan SE_W173, 192
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -5
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -5
+ delay 20
+ createsprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -3
+ playsewithpan SE_W173, 192
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -3
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_84022F0, 130, 0, 20, 5, -3
+ waitforvisualfinish
end
Move_HYPER_FANG: @ 81D29A8
- loadsprite 10192
- panse_19 SE_W044, 63
- pause 1
- pause 2
- createtask sub_80E4200, 2
- jumpvareq 7, 1, _81D2A08
- createtask sub_812C924, 2
- jumpvareq 7, 0, _81D29FA
- jump _81D2A01
+ loadspritegfx 10192
+ playsewithpan SE_W044, 63
+ delay 1
+ delay 2
+ createvisualtask sub_80E4200, 2
+ jumpargeq 7, 1, _81D2A08
+ createvisualtask sub_812C924, 2
+ jumpargeq 7, 0, _81D29FA
+ goto _81D2A01
_81D29D6:
waitbgfadeout
- sprite gBattleAnimSpriteTemplate_840233C, 130
+ createsprite gBattleAnimSpriteTemplate_840233C, 130
waitbgfadein
- createtask sub_80A7E7C, 3, 1, 0, 10, 10, 1
- panse_19 SE_W043, 63
- pause 20
+ createvisualtask AnimTask_ShakeMon, 3, 1, 0, 10, 10, 1
+ playsewithpan SE_W043, 63
+ delay 20
restorebg
waitbgfadein
- wait
+ waitforvisualfinish
end
_81D29FA:
fadetobg 4
- jump _81D29D6
+ goto _81D29D6
_81D2A01:
fadetobg 5
- jump _81D29D6
+ goto _81D29D6
_81D2A08:
fadetobg 6
- jump _81D29D6
+ goto _81D29D6
Move_TRI_ATTACK: @ 81D2A0F
- loadsprite 10230
- sprite gBattleAnimSpriteTemplate_8402458, 130, 16, 0
- panse_19 SE_W161, 192
- pause 20
- panse_19 SE_W161, 192
- pause 20
- createtask_1F sub_812B058, 220, -64, 63, 5, 6, 0, 7
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0
- pause 16
- loadsprite 10033
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, 0
- panse_19 SE_W172B, 63
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 0, 1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, -1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 2, 1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 1, -1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, 1
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 1, -2
- pause 1
- sprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 3, 1
- pause 2
- createtask sub_80D60B4, 2, 20, 3, 1, 1
- wait
- loadsprite 10037
- createtask sub_80E2324, 2, 257, 257, 257
- panse_19 SE_W161B, 63
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, -48
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, -16
- pause 1
- sprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, 16
- pause 20
- createtask sub_80D60B4, 2, 20, 3, 1, 0
- pause 2
- createtask sub_80E2324, 2, 257, 257, 257
- wait
- loadsprite 10141
+ loadspritegfx 10230
+ createsprite gBattleAnimSpriteTemplate_8402458, 130, 16, 0
+ playsewithpan SE_W161, 192
+ delay 20
+ playsewithpan SE_W161, 192
+ delay 20
+ createsoundtask sub_812B058, 220, -64, 63, 5, 6, 0, 7
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 16, 0
+ delay 16
+ loadspritegfx 10033
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, 0
+ playsewithpan SE_W172B, 63
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 0, 1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, -1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 2, 1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 1, -1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, -1, 1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 1, -2
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D9520, 130, 0, 0, 30, 30, 3, 1
+ delay 2
+ createvisualtask sub_80D60B4, 2, 20, 3, 1, 1
+ waitforvisualfinish
+ loadspritegfx 10037
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ playsewithpan SE_W161B, 63
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, -48
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, -16
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D97D0, 130, 0, 16
+ delay 20
+ createvisualtask sub_80D60B4, 2, 20, 3, 1, 0
+ delay 2
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ waitforvisualfinish
+ loadspritegfx 10141
call Unknown_81D5C36
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0
- wait
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 16, 0, 0
+ waitforvisualfinish
end
Move_WILL_O_WISP: @ 81D2B83
- loadsprite 10232
- loadsprite 10231
- monbg 3
- monbgprio_2A 1
- panse_19 SE_W052, 192
- panse_1D SE_W052, 192, 10
- createtask sub_812B374, 2, -64, -64, 1, 0
- sprite gBattleAnimSpriteTemplate_83D974C, 2, 0, 0, 0
- pause 3
- sprite gBattleAnimSpriteTemplate_83D974C, 3, 0, 0, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83D974C, 4, 0, 0, 2
- pause 3
- sprite gBattleAnimSpriteTemplate_83D974C, 4, 0, 0, 3
- pause 40
- createtask sub_812B374, 2, -64, 63, 2, 0
- wait
+ loadspritegfx 10232
+ loadspritegfx 10231
+ monbg ANIM_BANK_DEF_PARTNER
+ monbgprio_2A ANIM_BANK_TARGET
+ playsewithpan SE_W052, 192
+ waitplaysewithpan SE_W052, 192, 10
+ createvisualtask sub_812B374, 2, -64, -64, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83D974C, 2, 0, 0, 0
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D974C, 3, 0, 0, 1
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D974C, 4, 0, 0, 2
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D974C, 4, 0, 0, 3
+ delay 40
+ createvisualtask sub_812B374, 2, -64, 63, 2, 0
+ waitforvisualfinish
monbgprio_29
- panse_19 SE_W172B, 63
- createtask sub_80A7FA0, 2, 1, 4, 0, 13, 1
- sprite gBattleAnimSpriteTemplate_83D977C, 2, 0
- sprite gBattleAnimSpriteTemplate_83D977C, 2, 42
- sprite gBattleAnimSpriteTemplate_83D977C, 2, 84
- sprite gBattleAnimSpriteTemplate_83D977C, 2, 126
- sprite gBattleAnimSpriteTemplate_83D977C, 2, 168
- sprite gBattleAnimSpriteTemplate_83D977C, 2, 210
- wait
- clearmonbg 3
+ playsewithpan SE_W172B, 63
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 13, 1
+ createsprite gBattleAnimSpriteTemplate_83D977C, 2, 0
+ createsprite gBattleAnimSpriteTemplate_83D977C, 2, 42
+ createsprite gBattleAnimSpriteTemplate_83D977C, 2, 84
+ createsprite gBattleAnimSpriteTemplate_83D977C, 2, 126
+ createsprite gBattleAnimSpriteTemplate_83D977C, 2, 168
+ createsprite gBattleAnimSpriteTemplate_83D977C, 2, 210
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
Move_ENCORE: @ 81D2C41
- loadsprite 10227
- loadsprite 10247
- createtask sub_812CC44, 2
- createtask sub_80E2D78, 2, 248, 3, 0, 10, 0
- wait
- sprite gBattleAnimSpriteTemplate_840238C, 130, 0, -8
- sprite gBattleAnimSpriteTemplate_84023A4, 2, -2, 0, 0, 0, 9
- sprite gBattleAnimSpriteTemplate_84023A4, 2, 2, 0, 1, 0, 9
- sprite gBattleAnimSpriteTemplate_84023BC, 3, -2, 0, 0, 0, 9
- sprite gBattleAnimSpriteTemplate_84023BC, 3, 2, 0, 1, 0, 9
- pause 16
- createtask sub_812B340, 5, 223, 63
- createtask sub_80A8B88, 5, 1, 8, 1536, 5, 1
- wait
- createtask sub_80E2D78, 2, 248, 3, 10, 0, 1
- wait
- createtask sub_812CCA8, 2
+ loadspritegfx 10227
+ loadspritegfx 10247
+ createvisualtask sub_812CC44, 2
+ createvisualtask sub_80E2D78, 2, 248, 3, 0, 10, 0
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_840238C, 130, 0, -8
+ createsprite gBattleAnimSpriteTemplate_84023A4, 2, -2, 0, 0, 0, 9
+ createsprite gBattleAnimSpriteTemplate_84023A4, 2, 2, 0, 1, 0, 9
+ createsprite gBattleAnimSpriteTemplate_84023BC, 3, -2, 0, 0, 0, 9
+ createsprite gBattleAnimSpriteTemplate_84023BC, 3, 2, 0, 1, 0, 9
+ delay 16
+ createvisualtask sub_812B340, 5, 223, 63
+ createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 5, 1
+ waitforvisualfinish
+ createvisualtask sub_80E2D78, 2, 248, 3, 10, 0, 1
+ waitforvisualfinish
+ createvisualtask sub_812CCA8, 2
end
Move_TRICK: @ 81D2CE8
- loadsprite 10224
- loadsprite 10207
- sprite gBattleAnimSpriteTemplate_83D67F4, 2, -40, 80
- sprite gBattleAnimSpriteTemplate_83D67F4, 2, -40, 208
- pause 16
- panse_19 SE_W166, 0
- createtask sub_80D1E38, 3
- createtask sub_80D1EC8, 3
- pause 30
- panse_19 SE_W104, 0
- pause 24
- panse_19 SE_W104, 0
- pause 16
- panse_19 SE_W104, 0
- pause 16
- panse_19 SE_W104, 0
- pause 16
- panse_19 SE_W104, 0
- pause 16
- panse_19 SE_W104, 0
- pause 16
- panse_19 SE_W213, 0
- createtask sub_80A7E7C, 3, 0, 5, 0, 7, 2
- createtask sub_80A7E7C, 3, 1, 5, 0, 7, 2
- wait
+ loadspritegfx 10224
+ loadspritegfx 10207
+ createsprite gBattleAnimSpriteTemplate_83D67F4, 2, -40, 80
+ createsprite gBattleAnimSpriteTemplate_83D67F4, 2, -40, 208
+ delay 16
+ playsewithpan SE_W166, 0
+ createvisualtask sub_80D1E38, 3
+ createvisualtask sub_80D1EC8, 3
+ delay 30
+ playsewithpan SE_W104, 0
+ delay 24
+ playsewithpan SE_W104, 0
+ delay 16
+ playsewithpan SE_W104, 0
+ delay 16
+ playsewithpan SE_W104, 0
+ delay 16
+ playsewithpan SE_W104, 0
+ delay 16
+ playsewithpan SE_W104, 0
+ delay 16
+ playsewithpan SE_W213, 0
+ createvisualtask AnimTask_ShakeMon, 3, 0, 5, 0, 7, 2
+ createvisualtask AnimTask_ShakeMon, 3, 1, 5, 0, 7, 2
+ waitforvisualfinish
end
Move_WISH: @ 81D2D66
- loadsprite 10233
- loadsprite 10049
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 10, 0
- wait
+ loadspritegfx 10233
+ loadspritegfx 10049
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 10, 0
+ waitforvisualfinish
panse_27 SE_W115, 63, 192, 253, 0
- sprite gBattleAnimSpriteTemplate_84024E8, 40
- wait
- pause 60
- panse_1C SE_W215, 192, 16, 3
+ createsprite gBattleAnimSpriteTemplate_84024E8, 40
+ waitforvisualfinish
+ delay 60
+ loopsewithpan SE_W215, 192, 16, 3
call Unknown_81D5ECA
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 10, 0, 0
- wait
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 10, 0, 0
+ waitforvisualfinish
end
Move_STOCKPILE: @ 81D2DAE
- loadsprite 10235
- panse_19 SE_W025, 192
- createtask sub_80E1F8C, 2, 2, 8, 1, 0, 12, 32767
- createtask sub_812D674, 5
+ loadspritegfx 10235
+ playsewithpan SE_W025, 192
+ createvisualtask sub_80E1F8C, 2, 2, 8, 1, 0, 12, 32767
+ createvisualtask sub_812D674, 5
call _81D2DEC
call _81D2DEC
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 12, 0, 32767
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 12, 0, 32767
end
_81D2DEC:
- sprite gBattleAnimSpriteTemplate_83D6350, 2, 55, 55, 13
- pause 1
- sprite gBattleAnimSpriteTemplate_83D6350, 2, -55, -55, 13
- pause 1
- sprite gBattleAnimSpriteTemplate_83D6350, 2, 0, 55, 13
- pause 1
- sprite gBattleAnimSpriteTemplate_83D6350, 2, 0, -55, 13
- pause 1
- sprite gBattleAnimSpriteTemplate_83D6350, 2, 55, -34, 13
- pause 1
- sprite gBattleAnimSpriteTemplate_83D6350, 2, 55, 34, 13
- pause 1
- sprite gBattleAnimSpriteTemplate_83D6350, 2, -55, -34, 13
- pause 1
- sprite gBattleAnimSpriteTemplate_83D6350, 2, -55, 34, 13
- pause 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83D6350, 2, 55, 55, 13
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D6350, 2, -55, -55, 13
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D6350, 2, 0, 55, 13
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D6350, 2, 0, -55, 13
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D6350, 2, 55, -34, 13
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D6350, 2, 55, 34, 13
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D6350, 2, -55, -34, 13
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D6350, 2, -55, 34, 13
+ delay 1
+ return
Move_SPIT_UP: @ 81D2E65
- loadsprite 10237
- loadsprite 10135
- panse_19 SE_W036, 192
- createtask sub_812D6CC, 5
- createtask sub_80A7FA0, 2, 0, 1, 0, 8, 2
- pause 45
- panse_19 SE_W255, 192
- pause 3
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 0, 12
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 32, 12
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 64, 12
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 96, 12
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 128, 12
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 160, 12
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 192, 12
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 224, 12
- pause 5
- jumpif 2, _81D2F32
- jumpif 3, _81D2F5B
+ loadspritegfx 10237
+ loadspritegfx 10135
+ playsewithpan SE_W036, 192
+ createvisualtask sub_812D6CC, 5
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 8, 2
+ delay 45
+ playsewithpan SE_W255, 192
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 0, 12
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 32, 12
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 64, 12
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 96, 12
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 128, 12
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 160, 12
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 192, 12
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 224, 12
+ delay 5
+ jumpifmoveturn 2, _81D2F32
+ jumpifmoveturn 3, _81D2F5B
_81D2EF5:
- pause 5
- createtask sub_80A9058, 2, 0, 1, 8, 1, 0
- panse_19 SE_W003, 63
- sprite gBattleAnimSpriteTemplate_83DB538, 131, -12, 10, 1, 1
- pause 5
- panse_19 SE_W003, 63
- sprite gBattleAnimSpriteTemplate_83DB538, 131, 12, -10, 1, 1
- wait
+ delay 5
+ createvisualtask sub_80A9058, 2, 0, 1, 8, 1, 0
+ playsewithpan SE_W003, 63
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, -12, 10, 1, 1
+ delay 5
+ playsewithpan SE_W003, 63
+ createsprite gBattleAnimSpriteTemplate_83DB538, 131, 12, -10, 1, 1
+ waitforvisualfinish
end
_81D2F32:
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 16
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 80
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 144
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 208
- jump _81D2EF5
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 16
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 80
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 144
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 208
+ goto _81D2EF5
_81D2F5B:
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 16
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 48
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 80
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 112
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 144
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 176
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 208
- sprite gBattleAnimSpriteTemplate_83D7B60, 2, 240
- jump _81D2EF5
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 16
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 48
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 80
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 112
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 144
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 176
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 208
+ createsprite gBattleAnimSpriteTemplate_83D7B60, 2, 240
+ goto _81D2EF5
Move_SWALLOW: @ 81D2FA8
- loadsprite 10236
- loadsprite 10031
- panse_19 SE_W036, 192
- createtask sub_812D790, 5
- createtask sub_80A7FA0, 2, 0, 1, 0, 8, 2
- pause 38
- panse_19 SE_W255, 192
- createtask sub_80A7FA0, 2, 0, 2, 0, 12, 1
+ loadspritegfx 10236
+ loadspritegfx 10031
+ playsewithpan SE_W036, 192
+ createvisualtask sub_812D790, 5
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 8, 2
+ delay 38
+ playsewithpan SE_W255, 192
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 2, 0, 12, 1
call _81D2FF9
- jumpif 2, _81D303B
- jumpif 3, _81D3045
+ jumpifmoveturn 2, _81D303B
+ jumpifmoveturn 3, _81D3045
_81D2FF2:
- wait
+ waitforvisualfinish
call Unknown_81D5EF5
end
_81D2FF9:
- sprite gBattleAnimSpriteTemplate_8402578, 2, 0, -8
- pause 1
- sprite gBattleAnimSpriteTemplate_8402578, 2, -24, -8
- pause 1
- sprite gBattleAnimSpriteTemplate_8402578, 2, 16, -8
- pause 1
- sprite gBattleAnimSpriteTemplate_8402578, 2, -16, -8
- pause 1
- sprite gBattleAnimSpriteTemplate_8402578, 2, 24, -8
- pause 1
- ret
+ createsprite gBattleAnimSpriteTemplate_8402578, 2, 0, -8
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_8402578, 2, -24, -8
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_8402578, 2, 16, -8
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_8402578, 2, -16, -8
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_8402578, 2, 24, -8
+ delay 1
+ return
_81D303B:
call _81D2FF9
- jump _81D2FF2
+ goto _81D2FF2
_81D3045:
call _81D2FF9
call _81D2FF9
- jump _81D2FF2
+ goto _81D2FF2
Move_TRANSFORM: @ 81D3054
- monbg 0
- panse_19 SE_W100, 192
- panse_1D SE_W107, 192, 48
- createtask sub_812D7E8, 2, 0
- wait
- clearmonbg 0
+ monbg ANIM_BANK_ATTACKER
+ playsewithpan SE_W100, 192
+ waitplaysewithpan SE_W107, 192, 48
+ createvisualtask sub_812D7E8, 2, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
end
Move_MORNING_SUN: @ 81D306C
- loadsprite 10241
- loadsprite 10031
- createtask sub_812DB84, 5
- pause 8
- createtask sub_80E2A38, 10, 1921, 8, 0, 12, 32767
- pause 14
+ loadspritegfx 10241
+ loadspritegfx 10031
+ createvisualtask sub_812DB84, 5
+ delay 8
+ createvisualtask sub_80E2A38, 10, 1921, 8, 0, 12, 32767
+ delay 14
call _81D30F2
call _81D30F2
call _81D30F2
@@ -8267,73 +8269,73 @@ Move_MORNING_SUN: @ 81D306C
call _81D30F2
call _81D30F2
call _81D30F2
- createtask sub_80E2A38, 10, 1921, 3, 12, 0, 32767
- wait
+ createvisualtask sub_80E2A38, 10, 1921, 3, 12, 0, 32767
+ waitforvisualfinish
waitsound
call Unknown_81D5EF5
end
_81D30F2:
- sprite gBattleAnimSpriteTemplate_84025EC, 2, 30, 640
- pause 5
- ret
+ createsprite gBattleAnimSpriteTemplate_84025EC, 2, 30, 640
+ delay 5
+ return
Move_SWEET_SCENT: @ 81D3100
- loadsprite 10238
- panse_19 SE_W230, 192
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 100, 0, 100
- pause 25
+ loadspritegfx 10238
+ playsewithpan SE_W230, 192
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 100, 0, 100
+ delay 25
setpan 0
call _81D3144
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 55, 0
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 55, 0
setpan 63
- createtask sub_80E1F8C, 2, 20, 1, 5, 5, 13, 22207
+ createvisualtask sub_80E1F8C, 2, 20, 1, 5, 5, 13, 22207
call _81D3144
- wait
+ waitforvisualfinish
end
_81D3144:
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 70, 1, 64
- pause 2
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 60, 0, 64
- pause 5
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 80, 1, 64
- pause 2
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 58, 0, 120
- pause 2
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 100, 0, 120
- pause 2
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 90, 0, 64
- pause 2
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 48, 0, 64
- pause 2
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 95, 1, 80
- pause 2
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 100, 0, 120
- pause 2
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 75, 1, 64
- pause 2
- sprite gBattleAnimSpriteTemplate_84026A4, 2, 85, 0, 120
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 70, 1, 64
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 60, 0, 64
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 80, 1, 64
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 58, 0, 120
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 100, 0, 120
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 90, 0, 64
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 48, 0, 64
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 95, 1, 80
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 100, 0, 120
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 75, 1, 64
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_84026A4, 2, 85, 0, 120
+ delay 2
+ return
Move_HYPER_BEAM: @ 81D31EA
- loadsprite 10147
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 0, 16, 0
- wait
- pause 10
- panse_19 SE_W063, 192
- createtask sub_80A7FA0, 2, 0, 1, 0, 4, 1
- wait
- pause 30
- createtask_1F sub_812B058, 247, -64, 63, 1, 15, 0, 5
- createtask sub_80A7E7C, 2, 0, 0, 4, 50, 1
- createtask sub_80E21A8, 2, 10147, 1, 12, 31, 16, 0, 0
+ loadspritegfx 10147
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 0, 16, 0
+ waitforvisualfinish
+ delay 10
+ playsewithpan SE_W063, 192
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 4, 1
+ waitforvisualfinish
+ delay 30
+ createsoundtask sub_812B058, 247, -64, 63, 1, 15, 0, 5
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_ATTACKER, 0, 4, 50, 1
+ createvisualtask sub_80E21A8, 2, 10147, 1, 12, 31, 16, 0, 0
call _81D331B
call _81D331B
call _81D331B
call _81D331B
call _81D331B
- createtask sub_80A7FA0, 2, 1, 4, 0, 50, 1
- createtask sub_80E2A38, 10, 4, 2, 0, 11, 26425
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 50, 1
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 11, 26425
call _81D331B
call _81D331B
call _81D331B
@@ -8355,30 +8357,30 @@ Move_HYPER_BEAM: @ 81D31EA
call _81D331B
call _81D331B
call _81D331B
- createtask sub_80E2A38, 10, 4, 2, 11, 0, 26425
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 16, 0, 0
+ createvisualtask sub_80E2A38, 10, 4, 2, 11, 0, 26425
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 4, 16, 0, 0
end
_81D331B:
- sprite gBattleAnimSpriteTemplate_83D6394, 130
- sprite gBattleAnimSpriteTemplate_83D6394, 130
- pause 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83D6394, 130
+ createsprite gBattleAnimSpriteTemplate_83D6394, 130
+ delay 1
+ return
Move_FLATTER: @ 81D332C
- loadsprite 10227
- loadsprite 10240
- createtask sub_812B340, 5, 223, 63
- createtask sub_812CC44, 2
- createtask sub_80E2D78, 2, 248, 3, 0, 10, 0
- wait
- sprite gBattleAnimSpriteTemplate_8402720, 130, 0, -8, 80
- pause 0
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 5, 2, 1
- pause 10
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 5, 2, 1
- pause 0
- createtask sub_812B30C, 5, 229, -64
+ loadspritegfx 10227
+ loadspritegfx 10240
+ createvisualtask sub_812B340, 5, 223, 63
+ createvisualtask sub_812CC44, 2
+ createvisualtask sub_80E2D78, 2, 248, 3, 0, 10, 0
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_8402720, 130, 0, -8, 80
+ delay 0
+ createsprite gVerticalDipSpriteTemplate, 2, 5, 2, ANIM_BANK_TARGET
+ delay 10
+ createsprite gVerticalDipSpriteTemplate, 2, 5, 2, ANIM_BANK_TARGET
+ delay 0
+ createvisualtask sub_812B30C, 5, 229, -64
call _81D3415
call _81D3415
call _81D3415
@@ -8398,264 +8400,264 @@ Move_FLATTER: @ 81D332C
call _81D3415
call _81D3415
call _81D3415
- pause 5
- createtask sub_812B30C, 5, 229, 63
- wait
- createtask sub_80E2D78, 2, 248, 3, 10, 0, 1
- wait
- createtask sub_812CCA8, 2
+ delay 5
+ createvisualtask sub_812B30C, 5, 229, 63
+ waitforvisualfinish
+ createvisualtask sub_80E2D78, 2, 248, 3, 10, 0, 1
+ waitforvisualfinish
+ createvisualtask sub_812CCA8, 2
end
_81D3415:
- sprite gBattleAnimSpriteTemplate_8402708, 40, 0
- sprite gBattleAnimSpriteTemplate_8402708, 40, 1
- ret
+ createsprite gBattleAnimSpriteTemplate_8402708, 40, 0
+ createsprite gBattleAnimSpriteTemplate_8402708, 40, 1
+ return
Move_ROLE_PLAY: @ 81D3428
- monbg 2
- createtask sub_80E2A38, 10, 4, 2, 0, 16, 32767
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 10, 0
- wait
- panse_19 SE_W161, 192
- panse_1D SE_W197, 192, 30
- createtask sub_812EFC8, 2
- wait
- clearmonbg 2
- createtask sub_80E2A38, 10, 4, 2, 16, 0, 32767
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 10, 0, 0
+ monbg ANIM_BANK_ATK_PARTNER
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 16, 32767
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 0, 10, 0
+ waitforvisualfinish
+ playsewithpan SE_W161, 192
+ waitplaysewithpan SE_W197, 192, 30
+ createvisualtask sub_812EFC8, 2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
+ createvisualtask sub_80E2A38, 10, 4, 2, 16, 0, 32767
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 2, 10, 0, 0
end
Move_REFRESH: @ 81D3485
- loadsprite 10203
- loadsprite 10049
- panse_19 SE_W287, 192
- createtask sub_81300A4, 2, 0
- wait
- panse_19 SE_W234, 192
+ loadspritegfx 10203
+ loadspritegfx 10049
+ playsewithpan SE_W287, 192
+ createvisualtask sub_81300A4, 2, 0
+ waitforvisualfinish
+ playsewithpan SE_W234, 192
call Unknown_81D5ECA
- wait
- panse_19 SE_REAPOKE, 192
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 10, 0, 31500
- sprite gBattleAnimSpriteTemplate_83D7928, 3, 0, 0, 0, 0
+ waitforvisualfinish
+ playsewithpan SE_REAPOKE, 192
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 10, 0, 31500
+ createsprite gBattleAnimSpriteTemplate_83D7928, 3, 0, 0, 0, 0
end
Move_BLAZE_KICK: @ 81D34C8
- loadsprite 10135
- loadsprite 10143
- loadsprite 10029
- monbg 1
- setalpha 12, 8
- panse_19 SE_W172, 63
- sprite gBattleAnimSpriteTemplate_83DA024, 131, 0, 0, 1, 30
- createtask sub_80E2A38, 10, 4, 2, 0, 7, 32767
- pause 30
- panse_19 SE_W007, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 0, 0, 1, 0
- createtask sub_80A7FA0, 2, 1, 3, 0, 14, 1
- createtask sub_80E2A38, 10, 4, 2, 0, 0, 32767
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 8, 0, 0
+ loadspritegfx 10135
+ loadspritegfx 10143
+ loadspritegfx 10029
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ playsewithpan SE_W172, 63
+ createsprite gBattleAnimSpriteTemplate_83DA024, 131, 0, 0, 1, 30
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 7, 32767
+ delay 30
+ playsewithpan SE_W007, 63
+ createsprite gBasicHitSplatSpriteTemplate, 130, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 14, 1
+ createvisualtask sub_80E2A38, 10, 4, 2, 0, 0, 32767
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 3, 1, 0, 8, 0, 0
call _81D11A2
- wait
- clearmonbg 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_HYPER_VOICE: @ 81D3550
- loadsprite 10203
+ loadspritegfx 10203
call _81D3562
- wait
- pause 8
+ waitforvisualfinish
+ delay 8
call _81D3562
- wait
+ waitforvisualfinish
end
_81D3562:
- createtask sub_812B2B8, 5
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 8, 0, 1023
- createtask sub_80A8D34, 5, -5, -5, 5, 0, 0
- sprite gBattleAnimSpriteTemplate_83D798C, 0, 45, 0, 0, 0, 0, 0, 1
- createtask sub_80A7FA0, 2, 1, 1, 0, 6, 1
- createtask sub_80A7FA0, 2, 3, 1, 0, 6, 1
- createtask sub_80E26BC, 2, 1, 0, 6, 1
- ret
+ createvisualtask sub_812B2B8, 5
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 31, 3, 8, 0, 1023
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 5, ANIM_BANK_ATTACKER, 0
+ createsprite gBattleAnimSpriteTemplate_83D798C, 0, 45, 0, 0, 0, 0, 0, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 1, 0, 6, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_DEF_PARTNER, 1, 0, 6, 1
+ createvisualtask sub_80E26BC, 2, 1, 0, 6, 1
+ return
Move_SAND_TOMB: @ 81D35D2
- loadsprite 10074
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 563
- createtask sub_80A7E7C, 5, 1, 0, 2, 43, 1
- panse_19 SE_W328, 63
+ loadspritegfx 10074
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 563
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 43, 1
+ playsewithpan SE_W328, 63
call _81D361F
call _81D361F
call _81D361F
- pause 22
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 563
- wait
+ delay 22
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 563
+ waitforvisualfinish
end
_81D361F:
- sprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 32, 528, 30, 10, 50, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 36, 480, 20, 13, -46, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 37, 576, 20, 5, 42, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 35, 400, 25, 8, -42, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 32, 512, 25, 13, 46, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 37, 464, 30, 12, -50, 1
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 32, 528, 30, 10, 50, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 36, 480, 20, 13, -46, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 37, 576, 20, 5, 42, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 35, 400, 25, 8, -42, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 32, 512, 25, 13, 46, 1
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DAC7C, 130, 0, 37, 464, 30, 12, -50, 1
+ delay 2
+ return
Move_SHEER_COLD: @ 81D36AA
fadetobg 15
waitbgfadeout
- panse_19 SE_W196, 0
+ playsewithpan SE_W196, 0
waitbgfadein
- loadsprite 10010
- monbg 3
+ loadspritegfx 10010
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- createtask sub_807B920, 2
- panse_1D SE_W258, 63, 17
- wait
- clearmonbg 3
+ createvisualtask sub_807B920, 2
+ waitplaysewithpan SE_W258, 63, 17
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
restorebg
waitbgfadein
end
Move_ARM_THRUST: @ 81D36CF
- loadsprite 10143
- loadsprite 10135
+ loadspritegfx 10143
+ loadspritegfx 10135
monbgprio_28 1
setalpha 12, 8
- createtask sub_80A8E04, 5, 8, 5, 0, 0
- pause 6
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 3
- pause 4
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83DA144, 130, 10, -8, 14, 3
- wait
- createtask sub_80A8E04, 5, 8, 5, 0, 1
- panse_19 SE_W003, 63
- ifelse _81D373C, _81D3750
+ createvisualtask sub_80A8E04, 5, 8, 5, 0, 0
+ delay 6
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 3
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83DA144, 130, 10, -8, 14, 3
+ waitforvisualfinish
+ createvisualtask sub_80A8E04, 5, 8, 5, 0, 1
+ playsewithpan SE_W003, 63
+ choosetwoturnanim _81D373C, _81D3750
_81D3728:
- createtask sub_80A7E7C, 5, 1, 4, 0, 6, 1
- wait
+ createvisualtask AnimTask_ShakeMon, 5, 1, 4, 0, 6, 1
+ waitforvisualfinish
blendoff
end
_81D373C:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, 8, 0, 1, 2
- jump _81D3728
+ createsprite gBasicHitSplatSpriteTemplate, 130, 8, 0, 1, 2
+ goto _81D3728
_81D3750:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, -8, 0, 1, 2
- jump _81D3728
+ createsprite gBasicHitSplatSpriteTemplate, 130, -8, 0, 1, 2
+ goto _81D3728
Move_MUDDY_WATER: @ 81D3764
panse_1B SE_W250, 192, 63, 2, 0
- createtask sub_80D38BC, 2, 1
- wait
+ createvisualtask sub_80D38BC, 2, 1
+ waitforvisualfinish
end
Move_BULLET_SEED: @ 81D3776
- loadsprite 10006
- sprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
- pause 5
- createtask sub_80A7FA0, 2, 1, 2, 0, 30, 1
- sprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
- wait
+ loadspritegfx 10006
+ createsprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
+ delay 5
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 30, 1
+ createsprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D7628, 130, 20, 0
+ waitforvisualfinish
end
Move_DRAGON_CLAW: @ 81D380C
- loadsprite 10029
- loadsprite 10039
- panse_19 SE_W221B, 192
- createtask sub_80E2A38, 10, 2, 4, 0, 8, 639
- createtask sub_80A7E7C, 5, 0, 0, 2, 15, 1
+ loadspritegfx 10029
+ loadspritegfx 10039
+ playsewithpan SE_W221B, 192
+ createvisualtask sub_80E2A38, 10, 2, 4, 0, 8, 639
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 15, 1
call _81D39E9
call _81D39E9
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 528, 30, 13, 50, 0
- pause 2
- createtask sub_812B30C, 5, 136, 63
- sprite gBattleAnimSpriteTemplate_83DB288, 130, -10, -10, 0
- sprite gBattleAnimSpriteTemplate_83DB288, 130, -10, 10, 0
- sprite gBattleAnimSpriteTemplate_83DB428, 2, -4, 1, 10, 3, 1
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 32, 480, 20, 16, -46, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 576, 20, 8, 42, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 31, 400, 25, 11, -42, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 512, 25, 16, 46, 0
- pause 2
- createtask sub_812B30C, 5, 136, 63
- sprite gBattleAnimSpriteTemplate_83DB288, 130, 10, -10, 1
- sprite gBattleAnimSpriteTemplate_83DB288, 130, 10, 10, 1
- sprite gBattleAnimSpriteTemplate_83DB428, 2, -4, 1, 10, 3, 1
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 464, 30, 15, -50, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 528, 30, 13, 50, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 32, 480, 20, 16, -46, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 576, 20, 8, 42, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 31, 400, 25, 11, -42, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 512, 25, 16, 46, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 464, 30, 15, -50, 0
- createtask sub_80E2A38, 10, 2, 4, 8, 0, 639
- wait
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 528, 30, 13, 50, 0
+ delay 2
+ createvisualtask sub_812B30C, 5, 136, 63
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, -10, -10, 0
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, -10, 10, 0
+ createsprite gBattleAnimSpriteTemplate_83DB428, 2, -4, 1, 10, 3, 1
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 32, 480, 20, 16, -46, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 576, 20, 8, 42, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 31, 400, 25, 11, -42, 0
+ delay 2
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 512, 25, 16, 46, 0
+ delay 2
+ createvisualtask sub_812B30C, 5, 136, 63
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, 10, -10, 1
+ createsprite gBattleAnimSpriteTemplate_83DB288, 130, 10, 10, 1
+ createsprite gBattleAnimSpriteTemplate_83DB428, 2, -4, 1, 10, 3, 1
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 464, 30, 15, -50, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 528, 30, 13, 50, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 32, 480, 20, 16, -46, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 576, 20, 8, 42, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 31, 400, 25, 11, -42, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 512, 25, 16, 46, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 464, 30, 15, -50, 0
+ createvisualtask sub_80E2A38, 10, 2, 4, 8, 0, 639
+ waitforvisualfinish
end
_81D39E9:
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 528, 30, 13, 50, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 32, 480, 20, 16, -46, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 576, 20, 8, 42, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 31, 400, 25, 11, -42, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 512, 25, 16, 46, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 464, 30, 15, -50, 0
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 528, 30, 13, 50, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 32, 480, 20, 16, -46, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 576, 20, 8, 42, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 31, 400, 25, 11, -42, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 28, 512, 25, 16, 46, 0
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83DACD0, 2, 0, 33, 464, 30, 15, -50, 0
+ delay 2
+ return
Unknown_81D3A74: @ 81D3A74
end
Move_MUD_SHOT: @ 81D3A75
- loadsprite 10259
- monbg 3
+ loadspritegfx 10259
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- createtask sub_80A7E7C, 5, 0, 0, 2, 46, 1
- pause 6
- createtask sub_80D3630, 5, 100
+ createvisualtask AnimTask_ShakeMon, 5, 0, 0, 2, 46, 1
+ delay 6
+ createvisualtask sub_80D3630, 5, 100
panse_1B SE_W250, 192, 63, 1, 0
call _81D3AEF
call _81D3AEF
call _81D3AEF
- createtask sub_80A7E7C, 5, 1, 3, 0, 43, 1
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 43, 1
call _81D3AEF
call _81D3AEF
call _81D3AEF
@@ -8664,529 +8666,529 @@ Move_MUD_SHOT: @ 81D3A75
call _81D3AEF
call _81D3AEF
call _81D3AEF
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81D3AEF:
- sprite gBattleAnimSpriteTemplate_83D920C, 3, 10, 10, 0, 16
- pause 2
- sprite gBattleAnimSpriteTemplate_83D920C, 3, 10, 10, 0, 16
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83D920C, 3, 10, 10, 0, 16
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D920C, 3, 10, 10, 0, 16
+ delay 2
+ return
Move_METEOR_MASH: @ 81D3B12
- loadsprite 10233
- loadsprite 10135
- loadsprite 10143
+ loadspritegfx 10233
+ loadspritegfx 10135
+ loadspritegfx 10143
panse_1B SE_W112, 192, 63, 3, 0
fadetobg 16
waitbgfadein
- wait
- sprite gBattleAnimSpriteTemplate_8402A3C, 131, -48, -64, 72, 32, 30
- pause 10
- sprite gBattleAnimSpriteTemplate_8402A3C, 131, -112, -64, 8, 32, 30
- pause 40
- sprite gBattleAnimSpriteTemplate_83DA024, 131, 0, 0, 0, 30
- sprite gBattleAnimSpriteTemplate_8402A3C, 131, -80, -64, 40, 32, 30
- pause 20
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, 0, 1, 1
- createtask sub_80A7FA0, 2, 1, 5, 0, 20, 1
- wait
- pause 10
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_8402A3C, 131, -48, -64, 72, 32, 30
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_8402A3C, 131, -112, -64, 8, 32, 30
+ delay 40
+ createsprite gBattleAnimSpriteTemplate_83DA024, 131, 0, 0, 0, 30
+ createsprite gBattleAnimSpriteTemplate_8402A3C, 131, -80, -64, 40, 32, 30
+ delay 20
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 5, 0, 20, 1
+ waitforvisualfinish
+ delay 10
restorebg
waitbgfadein
- wait
+ waitforvisualfinish
end
Move_REVENGE: @ 81D3B99
- loadsprite 10245
- monbg 1
- setalpha 12, 8
- panse_19 SE_W036, 192
- sprite gBattleAnimSpriteTemplate_83DA198, 2, 10, -10
- wait
- createtask sub_80E1F8C, 2, 2, 0, 4, 2, 8, 31
- wait
- unloadsprite 10245
- loadsprite 10246
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 6, 4
- pause 4
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83DA1E0, 130, 10, -10
- wait
- unloadsprite 10246
- loadsprite 10135
- createtask sub_80A7FA0, 2, 1, 3, 0, 10, 1
- sprite gBattleAnimSpriteTemplate_83DB550, 131, -10, -8, 1, 1, 8
- panse_19 SE_W233B, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB550, 131, 10, 8, 1, 1, 8
- panse_19 SE_W025B, 63
- wait
- clearmonbg 1
+ loadspritegfx 10245
+ monbg ANIM_BANK_TARGET
+ setalpha 12, 8
+ playsewithpan SE_W036, 192
+ createsprite gBattleAnimSpriteTemplate_83DA198, 2, 10, -10
+ waitforvisualfinish
+ createvisualtask sub_80E1F8C, 2, 2, 0, 4, 2, 8, 31
+ waitforvisualfinish
+ unloadspritegfx 10245
+ loadspritegfx 10246
+ createsprite gHorizontalLungeSpriteTemplate, 2, 6, 4
+ delay 4
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83DA1E0, 130, 10, -10
+ waitforvisualfinish
+ unloadspritegfx 10246
+ loadspritegfx 10135
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 3, 0, 10, 1
+ createsprite gBattleAnimSpriteTemplate_83DB550, 131, -10, -8, 1, 1, 8
+ playsewithpan SE_W233B, 63
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DB550, 131, 10, 8, 1, 1, 8
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_POISON_FANG: @ 81D3C30
- loadsprite 10192
- loadsprite 10150
- panse_19 SE_W044, 63
- sprite gBattleAnimSpriteTemplate_840233C, 130
- pause 10
- createtask sub_80A7E7C, 3, 1, 3, 0, 10, 1
- wait
- createtask sub_80E1F8C, 2, 4, 0, 4, 0, 12, 26650
- call Unknown_81D5F87
- wait
+ loadspritegfx 10192
+ loadspritegfx 10150
+ playsewithpan SE_W044, 63
+ createsprite gBattleAnimSpriteTemplate_840233C, 130
+ delay 10
+ createvisualtask AnimTask_ShakeMon, 3, 1, 3, 0, 10, 1
+ waitforvisualfinish
+ createvisualtask sub_80E1F8C, 2, 4, 0, 4, 0, 12, 26650
+ call PoisonBubblesAnim
+ waitforvisualfinish
end
Move_SUBSTITUTE: @ 81D3C6F
- panse_19 SE_W213, 192
- createtask sub_81312E4, 2
+ playsewithpan SE_W213, 192
+ createvisualtask sub_81312E4, 2
end
Move_FRENZY_PLANT: @ 81D3C7B
- loadsprite 10223
- loadsprite 10135
- monbg 1
+ loadspritegfx 10223
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 2, 0, 5, 0
- wait
- sprite gBattleAnimSpriteTemplate_83D6670, 2, 10, 8, 2, 0, 0, 100
- panse_19 SE_W010, 192
- pause 5
- sprite gBattleAnimSpriteTemplate_83D6670, 2, 20, -8, -2, 0, 1, 95
- panse_19 SE_W010, 213
- pause 5
- sprite gBattleAnimSpriteTemplate_83D6670, 2, 30, 8, -4, 0, 0, 90
- panse_19 SE_W010, 234
- pause 5
- sprite gBattleAnimSpriteTemplate_83D6670, 2, 40, -8, 4, 0, 1, 85
- panse_19 SE_W010, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83D6670, 2, 50, 8, 0, 0, 0, 85
- panse_19 SE_W010, 21
- pause 5
- sprite gBattleAnimSpriteTemplate_83D6670, 2, 60, -8, -2, 0, 1, 85
- panse_19 SE_W010, 42
- pause 5
- sprite gBattleAnimSpriteTemplate_83D6670, 2, 75, 8, 0, 0, 0, 85
- panse_19 SE_W010, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83D6670, 2, 85, 16, 6, 0, 3, 80
- panse_19 SE_W010, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83D6670, 2, 85, -16, -6, 0, 2, 75
- panse_19 SE_W010, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, -10, 1, 3
- panse_19 SE_W003, 63
- createtask sub_80A7E7C, 3, 1, 8, 0, 20, 1
- pause 3
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 10, 8, 1, 3
- panse_19 SE_W003, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 10, -3, 1, 2
- panse_19 SE_W003, 63
- pause 3
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -3, 1, 1, 2
- panse_19 SE_W003, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, 1, 1, 1
- panse_19 SE_W003, 63
- pause 2
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 10, 1, 1
- panse_19 SE_W003, 63
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 2, 5, 0, 0
- wait
- clearmonbg 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 2, 0, 5, 0
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83D6670, 2, 10, 8, 2, 0, 0, 100
+ playsewithpan SE_W010, 192
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D6670, 2, 20, -8, -2, 0, 1, 95
+ playsewithpan SE_W010, 213
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D6670, 2, 30, 8, -4, 0, 0, 90
+ playsewithpan SE_W010, 234
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D6670, 2, 40, -8, 4, 0, 1, 85
+ playsewithpan SE_W010, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D6670, 2, 50, 8, 0, 0, 0, 85
+ playsewithpan SE_W010, 21
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D6670, 2, 60, -8, -2, 0, 1, 85
+ playsewithpan SE_W010, 42
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D6670, 2, 75, 8, 0, 0, 0, 85
+ playsewithpan SE_W010, 63
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D6670, 2, 85, 16, 6, 0, 3, 80
+ playsewithpan SE_W010, 63
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83D6670, 2, 85, -16, -6, 0, 2, 75
+ playsewithpan SE_W010, 63
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, -10, 1, 3
+ playsewithpan SE_W003, 63
+ createvisualtask AnimTask_ShakeMon, 3, 1, 8, 0, 20, 1
+ delay 3
+ createsprite gBasicHitSplatSpriteTemplate, 2, 10, 8, 1, 3
+ playsewithpan SE_W003, 63
+ delay 3
+ createsprite gBasicHitSplatSpriteTemplate, 2, 10, -3, 1, 2
+ playsewithpan SE_W003, 63
+ delay 3
+ createsprite gBasicHitSplatSpriteTemplate, 2, -3, 1, 1, 2
+ playsewithpan SE_W003, 63
+ delay 2
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, 1, 1, 1
+ playsewithpan SE_W003, 63
+ delay 2
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 10, 1, 1
+ playsewithpan SE_W003, 63
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 1, 2, 5, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Move_METAL_SOUND: @ 81D3E1F
- loadsprite 10260
- monbg 3
- monbgprio_2A 1
- createtask sub_80A7FA0, 2, 0, 2, 0, 8, 1
+ loadspritegfx 10260
+ monbg ANIM_BANK_DEF_PARTNER
+ monbgprio_2A ANIM_BANK_TARGET
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 2, 0, 8, 1
call _81D3E52
call _81D3E52
call _81D3E52
call _81D3E52
- wait
- clearmonbg 3
- pause 0
- wait
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ delay 0
+ waitforvisualfinish
end
_81D3E52:
panse_1B SE_W103, 192, 63, 2, 0
- sprite gBattleAnimSpriteTemplate_83D7564, 130, 16, 0, 0, 0, 30, 0
- pause 2
- ret
+ createsprite gBattleAnimSpriteTemplate_83D7564, 130, 16, 0, 0, 0, 30, 0
+ delay 2
+ return
Move_FOCUS_PUNCH: @ 81D3E6F
- jump _81D3E76
+ goto _81D3E76
_81D3E74:
- wait
+ waitforvisualfinish
end
_81D3E76:
- loadsprite 10135
- loadsprite 10143
- pause 1
- createtask sub_80E4200, 2
- jumpvareq 7, 1, _81D3F2F
- createtask sub_812C924, 2
- jumpvareq 7, 0, _81D3F21
- jumpvareq 7, 1, _81D3F28
+ loadspritegfx 10135
+ loadspritegfx 10143
+ delay 1
+ createvisualtask sub_80E4200, 2
+ jumpargeq 7, 1, _81D3F2F
+ createvisualtask sub_812C924, 2
+ jumpargeq 7, 0, _81D3F21
+ jumpargeq 7, 1, _81D3F28
_81D3EA4:
waitbgfadein
- monbg 3
- setalpha 12, 8
- panse_19 SE_W207, 63
- sprite gBattleAnimSpriteTemplate_83DA214, 130
- pause 10
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, -8, 1, 0
- createtask sub_80A7E7C, 5, 1, 8, 0, 24, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 10, 2, 1, 0
- panse_19 SE_W233B, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 10, -6, 1, 0
- panse_19 SE_W233B, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 8, 1, 0
- panse_19 SE_W025B, 63
- wait
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W207, 63
+ createsprite gBattleAnimSpriteTemplate_83DA214, 130
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 8, 0, 24, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 2, 10, 2, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 2, 10, -6, 1, 0
+ playsewithpan SE_W233B, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 8, 1, 0
+ playsewithpan SE_W025B, 63
+ waitforvisualfinish
restorebg
waitbgfadein
- clearmonbg 3
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
- jump _81D3E74
+ goto _81D3E74
_81D3F21:
fadetobg 4
- jump _81D3EA4
+ goto _81D3EA4
_81D3F28:
fadetobg 5
- jump _81D3EA4
+ goto _81D3EA4
_81D3F2F:
fadetobg 6
- jump _81D3EA4
+ goto _81D3EA4
Move_RETURN: @ 81D3F36
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- createtask sub_81318F0, 2
- pause 2
- jumpvareq 7, 0, _81D3F6C
- jumpvareq 7, 1, _81D3FBE
- jumpvareq 7, 2, _81D401E
- jumpvareq 7, 3, _81D4139
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ createvisualtask sub_81318F0, 2
+ delay 2
+ jumpargeq 7, 0, _81D3F6C
+ jumpargeq 7, 1, _81D3FBE
+ jumpargeq 7, 2, _81D401E
+ jumpargeq 7, 3, _81D4139
_81D3F67:
- wait
- clearmonbg 3
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81D3F6C:
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 16, 1, 0
- createtask sub_812B340, 5, 167, -64
- wait
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 16, 1, 0
- createtask sub_812B340, 5, 167, -64
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, -8, 1, 2
- createtask sub_812B30C, 5, 139, 63
- jump _81D3F67
+ createsprite gVerticalDipSpriteTemplate, 2, 16, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, 2, 16, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2
+ createvisualtask sub_812B30C, 5, 139, 63
+ goto _81D3F67
_81D3FBE:
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0
- createtask sub_812B340, 5, 167, -64
- wait
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0
- createtask sub_812B340, 5, 167, -64
- wait
- pause 11
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 5, 4
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 3, 0, 0, 1, 2
- createtask sub_812B30C, 5, 141, 63
- jump _81D3F67
+ createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ waitforvisualfinish
+ delay 11
+ createsprite gHorizontalLungeSpriteTemplate, 2, 5, 4
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 3, 0, 0, 1, 2
+ createvisualtask sub_812B30C, 5, 141, 63
+ goto _81D3F67
_81D401E:
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0
- createtask sub_812B340, 5, 167, -64
- wait
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0
- createtask sub_812B340, 5, 167, -64
- wait
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0
- createtask sub_812B340, 5, 167, -64
- wait
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 6, 1, 0
- createtask sub_812B340, 5, 167, -64
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, -8, 1, 2
- createtask sub_812B30C, 5, 123, 63
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 10, 10, 1, 2
- createtask sub_812B30C, 5, 123, 63
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 3, -5, 1, 2
- createtask sub_812B30C, 5, 123, 63
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -5, 3, 1, 2
- createtask sub_812B30C, 5, 123, 63
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- jump _81D3F67
+ createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, 2, 6, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2
+ createvisualtask sub_812B30C, 5, 123, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 2, 10, 10, 1, 2
+ createvisualtask sub_812B30C, 5, 123, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 2, 3, -5, 1, 2
+ createvisualtask sub_812B30C, 5, 123, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 2, -5, 3, 1, 2
+ createvisualtask sub_812B30C, 5, 123, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ goto _81D3F67
_81D4139:
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 6, 0
- wait
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 16, 1, 0
- createtask sub_812B340, 5, 167, -64
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 3, -5, 1, 2
- createtask sub_812B30C, 5, 123, 63
- wait
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 12, 1, 0
- createtask sub_812B340, 5, 167, -64
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, -8, 1, 2
- createtask sub_812B30C, 5, 123, 63
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- wait
- pause 4
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 8, 1, 0
- createtask sub_812B340, 5, 167, -64
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, -8, 1, 2
- createtask sub_812B30C, 5, 123, 63
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- wait
- pause 2
- createtask sub_80E2DD8, 2, 0, 4, 5, 1
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 4, 1, 0
- createtask sub_812B340, 5, 167, -64
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, -8, 1, 2
- createtask sub_812B30C, 5, 123, 63
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- createtask sub_80E2DD8, 2, 0, 4, 5, 1
- wait
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 4, 2, 0
- createtask sub_812B340, 5, 167, -64
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, -8, 1, 2
- createtask sub_812B30C, 5, 123, 63
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- createtask sub_80E2DD8, 2, 0, 4, 5, 1
- wait
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 6, 0
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, 2, 16, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 2, 3, -5, 1, 2
+ createvisualtask sub_812B30C, 5, 123, 63
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, 2, 12, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2
+ createvisualtask sub_812B30C, 5, 123, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ waitforvisualfinish
+ delay 4
+ createsprite gVerticalDipSpriteTemplate, 2, 8, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2
+ createvisualtask sub_812B30C, 5, 123, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ waitforvisualfinish
+ delay 2
+ createvisualtask sub_80E2DD8, 2, 0, 4, 5, 1
+ createsprite gVerticalDipSpriteTemplate, 2, 4, 1, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2
+ createvisualtask sub_812B30C, 5, 123, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ createvisualtask sub_80E2DD8, 2, 0, 4, 5, 1
+ waitforvisualfinish
+ createsprite gVerticalDipSpriteTemplate, 2, 4, 2, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ delay 5
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 2
+ createvisualtask sub_812B30C, 5, 123, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ createvisualtask sub_80E2DD8, 2, 0, 4, 5, 1
+ waitforvisualfinish
call _81D4371
call _81D4371
call _81D4371
call _81D4371
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -10, -8, 1, 0
- createtask sub_812B30C, 5, 141, 63
- createtask sub_80A7E7C, 5, 1, 8, 0, 24, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 10, 10, 1, 0
- createtask sub_812B30C, 5, 141, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 3, -5, 1, 0
- createtask sub_812B30C, 5, 141, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, -5, 3, 1, 0
- createtask sub_812B30C, 5, 141, 63
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 6, 0, 0
- jump _81D3F67
+ createsprite gBasicHitSplatSpriteTemplate, 2, -10, -8, 1, 0
+ createvisualtask sub_812B30C, 5, 141, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 8, 0, 24, 1
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 2, 10, 10, 1, 0
+ createvisualtask sub_812B30C, 5, 141, 63
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 2, 3, -5, 1, 0
+ createvisualtask sub_812B30C, 5, 141, 63
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 2, -5, 3, 1, 0
+ createvisualtask sub_812B30C, 5, 141, 63
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 6, 0, 0
+ goto _81D3F67
_81D4371:
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 4, 3, 0
- createtask sub_812B340, 5, 167, -64
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_812B30C, 5, 123, 63
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- createtask sub_80E2DD8, 2, 0, 4, 5, 1
- wait
- ret
+ createsprite gVerticalDipSpriteTemplate, 2, 4, 3, ANIM_BANK_ATTACKER
+ createvisualtask sub_812B340, 5, 167, -64
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask sub_812B30C, 5, 123, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ createvisualtask sub_80E2DD8, 2, 0, 4, 5, 1
+ waitforvisualfinish
+ return
Move_COSMIC_POWER: @ 81D43C5
- loadsprite 10049
- createtask sub_812B340, 5, 243, 0
- panse_19 SE_W322, 0
- createtask sub_80E3A08, 2, 0, 0, 15, 0
- wait
+ loadspritegfx 10049
+ createvisualtask sub_812B340, 5, 243, 0
+ playsewithpan SE_W322, 0
+ createvisualtask sub_80E3A08, 2, 0, 0, 15, 0
+ waitforvisualfinish
fadetobg 16
waitbgfadeout
- createtask sub_80E3A58, 2, 0, 128, 0, -1
+ createvisualtask sub_80E3A58, 2, 0, 128, 0, -1
waitbgfadein
- pause 70
- createtask sub_812B30C, 5, 228, -64
- sprite gBattleAnimSpriteTemplate_83D6C88, 2, -15, 0, 0, 0, 32, 60
- pause 8
- sprite gBattleAnimSpriteTemplate_83D6C88, 2, 12, -5, 0, 0, 32, 60
- pause 40
- createtask sub_80E3A08, 2, 0, 15, 0, 0
- wait
+ delay 70
+ createvisualtask sub_812B30C, 5, 228, -64
+ createsprite gBattleAnimSpriteTemplate_83D6C88, 2, -15, 0, 0, 0, 32, 60
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83D6C88, 2, 12, -5, 0, 0, 32, 60
+ delay 40
+ createvisualtask sub_80E3A08, 2, 0, 15, 0, 0
+ waitforvisualfinish
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
- wait
+ waitforvisualfinish
end
Move_BLAST_BURN: @ 81D444A
- loadsprite 10035
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- panse_19 SE_W221, 192
- sprite gBattleAnimSpriteTemplate_83D9538, 2, -32, 0, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 2, -20, -10, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 66, 0, -16, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 66, 20, -10, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 66, 32, 0, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 66, 20, 10, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 2, 0, 16, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 2, -20, 10, 24, 0, 0, 0
- pause 25
- panse_19 SE_W172B, 192
- sprite gBattleAnimSpriteTemplate_83D9538, 2, -64, 0, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 6, -40, -20, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 70, 0, -32, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 70, 40, -20, 24, 0, 0, 0
- createtask sub_80A7E7C, 5, 1, 6, 0, 8, 1
- sprite gBattleAnimSpriteTemplate_83D9538, 66, 64, 0, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 66, 40, 20, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 2, 0, 32, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 2, -40, 20, 24, 0, 0, 0
- createtask sub_80E2324, 2, 257, 257, 257
- pause 25
- panse_19 SE_W172B, 192
- sprite gBattleAnimSpriteTemplate_83D9538, 2, -96, 0, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 6, -60, -30, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 70, 0, -48, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 70, 60, -30, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, -4, 3, 1, 0
- createtask sub_80A7E7C, 5, 1, 12, 0, 20, 1
- createtask sub_80E26BC, 2, 2, 0, 10, 1
- sprite gBattleAnimSpriteTemplate_83D9538, 66, 96, 0, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 66, 60, 30, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 2, 0, 48, 24, 0, 0, 0
- sprite gBattleAnimSpriteTemplate_83D9538, 2, -60, 30, 24, 0, 0, 0
- createtask sub_80E2324, 2, 257, 257, 257
- wait
- clearmonbg 3
+ loadspritegfx 10035
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W221, 192
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, -32, 0, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, -20, -10, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, 0, -16, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, 20, -10, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, 32, 0, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, 20, 10, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, 0, 16, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, -20, 10, 24, 0, 0, 0
+ delay 25
+ playsewithpan SE_W172B, 192
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, -64, 0, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 6, -40, -20, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 70, 0, -32, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 70, 40, -20, 24, 0, 0, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 6, 0, 8, 1
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, 64, 0, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, 40, 20, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, 0, 32, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, -40, 20, 24, 0, 0, 0
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 25
+ playsewithpan SE_W172B, 192
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, -96, 0, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 6, -60, -30, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 70, 0, -48, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 70, 60, -30, 24, 0, 0, 0
+ createsprite gBasicHitSplatSpriteTemplate, 130, -4, 3, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 12, 0, 20, 1
+ createvisualtask sub_80E26BC, 2, 2, 0, 10, 1
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, 96, 0, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 66, 60, 30, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, 0, 48, 24, 0, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83D9538, 2, -60, 30, 24, 0, 0, 0
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_ROCK_TOMB: @ 81D468C
- loadsprite 10250
- loadsprite 10058
- createtask sub_80E26BC, 2, 2, 0, 10, 1
- wait
- sprite gBattleAnimSpriteTemplate_83DADA8, 130, 20, 12, 64, 114, 0
- pause 8
- createtask sub_80E26BC, 2, 0, 2, 3, 1
- panse_19 SE_W070, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DADA8, 130, -20, 12, 64, 98, 0
- pause 8
- createtask sub_80E26BC, 2, 0, 2, 3, 1
- panse_19 SE_W070, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DADA8, 194, 3, 6, 64, 82, 0
- pause 8
- createtask sub_80E26BC, 2, 0, 2, 3, 1
- panse_19 SE_W070, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DADA8, 130, -3, 13, 64, 66, 0
- pause 8
- createtask sub_80E26BC, 2, 0, 2, 3, 1
- panse_19 SE_W070, 63
- pause 24
- panse_19 SE_W063, 63
- sprite gBattleAnimSpriteTemplate_83DA8F4, 133, 1, 50
- createtask sub_80A7E7C, 5, 1, 3, 0, 20, 1
- createtask sub_80E26BC, 2, 2, 0, 10, 1
- wait
+ loadspritegfx 10250
+ loadspritegfx 10058
+ createvisualtask sub_80E26BC, 2, 2, 0, 10, 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DADA8, 130, 20, 12, 64, 114, 0
+ delay 8
+ createvisualtask sub_80E26BC, 2, 0, 2, 3, 1
+ playsewithpan SE_W070, 63
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DADA8, 130, -20, 12, 64, 98, 0
+ delay 8
+ createvisualtask sub_80E26BC, 2, 0, 2, 3, 1
+ playsewithpan SE_W070, 63
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DADA8, 194, 3, 6, 64, 82, 0
+ delay 8
+ createvisualtask sub_80E26BC, 2, 0, 2, 3, 1
+ playsewithpan SE_W070, 63
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DADA8, 130, -3, 13, 64, 66, 0
+ delay 8
+ createvisualtask sub_80E26BC, 2, 0, 2, 3, 1
+ playsewithpan SE_W070, 63
+ delay 24
+ playsewithpan SE_W063, 63
+ createsprite gBattleAnimSpriteTemplate_83DA8F4, 133, 1, 50
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 20, 1
+ createvisualtask sub_80E26BC, 2, 2, 0, 10, 1
+ waitforvisualfinish
end
Move_SILVER_WIND: @ 81D4773
- loadsprite 10271
+ loadspritegfx 10271
panse_1B SE_W016, 192, 63, 2, 0
- panse_19 SE_W234, 0
- pause 0
- monbg 3
+ playsewithpan SE_W234, 0
+ delay 0
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_29
- pause 0
- createtask sub_80E2A7C, 10, 1, 0, 0, 4, 0
- createtask sub_80E3B78, 2
- jumpvareq 7, 1, _81D4974
+ delay 0
+ createvisualtask sub_80E2A7C, 10, 1, 0, 0, 4, 0
+ createvisualtask sub_80E3B78, 2
+ jumpargeq 7, 1, _81D4974
fadetobg 22
waitbgfadeout
- createtask sub_80E3A58, 5, 1536, 0, 0, -1
+ createvisualtask sub_80E3A58, 5, 1536, 0, 0, -1
_81D47BA:
- pause 0
- createtask sub_80E2A38, 10, 1, 0, 4, 4, 0
+ delay 0
+ createvisualtask sub_80E2A38, 10, 1, 0, 4, 4, 0
waitbgfadein
- sprite gBattleAnimSpriteTemplate_83D693C, 194, -32, 16, 0, 6, 2, 3, 1
- sprite gBattleAnimSpriteTemplate_83D693C, 194, -8, 18, 64, 3, 2, 2, 1
- sprite gBattleAnimSpriteTemplate_83D693C, 120, -24, 18, 90, 5, 1, 2, 1
- sprite gBattleAnimSpriteTemplate_83D693C, 120, -40, 14, 128, 4, 1, 2, 1
- pause 0
- sprite gBattleAnimSpriteTemplate_83D6954, 194, -32, 16, 0, 6, 2, 3, 1
- sprite gBattleAnimSpriteTemplate_83D6954, 194, -8, 18, 64, 3, 2, 2, 1
- sprite gBattleAnimSpriteTemplate_83D6954, 120, -24, 18, 90, 5, 1, 2, 1
- sprite gBattleAnimSpriteTemplate_83D6954, 120, -40, 14, 128, 4, 1, 2, 1
- pause 0
- sprite gBattleAnimSpriteTemplate_83D696C, 194, -32, 16, 0, 6, 2, 3, 1
- sprite gBattleAnimSpriteTemplate_83D696C, 194, -8, 18, 64, 3, 2, 2, 1
- sprite gBattleAnimSpriteTemplate_83D696C, 120, -24, 18, 90, 5, 1, 2, 1
- sprite gBattleAnimSpriteTemplate_83D696C, 120, -40, 14, 128, 4, 1, 2, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83D693C, 194, -4, 16, 0, 6, 1, 2, 1
- sprite gBattleAnimSpriteTemplate_83D693C, 194, -16, 12, 192, 5, 2, 3, 1
- pause 0
- sprite gBattleAnimSpriteTemplate_83D6954, 194, -4, 16, 0, 6, 1, 2, 1
- sprite gBattleAnimSpriteTemplate_83D6954, 194, -16, 12, 192, 5, 2, 3, 1
- pause 0
- sprite gBattleAnimSpriteTemplate_83D696C, 194, -4, 16, 0, 6, 1, 2, 1
- sprite gBattleAnimSpriteTemplate_83D696C, 194, -16, 12, 192, 5, 2, 3, 1
- wait
- panse_19 SE_W016B, 63
- clearmonbg 3
- pause 0
+ createsprite gBattleAnimSpriteTemplate_83D693C, 194, -32, 16, 0, 6, 2, 3, 1
+ createsprite gBattleAnimSpriteTemplate_83D693C, 194, -8, 18, 64, 3, 2, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D693C, 120, -24, 18, 90, 5, 1, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D693C, 120, -40, 14, 128, 4, 1, 2, 1
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83D6954, 194, -32, 16, 0, 6, 2, 3, 1
+ createsprite gBattleAnimSpriteTemplate_83D6954, 194, -8, 18, 64, 3, 2, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D6954, 120, -24, 18, 90, 5, 1, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D6954, 120, -40, 14, 128, 4, 1, 2, 1
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83D696C, 194, -32, 16, 0, 6, 2, 3, 1
+ createsprite gBattleAnimSpriteTemplate_83D696C, 194, -8, 18, 64, 3, 2, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D696C, 120, -24, 18, 90, 5, 1, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D696C, 120, -40, 14, 128, 4, 1, 2, 1
+ delay 6
+ createsprite gBattleAnimSpriteTemplate_83D693C, 194, -4, 16, 0, 6, 1, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D693C, 194, -16, 12, 192, 5, 2, 3, 1
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83D6954, 194, -4, 16, 0, 6, 1, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D6954, 194, -16, 12, 192, 5, 2, 3, 1
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83D696C, 194, -4, 16, 0, 6, 1, 2, 1
+ createsprite gBattleAnimSpriteTemplate_83D696C, 194, -16, 12, 192, 5, 2, 3, 1
+ waitforvisualfinish
+ playsewithpan SE_W016B, 63
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ delay 0
restorebg
waitbgfadeout
- createtask sub_80E2A7C, 10, 1, 0, 4, 0, 0
- setvar 7, -1
+ createvisualtask sub_80E2A7C, 10, 1, 0, 4, 0, 0
+ setarg 7, -1
waitbgfadein
end
_81D4974:
fadetobg 23
waitbgfadeout
- createtask sub_80E3A58, 5, -1536, 0, 0, -1
- jump _81D47BA
+ createvisualtask sub_80E3A58, 5, -1536, 0, 0, -1
+ goto _81D47BA
Move_SNATCH: @ 81D498B
- panse_19 SE_W036, 192
- createtask sub_80A8920, 5, 0, -12, 4, 10, 10, 12, 6
+ playsewithpan SE_W036, 192
+ createvisualtask AnimTask_WindUpLunge, 5, ANIM_BANK_ATTACKER, -12, 4, 10, 10, 12, 6
end
Move_DIVE: @ 81D49A5
- loadsprite 10272
- loadsprite 10273
- ifelse _81D49B4, _81D4A09
+ loadspritegfx 10272
+ loadspritegfx 10273
+ choosetwoturnanim _81D49B4, _81D4A09
_81D49B4:
- loadsprite 10156
- panse_19 SE_W029, 192
- sprite gBattleAnimSpriteTemplate_83DA5D8, 2, 0, 0, 13, 336
- wait
- panse_19 SE_W291, 192
- sprite gBattleAnimSpriteTemplate_83DA614, 3, 0
+ loadspritegfx 10156
+ playsewithpan SE_W029, 192
+ createsprite gBattleAnimSpriteTemplate_83DA5D8, 2, 0, 0, 13, 336
+ waitforvisualfinish
+ playsewithpan SE_W291, 192
+ createsprite gBattleAnimSpriteTemplate_83DA614, 3, 0
call _81D49F2
call _81D49F2
call _81D49F2
@@ -9194,578 +9196,578 @@ _81D49B4:
call _81D49F2
end
_81D49F2:
- sprite gBattleAnimSpriteTemplate_83DA62C, 5, 0, 0
- sprite gBattleAnimSpriteTemplate_83DA62C, 5, 1, 0
- ret
+ createsprite gBattleAnimSpriteTemplate_83DA62C, 5, 0, 0
+ createsprite gBattleAnimSpriteTemplate_83DA62C, 5, 1, 0
+ return
_81D4A09:
- loadsprite 10148
- loadsprite 10155
- monbg 3
+ loadspritegfx 10148
+ loadspritegfx 10155
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- panse_19 SE_W153, 63
- sprite gBattleAnimSpriteTemplate_83DA614, 131, 1
+ playsewithpan SE_W153, 63
+ createsprite gBattleAnimSpriteTemplate_83DA614, 131, 1
call _81D4A48
call _81D4A48
call _81D4A48
call _81D4A48
call _81D4A48
- pause 12
+ delay 12
call _81C9502
- wait
+ waitforvisualfinish
visible 0
- clearmonbg 3
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81D4A48:
- sprite gBattleAnimSpriteTemplate_83DA62C, 133, 0, 1
- sprite gBattleAnimSpriteTemplate_83DA62C, 133, 1, 1
- ret
+ createsprite gBattleAnimSpriteTemplate_83DA62C, 133, 0, 1
+ createsprite gBattleAnimSpriteTemplate_83DA62C, 133, 1, 1
+ return
Move_ROCK_BLAST: @ 81D4A5F
- loadsprite 10058
- loadsprite 10135
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 6
- pause 3
- panse_19 SE_W207, 192
- sprite gBattleAnimSpriteTemplate_83DADE8, 130, 16, 0, 0, 0, 25, 257
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, 0, 1, 1
- panse_19 SE_W088, 63
- sprite gBattleAnimSpriteTemplate_83DAC64, 130, 0, 0, 20, 24, 14, 2
- createtask sub_80A7E7C, 2, 1, 3, 0, 5, 1
- sprite gBattleAnimSpriteTemplate_83DAC64, 130, 5, 0, -20, 24, 14, 1
- sprite gBattleAnimSpriteTemplate_83DAC64, 130, 0, 5, 20, -24, 14, 2
- sprite gBattleAnimSpriteTemplate_83DAC64, 130, -5, 0, -20, -24, 14, 2
- wait
+ loadspritegfx 10058
+ loadspritegfx 10135
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 6
+ delay 3
+ playsewithpan SE_W207, 192
+ createsprite gBattleAnimSpriteTemplate_83DADE8, 130, 16, 0, 0, 0, 25, 257
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 1
+ playsewithpan SE_W088, 63
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 130, 0, 0, 20, 24, 14, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 5, 1
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 130, 5, 0, -20, 24, 14, 1
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 130, 0, 5, 20, -24, 14, 2
+ createsprite gBattleAnimSpriteTemplate_83DAC64, 130, -5, 0, -20, -24, 14, 2
+ waitforvisualfinish
end
Move_OVERHEAT: @ 81D4AFC
- loadsprite 10029
- loadsprite 10135
- monbg 3
+ loadspritegfx 10029
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 18
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 5, 28
- wait
- createtask sub_80E4028, 5, 0, 1
- pause 1
- createtask sub_80E4178, 5, 0
- pause 1
- panse_19 SE_W082, 192
- createtask sub_80E4028, 5, 1, 0
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 1, 0, 13, 28
- createtask sub_80A7E7C, 5, 0, 2, 0, 15, 1
- wait
- panse_19 SE_W172B, 192
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 0, 30, 25, -20
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 32, 30, 25, -20
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 64, 30, 25, -20
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 96, 30, 25, -20
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 128, 30, 25, -20
- sprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 160, 30, 25, -20
- sprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 192, 30, 25, -20
- sprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 224, 30, 25, -20
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 0, 30, 25, 0
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 32, 30, 25, 0
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 64, 30, 25, 0
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 96, 30, 25, 0
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 128, 30, 25, 0
- sprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 160, 30, 25, 0
- sprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 192, 30, 25, 0
- sprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 224, 30, 25, 0
- pause 5
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 0, 30, 25, 10
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 32, 30, 25, 10
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 64, 30, 25, 10
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 96, 30, 25, 10
- sprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 128, 30, 25, 10
- sprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 160, 30, 25, 10
- sprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 192, 30, 25, 10
- sprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 224, 30, 25, 10
- pause 5
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, -5, 3, 1, 0
- panse_19 SE_W007, 63
- createtask sub_80A7E7C, 2, 1, 10, 0, 25, 1
- pause 6
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 8, -5, 1, 0
- panse_19 SE_W007, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 10, 10, 1, 0
- panse_19 SE_W007, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, 0, 1, 0
- panse_19 SE_W007, 63
- createtask sub_80E4178, 5, 1
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, -1, 0, 13, 19026
- createtask sub_80A7E7C, 5, 0, 3, 0, 15, 1
- wait
- createtask sub_80E40D0, 5, 0, 1
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 5, 0, 28
- wait
- clearmonbg 3
- blendoff
- wait
- pause 15
- createtask sub_80E40D0, 5, 1, 0
- pause 1
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 13, 0, 19026
- wait
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 5, 28
+ waitforvisualfinish
+ createvisualtask sub_80E4028, 5, 0, 1
+ delay 1
+ createvisualtask sub_80E4178, 5, 0
+ delay 1
+ playsewithpan SE_W082, 192
+ createvisualtask sub_80E4028, 5, 1, 0
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 1, 0, 13, 28
+ createvisualtask AnimTask_ShakeMon, 5, 0, 2, 0, 15, 1
+ waitforvisualfinish
+ playsewithpan SE_W172B, 192
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 0, 30, 25, -20
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 32, 30, 25, -20
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 64, 30, 25, -20
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 96, 30, 25, -20
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 128, 30, 25, -20
+ createsprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 160, 30, 25, -20
+ createsprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 192, 30, 25, -20
+ createsprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 224, 30, 25, -20
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 0, 30, 25, 0
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 32, 30, 25, 0
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 64, 30, 25, 0
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 96, 30, 25, 0
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 128, 30, 25, 0
+ createsprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 160, 30, 25, 0
+ createsprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 192, 30, 25, 0
+ createsprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 224, 30, 25, 0
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 0, 30, 25, 10
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 32, 30, 25, 10
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 64, 30, 25, 10
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 96, 30, 25, 10
+ createsprite gBattleAnimSpriteTemplate_83DB100, 2, 1, 128, 30, 25, 10
+ createsprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 160, 30, 25, 10
+ createsprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 192, 30, 25, 10
+ createsprite gBattleAnimSpriteTemplate_83DB100, 66, 1, 224, 30, 25, 10
+ delay 5
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 131, -5, 3, 1, 0
+ playsewithpan SE_W007, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 10, 0, 25, 1
+ delay 6
+ createsprite gBasicHitSplatSpriteTemplate, 131, 8, -5, 1, 0
+ playsewithpan SE_W007, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 131, 10, 10, 1, 0
+ playsewithpan SE_W007, 63
+ delay 8
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 0
+ playsewithpan SE_W007, 63
+ createvisualtask sub_80E4178, 5, 1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, -1, 0, 13, 19026
+ createvisualtask AnimTask_ShakeMon, 5, 0, 3, 0, 15, 1
+ waitforvisualfinish
+ createvisualtask sub_80E40D0, 5, 0, 1
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 5, 0, 28
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ blendoff
+ waitforvisualfinish
+ delay 15
+ createvisualtask sub_80E40D0, 5, 1, 0
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 0, 13, 0, 19026
+ waitforvisualfinish
end
Move_HYDRO_CANNON: @ 81D4DDE
- loadsprite 10149
- loadsprite 10148
- monbg 3
- setalpha 12, 8
- panse_19 SE_W057, 192
- sprite gBattleAnimSpriteTemplate_83D92D0, 130
- pause 10
- createtask sub_80E2324, 2, 257, 257, 257
- pause 30
+ loadspritegfx 10149
+ loadspritegfx 10148
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ playsewithpan SE_W057, 192
+ createsprite gBattleAnimSpriteTemplate_83D92D0, 130
+ delay 10
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ delay 30
panse_1B SE_W056, 192, 63, 2, 0
call _81D4EA8
- createtask sub_80A7E7C, 5, 1, 10, 0, 40, 1
- sprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
+ createvisualtask AnimTask_ShakeMon, 5, 1, 10, 0, 40, 1
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
call _81D4EA8
- sprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
call _81D4EA8
- sprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
call _81D4EA8
- sprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
call _81D4EA8
- sprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
call _81D4EA8
- sprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
- wait
- createtask sub_80E2324, 2, 257, 257, 257
- wait
- clearmonbg 3
+ createsprite gBattleAnimSpriteTemplate_83DB4D8, 130, 0, 0, 1, 0
+ waitforvisualfinish
+ createvisualtask sub_80E2324, 2, 257, 257, 257
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81D4EA8:
- sprite gBattleAnimSpriteTemplate_83D92E8, 130, 10, -10, 0, 0, 15, 257
- pause 1
- sprite gBattleAnimSpriteTemplate_83D92E8, 130, 10, -10, 0, 0, 15, 257
- pause 1
- sprite gBattleAnimSpriteTemplate_83D92E8, 130, 10, -10, 0, 0, 15, 257
- pause 1
- sprite gBattleAnimSpriteTemplate_83D92E8, 130, 10, -10, 0, 0, 15, 257
- pause 1
- sprite gBattleAnimSpriteTemplate_83D92E8, 130, 10, -10, 0, 0, 15, 257
- ret
+ createsprite gBattleAnimSpriteTemplate_83D92E8, 130, 10, -10, 0, 0, 15, 257
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D92E8, 130, 10, -10, 0, 0, 15, 257
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D92E8, 130, 10, -10, 0, 0, 15, 257
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D92E8, 130, 10, -10, 0, 0, 15, 257
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D92E8, 130, 10, -10, 0, 0, 15, 257
+ return
Move_ASTONISH: @ 81D4F10
- loadsprite 10273
- panse_19 SE_W227, 192
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 6
- pause 25
- sprite gBattleAnimSpriteTemplate_83DA62C, 133, 0, 1
- panse_19 SE_W166, 63
- sprite gBattleAnimSpriteTemplate_83DA62C, 133, 1, 1
- createtask sub_80A7FA0, 2, 1, 4, 0, 5, 1
- createtask sub_80D1E38, 3
- wait
+ loadspritegfx 10273
+ playsewithpan SE_W227, 192
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 6
+ delay 25
+ createsprite gBattleAnimSpriteTemplate_83DA62C, 133, 0, 1
+ playsewithpan SE_W166, 63
+ createsprite gBattleAnimSpriteTemplate_83DA62C, 133, 1, 1
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 5, 1
+ createvisualtask sub_80D1E38, 3
+ waitforvisualfinish
end
Move_SEISMIC_TOSS: @ 81D4F58
- loadsprite 10135
- loadsprite 10058
- setvar 7, 0
- monbg 3
- setalpha 12, 8
- wait
- createtask sub_80DDA4C, 3
- pause 1
+ loadspritegfx 10135
+ loadspritegfx 10058
+ setarg 7, 0
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ waitforvisualfinish
+ createvisualtask sub_80DDA4C, 3
+ delay 1
fadetobg 17
waitbgfadeout
- createtask sub_80DDA8C, 3
- panse_19 SE_W327, 0
+ createvisualtask sub_80DDA8C, 3
+ playsewithpan SE_W327, 0
waitbgfadein
- wait
- createtask sub_80DDAF0, 3
- jumpvareq 7, 0, _81D4FAB
- jumpvareq 7, 1, _81D4FBC
- jumpvareq 7, 2, _81D4FD4
+ waitforvisualfinish
+ createvisualtask sub_80DDAF0, 3
+ jumpargeq 7, 0, _81D4FAB
+ jumpargeq 7, 1, _81D4FBC
+ jumpargeq 7, 2, _81D4FD4
_81D4FA0:
restorebg
waitbgfadeout
- setvar 7, 4095
+ setarg 7, 4095
waitbgfadein
- clearmonbg 3
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
_81D4FAB:
call _81D4FF3
- pause 16
+ delay 16
call _81D5054
- jump _81D4FA0
+ goto _81D4FA0
_81D4FBC:
call _81D4FF3
- pause 14
+ delay 14
call _81D5054
- pause 14
+ delay 14
call _81D4FF3
- jump _81D4FA0
+ goto _81D4FA0
_81D4FD4:
call _81D5054
- pause 10
+ delay 10
call _81D4FF3
- pause 10
+ delay 10
call _81D5054
- pause 10
+ delay 10
call _81D4FF3
- jump _81D4FA0
+ goto _81D4FA0
_81D4FF3:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, -10, -8, 1, 1
- panse_19 SE_W070, 63
- createtask sub_80A7E7C, 2, 1, 0, 3, 5, 1
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, -12, 27, 2, 3
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, 8, 28, 3, 4
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, -4, 30, 2, 3
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, 12, 25, 4, 4
- ret
+ createsprite gBasicHitSplatSpriteTemplate, 131, -10, -8, 1, 1
+ playsewithpan SE_W070, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 5, 1
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, -12, 27, 2, 3
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, 8, 28, 3, 4
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, -4, 30, 2, 3
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, 12, 25, 4, 4
+ return
_81D5054:
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 10, -8, 1, 1
- panse_19 SE_W088, 63
- createtask sub_80A7E7C, 2, 1, 0, 3, 5, 1
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, -12, 32, 3, 4
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, 8, 31, 2, 2
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, -4, 28, 2, 3
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, 12, 30, 4, 3
- ret
+ createsprite gBasicHitSplatSpriteTemplate, 131, 10, -8, 1, 1
+ playsewithpan SE_W088, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 5, 1
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, -12, 32, 3, 4
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, 8, 31, 2, 2
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, -4, 28, 2, 3
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, 12, 30, 4, 3
+ return
Move_MAGIC_COAT: @ 81D50B5
- loadsprite 10170
+ loadspritegfx 10170
setalpha 0, 16
- panse_1D SE_W112, 192, 15
- sprite gBattleAnimSpriteTemplate_83DA708, 3, 40, 0, 10170
- wait
- pause 1
+ waitplaysewithpan SE_W112, 192, 15
+ createsprite gBattleAnimSpriteTemplate_83DA708, 3, 40, 0, 10170
+ waitforvisualfinish
+ delay 1
blendoff
end
Move_WATER_PULSE: @ 81D50D2
- loadsprite 10155
- loadsprite 10288
- monbg 1
+ loadspritegfx 10155
+ loadspritegfx 10288
+ monbg ANIM_BANK_TARGET
monbgprio_28 1
- panse_19 SE_W145C, 192
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 7, 29472
- pause 10
- sprite gBattleAnimSpriteTemplate_83D9408, 66, 100, 100, 8, 1, 20, 40, 0
- sprite gBattleAnimSpriteTemplate_83D9408, 66, 20, 100, 16, 2, 10, 35, 1
- sprite gBattleAnimSpriteTemplate_83D9408, 66, 200, 80, 8, 1, 40, 20, 0
- sprite gBattleAnimSpriteTemplate_83D9408, 66, 80, 60, 10, 3, 20, 50, 0
- sprite gBattleAnimSpriteTemplate_83D9408, 66, 140, 100, 16, 1, 20, 30, 1
- panse_19 SE_W145C, 63
- wait
- panse_19 SE_W202, 192
- sprite gBattleAnimSpriteTemplate_83D757C, 130, 0, 0, 40, 15
- pause 5
- panse_19 SE_W202, 192
- sprite gBattleAnimSpriteTemplate_83D757C, 130, 0, 0, 40, 15
- pause 5
- panse_19 SE_W202, 192
- sprite gBattleAnimSpriteTemplate_83D757C, 130, 0, 0, 40, 15
- pause 13
- createtask sub_80A7E7C, 2, 1, 0, 8, 18, 1
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 7, 0, 29472
- wait
- clearmonbg 3
+ playsewithpan SE_W145C, 192
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 0, 0, 7, 29472
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D9408, 66, 100, 100, 8, 1, 20, 40, 0
+ createsprite gBattleAnimSpriteTemplate_83D9408, 66, 20, 100, 16, 2, 10, 35, 1
+ createsprite gBattleAnimSpriteTemplate_83D9408, 66, 200, 80, 8, 1, 40, 20, 0
+ createsprite gBattleAnimSpriteTemplate_83D9408, 66, 80, 60, 10, 3, 20, 50, 0
+ createsprite gBattleAnimSpriteTemplate_83D9408, 66, 140, 100, 16, 1, 20, 30, 1
+ playsewithpan SE_W145C, 63
+ waitforvisualfinish
+ playsewithpan SE_W202, 192
+ createsprite gBattleAnimSpriteTemplate_83D757C, 130, 0, 0, 40, 15
+ delay 5
+ playsewithpan SE_W202, 192
+ createsprite gBattleAnimSpriteTemplate_83D757C, 130, 0, 0, 40, 15
+ delay 5
+ playsewithpan SE_W202, 192
+ createsprite gBattleAnimSpriteTemplate_83D757C, 130, 0, 0, 40, 15
+ delay 13
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 8, 18, 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 7, 0, 29472
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
Move_PSYCHO_BOOST: @ 81D51C7
- loadsprite 10212
- monbg 2
+ loadspritegfx 10212
+ monbg ANIM_BANK_ATK_PARTNER
fadetobg 3
waitbgfadeout
- createtask sub_812C624, 5
+ createvisualtask sub_812C624, 5
waitbgfadein
- pause 6
- createtask sub_80E1F8C, 2, 1, 2, 8, 0, 10, 0
- pause 0
+ delay 6
+ createvisualtask sub_80E1F8C, 2, 1, 2, 8, 0, 10, 0
+ delay 0
monbgprio_28 0
setalpha 8, 8
- pause 10
- createtask sub_80A7E7C, 2, 0, 3, 0, 240, 0
- panse_1C SE_W060B, 192, 14, 10
- sprite gBattleAnimSpriteTemplate_83DAA68, 2
- pause 110
- panse_1C SE_W060B, 192, 7, 10
- wait
- createtask sub_80A7FA0, 2, 1, -8, 1, 24, 1
- panse_19 SE_W043, 63
- wait
- clearmonbg 2
+ delay 10
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_ATTACKER, 3, 0, 240, 0
+ loopsewithpan SE_W060B, 192, 14, 10
+ createsprite gBattleAnimSpriteTemplate_83DAA68, 2
+ delay 110
+ loopsewithpan SE_W060B, 192, 7, 10
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, -8, 1, 24, 1
+ playsewithpan SE_W043, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
call Unknown_81D61F3
end
Move_KNOCK_OFF: @ 81D523B
- loadsprite 10277
- loadsprite 10135
- sprite gBattleAnimSpriteTemplate_83C1FB0, 2, 4, 6
- pause 4
- panse_19 SE_W233, 63
- sprite gBattleAnimSpriteTemplate_8402AE4, 130, -16, -16
- pause 8
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 5, 1, 32767, 10, 0, 0
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, 0, 1, 2
- panse_19 SE_W004, 63
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -12, 10, 0, 3
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 5
- pause 3
- createtask sub_80A8154, 2, 1, 0, 3, 6, 1
- pause 5
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 6
- pause 10
- wait
+ loadspritegfx 10277
+ loadspritegfx 10135
+ createsprite gHorizontalLungeSpriteTemplate, 2, 4, 6
+ delay 4
+ playsewithpan SE_W233, 63
+ createsprite gBattleAnimSpriteTemplate_8402AE4, 130, -16, -16
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 5, 1, 32767, 10, 0, 0
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, 0, 1, 2
+ playsewithpan SE_W004, 63
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -12, 10, 0, 3
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 5
+ delay 3
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 0, 3, 6, 1
+ delay 5
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 6
+ delay 10
+ waitforvisualfinish
end
Move_DOOM_DESIRE: @ 81D52CB
- createtask sub_80E0EE8, 2
- pause 1
- monbg 2
- createtask sub_80E0E24, 5, 1, 0
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 0
- wait
+ createvisualtask sub_80E0EE8, 2
+ delay 1
+ monbg ANIM_BANK_ATK_PARTNER
+ createvisualtask sub_80E0E24, 5, 1, 0
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 0
+ waitforvisualfinish
setalpha 8, 8
- panse_19 SE_W060, 192
- createtask sub_80A8D34, 5, -4, -4, 15, 0, 1
- wait
- pause 20
- createtask sub_80E0E24, 5, 1, 1
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 0
- wait
- clearmonbg 2
+ playsewithpan SE_W060, 192
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -4, -4, 15, ANIM_BANK_ATTACKER, 1
+ waitforvisualfinish
+ delay 20
+ createvisualtask sub_80E0E24, 5, 1, 1
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 0
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATK_PARTNER
blendoff
end
Unknown_81D532F: @ 81D532F
- loadsprite 10198
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 32767
- wait
- pause 10
- createtask sub_812E14C, 5
- pause 5
- panse_19 SE_W109, 192
- pause 10
- panse_19 SE_W109, 0
- pause 10
- panse_19 SE_W109, 63
- pause 23
- createtask sub_80A8154, 2, 1, 10, 0, 20, 1
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 24, -24, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, -16, 16, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, -24, -12, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 1, 1
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767
- wait
+ loadspritegfx 10198
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 32767
+ waitforvisualfinish
+ delay 10
+ createvisualtask sub_812E14C, 5
+ delay 5
+ playsewithpan SE_W109, 192
+ delay 10
+ playsewithpan SE_W109, 0
+ delay 10
+ playsewithpan SE_W109, 63
+ delay 23
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 10, 0, 20, 1
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 24, -24, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, -16, 16, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, -24, -12, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 1, 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767
+ waitforvisualfinish
end
Move_SKY_UPPERCUT: @ 81D53ED
- loadsprite 10135
- monbg 3
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
fadetobg 17
waitbgfadeout
- panse_19 SE_W327, 192
- createtask sub_80D9C80, 5, 55
+ playsewithpan SE_W327, 192
+ createvisualtask sub_80D9C80, 5, 55
waitbgfadein
setalpha 12, 8
- pause 38
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 0, 28, 0, 0, 5
- pause 4
- createtask sub_80A7FA0, 2, 1, 4, 0, 6, 1
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, -28, 28, 1, 1
- pause 1
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, -15, 8, 1, 1
- panse_19 SE_W233B, 63
- pause 1
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, -5, -12, 1, 1
- pause 1
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 0, -32, 1, 1
- pause 1
- panse_19 SE_W233B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 5, -52, 1, 1
- sprite gBattleAnimSpriteTemplate_83C1FF8, 2, 1, -26, 16, 1, 4
- pause 4
- createtask sub_80A8154, 2, 1, 0, 3, 6, 1
- pause 30
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 0, 0, 6
- pause 4
- sprite gBattleAnimSpriteTemplate_83C1FE0, 2, 1, 0, 6
- clearmonbg 3
+ delay 38
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 0, 28, 0, 0, 5
+ delay 4
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 4, 0, 6, 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 131, -28, 28, 1, 1
+ delay 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 131, -15, 8, 1, 1
+ playsewithpan SE_W233B, 63
+ delay 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 131, -5, -12, 1, 1
+ delay 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 131, 0, -32, 1, 1
+ delay 1
+ playsewithpan SE_W233B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 131, 5, -52, 1, 1
+ createsprite gSlideMonToOffsetSpriteTemplate, 2, 1, -26, 16, 1, 4
+ delay 4
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 0, 3, 6, 1
+ delay 30
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 0, 0, 6
+ delay 4
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 2, 1, 0, 6
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
end
Move_SECRET_POWER: @ 81D54E6
- createtask sub_80E4008, 5
- jumpvareq 0, 0, Move_NEEDLE_ARM
- jumpvareq 0, 1, Move_MAGICAL_LEAF
- jumpvareq 0, 2, Move_MUD_SHOT
- jumpvareq 0, 3, Move_WATERFALL
- jumpvareq 0, 4, Move_SURF
- jumpvareq 0, 5, Move_BUBBLE_BEAM
- jumpvareq 0, 6, Move_ROCK_THROW
- jumpvareq 0, 7, Move_BITE
- jumpvareq 0, 8, Move_STRENGTH
- jump Move_SLAM
+ createvisualtask sub_80E4008, 5
+ jumpargeq 0, 0, Move_NEEDLE_ARM
+ jumpargeq 0, 1, Move_MAGICAL_LEAF
+ jumpargeq 0, 2, Move_MUD_SHOT
+ jumpargeq 0, 3, Move_WATERFALL
+ jumpargeq 0, 4, Move_SURF
+ jumpargeq 0, 5, Move_BUBBLE_BEAM
+ jumpargeq 0, 6, Move_ROCK_THROW
+ jumpargeq 0, 7, Move_BITE
+ jumpargeq 0, 8, Move_STRENGTH
+ goto Move_SLAM
Move_TWISTER: @ 81D553A
- loadsprite 10063
- loadsprite 10135
- loadsprite 10058
- monbg 3
+ loadspritegfx 10063
+ loadspritegfx 10135
+ loadspritegfx 10058
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
- panse_19 SE_W239, 63
- sprite gBattleAnimSpriteTemplate_83D64B4, 130, 120, 70, 5, 70, 30
- pause 1
- sprite gBattleAnimSpriteTemplate_83D64B4, 130, 115, 55, 6, 60, 25
- pause 1
- sprite gBattleAnimSpriteTemplate_83D64B4, 130, 115, 60, 7, 60, 30
- sprite gBattleAnimSpriteTemplate_83D64B4, 130, 115, 55, 10, 60, 30
- pause 3
- sprite gBattleAnimSpriteTemplate_83DAE18, 130, 100, 50, 4, 50, 26
- pause 1
- sprite gBattleAnimSpriteTemplate_83D64B4, 130, 105, 25, 8, 60, 20
- pause 1
- sprite gBattleAnimSpriteTemplate_83D64B4, 130, 115, 40, 10, 48, 30
- pause 3
- sprite gBattleAnimSpriteTemplate_83DAE18, 130, 120, 30, 6, 45, 25
- sprite gBattleAnimSpriteTemplate_83D64B4, 130, 115, 35, 10, 60, 30
- pause 3
- sprite gBattleAnimSpriteTemplate_83DAE18, 130, 105, 20, 8, 40, 0
- pause 3
- sprite gBattleAnimSpriteTemplate_83D64B4, 130, 20, 255, 15, 32, 0
- sprite gBattleAnimSpriteTemplate_83D64B4, 130, 110, 10, 8, 32, 20
- wait
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, -32, -16, 1, 3
- panse_19 SE_W004, 63
- createtask sub_80A8154, 2, 1, 3, 0, 12, 1
- createtask sub_80A8154, 2, 3, 3, 0, 12, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 3
- panse_19 SE_W004, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 3
- panse_19 SE_W004, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83DB4A8, 131, 32, 20, 1, 3
- panse_19 SE_W004, 63
- wait
- clearmonbg 3
+ playsewithpan SE_W239, 63
+ createsprite gBattleAnimSpriteTemplate_83D64B4, 130, 120, 70, 5, 70, 30
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D64B4, 130, 115, 55, 6, 60, 25
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D64B4, 130, 115, 60, 7, 60, 30
+ createsprite gBattleAnimSpriteTemplate_83D64B4, 130, 115, 55, 10, 60, 30
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83DAE18, 130, 100, 50, 4, 50, 26
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D64B4, 130, 105, 25, 8, 60, 20
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D64B4, 130, 115, 40, 10, 48, 30
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83DAE18, 130, 120, 30, 6, 45, 25
+ createsprite gBattleAnimSpriteTemplate_83D64B4, 130, 115, 35, 10, 60, 30
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83DAE18, 130, 105, 20, 8, 40, 0
+ delay 3
+ createsprite gBattleAnimSpriteTemplate_83D64B4, 130, 20, 255, 15, 32, 0
+ createsprite gBattleAnimSpriteTemplate_83D64B4, 130, 110, 10, 8, 32, 20
+ waitforvisualfinish
+ createsprite gBasicHitSplatSpriteTemplate, 131, -32, -16, 1, 3
+ playsewithpan SE_W004, 63
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 3, 0, 12, 1
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_DEF_PARTNER, 3, 0, 12, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 3
+ playsewithpan SE_W004, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83DB4F0, 131, 1, 3
+ playsewithpan SE_W004, 63
+ delay 4
+ createsprite gBasicHitSplatSpriteTemplate, 131, 32, 20, 1, 3
+ playsewithpan SE_W004, 63
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_MAGICAL_LEAF: @ 81D5699
- loadsprite 10063
- loadsprite 10160
- loadsprite 10135
- monbg 3
- setalpha 12, 8
- pause 1
- panse_1C SE_W077, 192, 10, 5
- createtask sub_80CC5F8, 5
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -2, 10
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -1, -1, 15
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -4, -4, 7
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, 3, -3, 11
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -1, -6, 8
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, 2, -1, 12
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -4, 13
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, 4, -5, 7
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, 2, -6, 11
- pause 2
- sprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -5, 8
- pause 60
- panse_19 SE_W013B, 192
- sprite gBattleAnimSpriteTemplate_83D64E4, 131, 20, -10, 20, 0, 32, 20, 0
- sprite gBattleAnimSpriteTemplate_83D64E4, 131, 20, -10, 20, 0, 32, -20, 0
- pause 30
- panse_19 SE_W013, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 132, -10, -4, 1, 2
- sprite gBattleAnimSpriteTemplate_83DB4A8, 132, 10, 4, 1, 2
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- pause 20
- setvar 7, -1
- wait
- clearmonbg 3
+ loadspritegfx 10063
+ loadspritegfx 10160
+ loadspritegfx 10135
+ monbg ANIM_BANK_DEF_PARTNER
+ setalpha 12, 8
+ delay 1
+ loopsewithpan SE_W077, 192, 10, 5
+ createvisualtask sub_80CC5F8, 5
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -2, 10
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -1, -1, 15
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -4, -4, 7
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, 3, -3, 11
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -1, -6, 8
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, 2, -1, 12
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -4, 13
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, 4, -5, 7
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, 2, -6, 11
+ delay 2
+ createsprite gBattleAnimSpriteTemplate_83D649C, 2, -3, -5, 8
+ delay 60
+ playsewithpan SE_W013B, 192
+ createsprite gBattleAnimSpriteTemplate_83D64E4, 131, 20, -10, 20, 0, 32, 20, 0
+ createsprite gBattleAnimSpriteTemplate_83D64E4, 131, 20, -10, 20, 0, 32, -20, 0
+ delay 30
+ playsewithpan SE_W013, 63
+ createsprite gBasicHitSplatSpriteTemplate, 132, -10, -4, 1, 2
+ createsprite gBasicHitSplatSpriteTemplate, 132, 10, 4, 1, 2
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ delay 20
+ setarg 7, -1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
Move_ICE_BALL: @ 81D57BA
- loadsprite 10043
- loadsprite 10141
- createtask sub_80D8FC0, 5, 0
- jumpvareq 0, 4, _81D5831
+ loadspritegfx 10043
+ loadspritegfx 10141
+ createvisualtask sub_80D8FC0, 5, 0
+ jumpargeq 0, 4, _81D5831
_81D57D1:
- panse_19 SE_W196, 192
- sprite gBattleAnimSpriteTemplate_83D9EF4, 130, 15, 0, -12, -16, 30, -40
- pause 28
- panse_19 SE_W280, 63
- createtask sub_80D8FC0, 5, 0
- jumpvareq 0, 0, _81D5842
- jumpvareq 0, 1, _81D5871
- jumpvareq 0, 2, _81D58AA
- jumpvareq 0, 3, _81D58ED
- jumpvareq 0, 4, _81D5935
+ playsewithpan SE_W196, 192
+ createsprite gBattleAnimSpriteTemplate_83D9EF4, 130, 15, 0, -12, -16, 30, -40
+ delay 28
+ playsewithpan SE_W280, 63
+ createvisualtask sub_80D8FC0, 5, 0
+ jumpargeq 0, 0, _81D5842
+ jumpargeq 0, 1, _81D5871
+ jumpargeq 0, 2, _81D58AA
+ jumpargeq 0, 3, _81D58ED
+ jumpargeq 0, 4, _81D5935
_81D581F:
- createtask sub_80D8FC0, 5, 0
- jumpvareq 0, 4, _81D5838
+ createvisualtask sub_80D8FC0, 5, 0
+ jumpargeq 0, 4, _81D5838
_81D5830:
end
_81D5831:
fadetobg 15
- jump _81D57D1
+ goto _81D57D1
_81D5838:
waitbgfadein
- pause 45
+ delay 45
restorebg
waitbgfadein
- jump _81D5830
+ goto _81D5830
_81D5842:
- createtask sub_80A9058, 2, 0, 1, 8, 1, 0
+ createvisualtask sub_80A9058, 2, 0, 1, 8, 1, 0
call _81D597D
call _81D597D
call _81D597D
call _81D597D
call _81D597D
- jump _81D581F
+ goto _81D581F
_81D5871:
- createtask sub_80A9058, 2, 0, 1, 10, 1, 0
+ createvisualtask sub_80A9058, 2, 0, 1, 10, 1, 0
call _81D597D
call _81D597D
call _81D597D
@@ -9773,9 +9775,9 @@ _81D5871:
call _81D597D
call _81D597D
call _81D597D
- jump _81D581F
+ goto _81D581F
_81D58AA:
- createtask sub_80A9058, 2, 0, 1, 14, 1, 0
+ createvisualtask sub_80A9058, 2, 0, 1, 14, 1, 0
call _81D597D
call _81D597D
call _81D597D
@@ -9785,9 +9787,9 @@ _81D58AA:
call _81D597D
call _81D597D
call _81D597D
- jump _81D581F
+ goto _81D581F
_81D58ED:
- createtask sub_80A9058, 2, 0, 1, 18, 1, 0
+ createvisualtask sub_80A9058, 2, 0, 1, 18, 1, 0
call _81D597D
call _81D597D
call _81D597D
@@ -9798,9 +9800,9 @@ _81D58ED:
call _81D597D
call _81D597D
call _81D597D
- jump _81D581F
+ goto _81D581F
_81D5935:
- createtask sub_80A9058, 2, 0, 1, 30, 1, 0
+ createvisualtask sub_80A9058, 2, 0, 1, 30, 1, 0
call _81D597D
call _81D597D
call _81D597D
@@ -9811,935 +9813,935 @@ _81D5935:
call _81D597D
call _81D597D
call _81D597D
- jump _81D581F
+ goto _81D581F
_81D597D:
- sprite gBattleAnimSpriteTemplate_83D9F0C, 132, -12, -16
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9F0C, 132, -12, -16
+ return
Move_WEATHER_BALL: @ 81D5989
- loadsprite 10283
- sprite gBattleAnimSpriteTemplate_83C1FC8, 2, 8, 1, 0
- pause 8
- panse_19 SE_W207, 192
- sprite gBattleAnimSpriteTemplate_83930A8, 2
- wait
- pause 15
- panse_19 SE_W197, 0
- sprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 5, 1, 32767, 10, 0, 0
- wait
- createtask sub_8132528, 2
- pause 1
- jumpvareq 7, 0, _81D59F4
- jumpvareq 7, 1, _81D5A31
- jumpvareq 7, 2, _81D5A95
- jumpvareq 7, 3, _81D5AF9
- jumpvareq 7, 4, _81D5B99
+ loadspritegfx 10283
+ createsprite gVerticalDipSpriteTemplate, 2, 8, 1, ANIM_BANK_ATTACKER
+ delay 8
+ playsewithpan SE_W207, 192
+ createsprite gBattleAnimSpriteTemplate_83930A8, 2
+ waitforvisualfinish
+ delay 15
+ playsewithpan SE_W197, 0
+ createsprite gBattleAnimSpriteTemplate_83DB3DC, 2, 31, 5, 1, 32767, 10, 0, 0
+ waitforvisualfinish
+ createvisualtask sub_8132528, 2
+ delay 1
+ jumpargeq 7, 0, _81D59F4
+ jumpargeq 7, 1, _81D5A31
+ jumpargeq 7, 2, _81D5A95
+ jumpargeq 7, 3, _81D5AF9
+ jumpargeq 7, 4, _81D5B99
_81D59F4:
- loadsprite 10135
- sprite gBattleAnimSpriteTemplate_83930C0, 130, -30, -100, 25, 1, 0, 0
- wait
- panse_19 SE_W025B, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 132, -10, 0, 1, 2
- createtask sub_80A7E7C, 2, 1, 0, 3, 8, 1
- wait
+ loadspritegfx 10135
+ createsprite gBattleAnimSpriteTemplate_83930C0, 130, -30, -100, 25, 1, 0, 0
+ waitforvisualfinish
+ playsewithpan SE_W025B, 63
+ createsprite gBasicHitSplatSpriteTemplate, 132, -10, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 8, 1
+ waitforvisualfinish
end
_81D5A31:
- loadsprite 10029
- sprite gBattleAnimSpriteTemplate_83D96AC, 130, -30, -100, 25, 1, 40, 10
- panse_19 SE_W172, 63
- pause 10
- sprite gBattleAnimSpriteTemplate_83D96AC, 130, -30, -100, 25, 1, -40, 20
- panse_19 SE_W172, 63
- pause 10
- sprite gBattleAnimSpriteTemplate_83D96AC, 130, -30, -100, 25, 1, 0, 0
- panse_19 SE_W172, 63
- wait
- panse_19 SE_W172B, 63
- createtask sub_80A7E7C, 2, 1, 0, 3, 8, 1
- wait
+ loadspritegfx 10029
+ createsprite gBattleAnimSpriteTemplate_83D96AC, 130, -30, -100, 25, 1, 40, 10
+ playsewithpan SE_W172, 63
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D96AC, 130, -30, -100, 25, 1, -40, 20
+ playsewithpan SE_W172, 63
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D96AC, 130, -30, -100, 25, 1, 0, 0
+ playsewithpan SE_W172, 63
+ waitforvisualfinish
+ playsewithpan SE_W172B, 63
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 8, 1
+ waitforvisualfinish
end
_81D5A95:
- loadsprite 10155
- sprite gBattleAnimSpriteTemplate_83D9438, 130, -30, -100, 25, 1, 50, 10
- panse_19 SE_W152, 63
- pause 8
- sprite gBattleAnimSpriteTemplate_83D9438, 130, -30, -100, 25, 1, -20, 20
- panse_19 SE_W152, 63
- pause 13
- sprite gBattleAnimSpriteTemplate_83D9438, 130, -30, -100, 25, 1, 0, 0
- panse_19 SE_W152, 63
- wait
- createtask sub_80A7E7C, 2, 1, 0, 3, 8, 1
- panse_19 SE_W202, 63
- wait
+ loadspritegfx 10155
+ createsprite gBattleAnimSpriteTemplate_83D9438, 130, -30, -100, 25, 1, 50, 10
+ playsewithpan SE_W152, 63
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83D9438, 130, -30, -100, 25, 1, -20, 20
+ playsewithpan SE_W152, 63
+ delay 13
+ createsprite gBattleAnimSpriteTemplate_83D9438, 130, -30, -100, 25, 1, 0, 0
+ playsewithpan SE_W152, 63
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 0, 3, 8, 1
+ playsewithpan SE_W202, 63
+ waitforvisualfinish
end
_81D5AF9:
- loadsprite 10058
- sprite gBattleAnimSpriteTemplate_83DAE30, 130, -30, -100, 25, 1, 30, 0
- panse_19 SE_W088, 63
- pause 5
- sprite gBattleAnimSpriteTemplate_83DAE30, 130, -30, -100, 25, 1, -40, 20
- panse_19 SE_W088, 63
- pause 14
- sprite gBattleAnimSpriteTemplate_83DAE30, 130, -30, -100, 25, 1, 0, 0
- panse_19 SE_W088, 63
- wait
- panse_19 SE_W070, 63
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, -12, 27, 2, 3
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, 8, 28, 3, 4
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, -4, 30, 2, 3
- sprite gBattleAnimSpriteTemplate_83DAE00, 130, 12, 25, 4, 4
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- wait
+ loadspritegfx 10058
+ createsprite gBattleAnimSpriteTemplate_83DAE30, 130, -30, -100, 25, 1, 30, 0
+ playsewithpan SE_W088, 63
+ delay 5
+ createsprite gBattleAnimSpriteTemplate_83DAE30, 130, -30, -100, 25, 1, -40, 20
+ playsewithpan SE_W088, 63
+ delay 14
+ createsprite gBattleAnimSpriteTemplate_83DAE30, 130, -30, -100, 25, 1, 0, 0
+ playsewithpan SE_W088, 63
+ waitforvisualfinish
+ playsewithpan SE_W070, 63
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, -12, 27, 2, 3
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, 8, 28, 3, 4
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, -4, 30, 2, 3
+ createsprite gBattleAnimSpriteTemplate_83DAE00, 130, 12, 25, 4, 4
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ waitforvisualfinish
end
_81D5B99:
- loadsprite 10263
- loadsprite 10141
- sprite gBattleAnimSpriteTemplate_83D9E54, 130, -30, -100, 25, 25, -40, 20
- panse_19 SE_W258, 63
- pause 10
- sprite gBattleAnimSpriteTemplate_83D9E54, 130, -30, -100, 25, 25, 40, 0
- panse_19 SE_W258, 63
- pause 10
- sprite gBattleAnimSpriteTemplate_83D9E54, 130, -30, -100, 25, 25, 0, 0
- panse_19 SE_W258, 63
- wait
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- panse_19 SE_W196, 63
+ loadspritegfx 10263
+ loadspritegfx 10141
+ createsprite gBattleAnimSpriteTemplate_83D9E54, 130, -30, -100, 25, 25, -40, 20
+ playsewithpan SE_W258, 63
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D9E54, 130, -30, -100, 25, 25, 40, 0
+ playsewithpan SE_W258, 63
+ delay 10
+ createsprite gBattleAnimSpriteTemplate_83D9E54, 130, -30, -100, 25, 25, 0, 0
+ playsewithpan SE_W258, 63
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ playsewithpan SE_W196, 63
call Unknown_81D5C36
- wait
+ waitforvisualfinish
end
PoundCopy: @ 81D5C05
- loadsprite 10135
- monbg 1
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- panse_19 SE_W003, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W003, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
Unknown_81D5C36: @ 81D5C36
- sprite gBattleAnimSpriteTemplate_83D9C78, 130, -10, -10, 0
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C90, 130, 10, 20, 0
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C78, 130, -5, 10, 0
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C90, 130, 17, -12, 0
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C90, 130, -15, 15, 0
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C90, 130, 0, 0, 0
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C78, 130, 20, 2, 0
- panse_19 SE_W196, 63
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -10, -10, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 10, 20, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -5, 10, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 17, -12, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C90, 130, -15, 15, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 0, 0, 0
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C78, 130, 20, 2, 0
+ playsewithpan SE_W196, 63
+ return
Unknown_81D5CBA: @ 81D5CBA
- sprite gBattleAnimSpriteTemplate_83D9C78, 130, -10, -10, 1
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C90, 130, 10, 20, 1
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C78, 130, -29, 0, 1
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C90, 130, 29, -20, 1
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C78, 130, -5, 10, 1
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C90, 130, 17, -12, 1
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C78, 130, -20, 0, 1
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C90, 130, -15, 15, 1
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C90, 130, 26, -5, 1
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C90, 130, 0, 0, 1
- panse_19 SE_W196, 63
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9C78, 130, 20, 2, 1
- panse_19 SE_W196, 63
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -10, -10, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 10, 20, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -29, 0, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 29, -20, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -5, 10, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 17, -12, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C78, 130, -20, 0, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C90, 130, -15, 15, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 26, -5, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C90, 130, 0, 0, 1
+ playsewithpan SE_W196, 63
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9C78, 130, 20, 2, 1
+ playsewithpan SE_W196, 63
+ return
Unknown_81D5D8A: @ 81D5D8A
- panse_1C SE_W196, 63, 6, 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 0, 24, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 8, 24, 0
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, -8, 24, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 16, 24, 0
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, -16, 24, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 24, 24, 0
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, -24, 24, 0
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 32, 24, 0
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, -32, 24, 0
- ret
+ loopsewithpan SE_W196, 63, 6, 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 0, 24, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 8, 24, 0
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -8, 24, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 16, 24, 0
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -16, 24, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 24, 24, 0
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -24, 24, 0
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 32, 24, 0
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -32, 24, 0
+ return
Unknown_81D5E0E: @ 81D5E0E
- panse_1C SE_W196, 63, 6, 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 0, 24, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 8, 24, 1
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, -8, 24, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 16, 24, 1
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, -16, 24, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 24, 24, 1
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, -24, 24, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 32, 24, 1
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, -32, 24, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 40, 24, 1
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, -40, 24, 1
- pause 4
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, 48, 24, 1
- sprite gBattleAnimSpriteTemplate_83D9D14, 130, -48, 24, 1
- ret
+ loopsewithpan SE_W196, 63, 6, 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 0, 24, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 8, 24, 1
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -8, 24, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 16, 24, 1
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -16, 24, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 24, 24, 1
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -24, 24, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 32, 24, 1
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -32, 24, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 40, 24, 1
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -40, 24, 1
+ delay 4
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, 48, 24, 1
+ createsprite gBattleAnimSpriteTemplate_83D9D14, 130, -48, 24, 1
+ return
Unknown_81D5ECA: @ 81D5ECA
- sprite gBattleAnimSpriteTemplate_83D6C88, 2, -15, 0, 0, 0, 32, 60
- pause 8
- sprite gBattleAnimSpriteTemplate_83D6C88, 2, 12, -5, 0, 0, 32, 60
- pause 8
- ret
+ createsprite gBattleAnimSpriteTemplate_83D6C88, 2, -15, 0, 0, 0, 32, 60
+ delay 8
+ createsprite gBattleAnimSpriteTemplate_83D6C88, 2, 12, -5, 0, 0, 32, 60
+ delay 8
+ return
Unknown_81D5EF5: @ 81D5EF5
- panse_19 SE_W071B, 192
- sprite gBattleAnimSpriteTemplate_83D7038, 2, 0, -5, 0, 0
- pause 7
- sprite gBattleAnimSpriteTemplate_83D7038, 2, -15, 10, 0, 0
- pause 7
- sprite gBattleAnimSpriteTemplate_83D7038, 2, -15, -15, 0, 0
- pause 7
- sprite gBattleAnimSpriteTemplate_83D7038, 2, 10, -5, 0, 0
- pause 7
- ret
+ playsewithpan SE_W071B, 192
+ createsprite gBattleAnimSpriteTemplate_83D7038, 2, 0, -5, 0, 0
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83D7038, 2, -15, 10, 0, 0
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83D7038, 2, -15, -15, 0, 0
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83D7038, 2, 10, -5, 0, 0
+ delay 7
+ return
Unknown_81D5F3E: @ 81D5F3E
- panse_19 SE_W071B, 63
- sprite gBattleAnimSpriteTemplate_83D7038, 130, 0, -5, 1, 0
- pause 7
- sprite gBattleAnimSpriteTemplate_83D7038, 130, -15, 10, 1, 0
- pause 7
- sprite gBattleAnimSpriteTemplate_83D7038, 130, -15, -15, 1, 0
- pause 7
- sprite gBattleAnimSpriteTemplate_83D7038, 130, 10, -5, 1, 0
- pause 7
- ret
-
-Unknown_81D5F87: @ 81D5F87
- sprite gBattleAnimSpriteTemplate_83DA350, 130, 10, 10, 0
- panse_19 SE_W092, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA350, 130, 20, -20, 0
- panse_19 SE_W092, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA350, 130, -20, 15, 0
- panse_19 SE_W092, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA350, 130, 0, 0, 0
- panse_19 SE_W092, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA350, 130, -20, -20, 0
- panse_19 SE_W092, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA350, 130, 16, -8, 0
- panse_19 SE_W092, 63
- ret
-
-Unknown_81D5FF8: @ 81D5FF8
- sprite gBattleAnimSpriteTemplate_83DA368, 2, 10, 10, 0
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, 20, -20, 0
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, -20, 15, 0
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, 0, 0, 0
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, -20, -20, 0
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, 16, -8, 0
- panse_19 SE_W145C, 63
- ret
-
-Unknown_81D6069: @ 81D6069
- sprite gBattleAnimSpriteTemplate_83DA368, 2, 10, 10, 1
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, -28, -10, 1
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, 20, -20, 1
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, -20, 15, 1
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, 0, 0, 1
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, 27, 8, 1
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, -20, -20, 1
- panse_19 SE_W145C, 63
- pause 6
- sprite gBattleAnimSpriteTemplate_83DA368, 2, 16, -8, 1
- panse_19 SE_W145C, 63
- ret
-
-Unknown_81D6100: @ 81D6100
- panse_19 SE_W085B, 63
- sprite gBattleAnimSpriteTemplate_83D9920, 130, 5, 0, 5, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9920, 130, -5, 10, 5, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9920, 130, 15, 20, 5, 2
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9920, 130, -15, -10, 5, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9920, 130, 25, 0, 5, 1
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9920, 130, -8, 8, 5, 2
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9920, 130, 2, -8, 5, 0
- pause 2
- sprite gBattleAnimSpriteTemplate_83D9920, 130, -20, 15, 5, 1
- ret
+ playsewithpan SE_W071B, 63
+ createsprite gBattleAnimSpriteTemplate_83D7038, 130, 0, -5, 1, 0
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83D7038, 130, -15, 10, 1, 0
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83D7038, 130, -15, -15, 1, 0
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83D7038, 130, 10, -5, 1, 0
+ delay 7
+ return
+
+PoisonBubblesAnim: @ 81D5F87
+ createsprite gPoisonBubbleSpriteTemplate, 130, 10, 10, 0
+ playsewithpan SE_W092, 63
+ delay 6
+ createsprite gPoisonBubbleSpriteTemplate, 130, 20, -20, 0
+ playsewithpan SE_W092, 63
+ delay 6
+ createsprite gPoisonBubbleSpriteTemplate, 130, -20, 15, 0
+ playsewithpan SE_W092, 63
+ delay 6
+ createsprite gPoisonBubbleSpriteTemplate, 130, 0, 0, 0
+ playsewithpan SE_W092, 63
+ delay 6
+ createsprite gPoisonBubbleSpriteTemplate, 130, -20, -20, 0
+ playsewithpan SE_W092, 63
+ delay 6
+ createsprite gPoisonBubbleSpriteTemplate, 130, 16, -8, 0
+ playsewithpan SE_W092, 63
+ return
+
+WaterBubbleEffect: @ 81D5FF8
+ createsprite gWaterBubbleSpriteTemplate, 2, 10, 10, 0
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, 20, -20, 0
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, -20, 15, 0
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, 0, 0, 0
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, -20, -20, 0
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, 16, -8, 0
+ playsewithpan SE_W145C, 63
+ return
+
+WaterBubbleEffect2: @ 81D6069
+ createsprite gWaterBubbleSpriteTemplate, 2, 10, 10, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, -28, -10, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, 20, -20, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, -20, 15, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, 0, 0, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, 27, 8, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, -20, -20, 1
+ playsewithpan SE_W145C, 63
+ delay 6
+ createsprite gWaterBubbleSpriteTemplate, 2, 16, -8, 1
+ playsewithpan SE_W145C, 63
+ return
+
+ElectricityEffect: @ 81D6100
+ playsewithpan SE_W085B, 63
+ createsprite gElectricitySpriteTemplate, 130, 5, 0, 5, 0
+ delay 2
+ createsprite gElectricitySpriteTemplate, 130, -5, 10, 5, 1
+ delay 2
+ createsprite gElectricitySpriteTemplate, 130, 15, 20, 5, 2
+ delay 2
+ createsprite gElectricitySpriteTemplate, 130, -15, -10, 5, 0
+ delay 2
+ createsprite gElectricitySpriteTemplate, 130, 25, 0, 5, 1
+ delay 2
+ createsprite gElectricitySpriteTemplate, 130, -8, 8, 5, 2
+ delay 2
+ createsprite gElectricitySpriteTemplate, 130, 2, -8, 5, 0
+ delay 2
+ createsprite gElectricitySpriteTemplate, 130, -20, 15, 5, 1
+ return
Unknown_81D618B: @ 81D618B
- panse_1C SE_W146, 63, 13, 6
- sprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 0, 3, 90
- sprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 51, 3, 90
- sprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 102, 3, 90
- sprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 153, 3, 90
- sprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 204, 3, 90
- ret
+ loopsewithpan SE_W146, 63, 13, 6
+ createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 0, 3, 90
+ createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 51, 3, 90
+ createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 102, 3, 90
+ createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 153, 3, 90
+ createsprite gBattleAnimSpriteTemplate_83DB3AC, 130, 0, -15, 204, 3, 90
+ return
Unknown_81D61E7: @ 81D61E7
fadetobg 3
waitbgfadeout
- createtask sub_812C560, 5
+ createvisualtask sub_812C560, 5
waitbgfadein
- ret
+ return
Unknown_81D61F3: @ 81D61F3
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
- ret
+ return
Unknown_81D61FB: @ 81D61FB
- jumpunkcond _81D6214
+ jumpifcontest _81D6214
fadetobg 18
waitbgfadeout
- createtask sub_80E3A58, 5, -2304, 768, 1, -1
+ createvisualtask sub_80E3A58, 5, -2304, 768, 1, -1
_81D6212:
waitbgfadein
- ret
+ return
_81D6214:
fadetobg 19
waitbgfadeout
- createtask sub_80E3A58, 5, 2304, 768, 0, -1
- jump _81D6212
+ createvisualtask sub_80E3A58, 5, 2304, 768, 0, -1
+ goto _81D6212
Unknown_81D622B: @ 81D622B
restorebg
waitbgfadeout
- setvar 7, -1
+ setarg 7, -1
waitbgfadein
- ret
+ return
Unknown_81D6233: @ 81D6233
- createtask sub_80E4200, 2
- jumpvareq 7, 1, Unknown_81D6258
- createtask sub_812C924, 2
- jumpvareq 7, 0, Unknown_81D6266
- jump Unknown_81D625F
+ createvisualtask sub_80E4200, 2
+ jumpargeq 7, 1, Unknown_81D6258
+ createvisualtask sub_812C924, 2
+ jumpargeq 7, 0, Unknown_81D6266
+ goto Unknown_81D625F
Unknown_81D6256: @ 81D6256
waitbgfadein
- ret
+ return
Unknown_81D6258: @ 81D6258
fadetobg 26
- jump Unknown_81D6256
+ goto Unknown_81D6256
Unknown_81D625F: @ 81D625F
fadetobg 25
- jump Unknown_81D6256
+ goto Unknown_81D6256
Unknown_81D6266: @ 81D6266
fadetobg 24
- jump Unknown_81D6256
+ goto Unknown_81D6256
Unknown_81D626D: @ 81D626D
restorebg
waitbgfadein
- ret
+ return
StatusCondition_Poison: @ 81D6270
- panse_1C SE_W092, 63, 13, 6
- createtask sub_80A7FA0, 2, 0, 1, 0, 18, 2
- createtask sub_80E1F8C, 2, 2, 2, 2, 0, 12, 31774
+ loopsewithpan SE_W092, 63, 13, 6
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 18, 2
+ createvisualtask sub_80E1F8C, 2, 2, 2, 2, 0, 12, 31774
end
StatusCondition_Confusion: @ 81D629B
- loadsprite 10073
+ loadspritegfx 10073
call Unknown_81D618B
end
StatusCondition_Burn: @ 81D62A4
- loadsprite 10029
- panse_19 SE_W172, 63
+ loadspritegfx 10029
+ playsewithpan SE_W172, 63
call _81D62BC
call _81D62BC
call _81D62BC
- wait
+ waitforvisualfinish
end
_81D62BC:
- sprite gBattleAnimSpriteTemplate_83D9614, 130, -24, 24, 24, 24, 20, 1, 1
- pause 4
- ret
+ createsprite gBattleAnimSpriteTemplate_83D9614, 130, -24, 24, 24, 24, 20, 1, 1
+ delay 4
+ return
StatusCondition_Love: @ 81D62D4
- loadsprite 10210
- panse_19 SE_W204, 192
- sprite gBattleAnimSpriteTemplate_83D7A80, 3, 0, 20
- pause 15
- panse_19 SE_W204, 192
- sprite gBattleAnimSpriteTemplate_83D7A80, 3, -20, 20
- pause 15
- panse_19 SE_W204, 192
- sprite gBattleAnimSpriteTemplate_83D7A80, 3, 20, 20
+ loadspritegfx 10210
+ playsewithpan SE_W204, 192
+ createsprite gBattleAnimSpriteTemplate_83D7A80, 3, 0, 20
+ delay 15
+ playsewithpan SE_W204, 192
+ createsprite gBattleAnimSpriteTemplate_83D7A80, 3, -20, 20
+ delay 15
+ playsewithpan SE_W204, 192
+ createsprite gBattleAnimSpriteTemplate_83D7A80, 3, 20, 20
end
StatusCondition_Sleep: @ 81D6309
- loadsprite 10228
- panse_19 SE_W173, 192
- sprite gBattleAnimSpriteTemplate_83D6D94, 2, 4, -10, 16, 0, 0
- pause 30
- sprite gBattleAnimSpriteTemplate_83D6D94, 2, 4, -10, 16, 0, 0
+ loadspritegfx 10228
+ playsewithpan SE_W173, 192
+ createsprite gBattleAnimSpriteTemplate_83D6D94, 2, 4, -10, 16, 0, 0
+ delay 30
+ createsprite gBattleAnimSpriteTemplate_83D6D94, 2, 4, -10, 16, 0, 0
end
StatusCondition_Paralysis: @ 81D6335
- loadsprite 10011
- createtask sub_80A7FA0, 2, 0, 1, 0, 10, 1
- call Unknown_81D6100
+ loadspritegfx 10011
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 10, 1
+ call ElectricityEffect
end
StatusCondition_Ice: @ 81D634F
- panse_19 SE_W196, 0
- loadsprite 10010
- monbg 3
+ playsewithpan SE_W196, 0
+ loadspritegfx 10010
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
- panse_1D SE_W258, 63, 17
- createtask sub_807B920, 2
- wait
- clearmonbg 3
+ waitplaysewithpan SE_W258, 63, 17
+ createvisualtask sub_807B920, 2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
StatusCondition_Curse: @ 81D636A
- loadsprite 10200
- monbg 3
- panse_19 SE_W171, 63
- sprite gBattleAnimSpriteTemplate_83DAF38, 130
- createtask sub_80A7FA0, 2, 1, 2, 0, 14, 1
- wait
- clearmonbg 3
+ loadspritegfx 10200
+ monbg ANIM_BANK_DEF_PARTNER
+ playsewithpan SE_W171, 63
+ createsprite gBattleAnimSpriteTemplate_83DAF38, 130
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 14, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
StatusCondition_Nightmare: @ 81D638F
- loadsprite 10221
- monbg 3
- panse_19 SE_W171, 63
- sprite gBattleAnimSpriteTemplate_83DAF50, 130
- createtask sub_80A7FA0, 2, 1, 2, 0, 14, 1
- wait
- clearmonbg 3
+ loadspritegfx 10221
+ monbg ANIM_BANK_DEF_PARTNER
+ playsewithpan SE_W171, 63
+ createsprite gBattleAnimSpriteTemplate_83DAF50, 130
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 14, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
General_CastformChange: @ 81D63B4
- createtask c3_80DFBE4, 2
- jumpvareq 7, 1, _81D63E0
- jump _81D63C8
+ createvisualtask c3_80DFBE4, 2
+ jumpargeq 7, 1, _81D63E0
+ goto _81D63C8
_81D63C8:
- monbg 0
- panse_19 SE_W100, 192
- panse_1D SE_W107, 192, 48
- createtask sub_812D7E8, 2, 1
- wait
- clearmonbg 0
+ monbg ANIM_BANK_ATTACKER
+ playsewithpan SE_W100, 192
+ waitplaysewithpan SE_W107, 192, 48
+ createvisualtask sub_812D7E8, 2, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
end
_81D63E0:
- createtask sub_812DB58, 2, 1
+ createvisualtask sub_812DB58, 2, 1
end
General_StatsChange: @ 81D63EA
- createtask sub_807BB88, 5
- wait
+ createvisualtask sub_807BB88, 5
+ waitforvisualfinish
end
General_SubstituteFade: @ 81D63F3
- monbg 0
- createtask sub_81416C4, 5
- createtask sub_80E2A38, 10, 2, 0, 0, 16, 32767
- wait
- pause 1
- clearmonbg 0
- pause 2
+ monbg ANIM_BANK_ATTACKER
+ createvisualtask sub_81416C4, 5
+ createvisualtask sub_80E2A38, 10, 2, 0, 0, 16, 32767
+ waitforvisualfinish
+ delay 1
+ clearmonbg ANIM_BANK_ATTACKER
+ delay 2
blendoff
- createtask sub_80E2A38, 10, 2, 0, 0, 0, 32767
- createtask sub_814151C, 2, 1
+ createvisualtask sub_80E2A38, 10, 2, 0, 0, 0, 32767
+ createvisualtask sub_814151C, 2, 1
end
General_SubstituteAppear: @ 81D6430
- createtask sub_81312E4, 2
+ createvisualtask sub_81312E4, 2
end
General_PokeblockThrow: @ 81D6438
- createtask sub_8141D7C, 2
- createtask sub_8141BD4, 2
- pause 0
- panse_1D SE_W026, 192, 22
- sprite gBattleAnimSpriteTemplate_840B4FC, 131, -16, 7, 0, 32
- pause 50
- panse_1C SE_W039, 63, 19, 2
- createtask sub_80A8B88, 5, 1, 8, 1536, 2, 1
- wait
- createtask sub_8141C08, 2
+ createvisualtask sub_8141D7C, 2
+ createvisualtask sub_8141BD4, 2
+ delay 0
+ waitplaysewithpan SE_W026, 192, 22
+ createsprite gBattleAnimSpriteTemplate_840B4FC, 131, -16, 7, 0, 32
+ delay 50
+ loopsewithpan SE_W039, 63, 19, 2
+ createvisualtask AnimTask_SwayMon, 5, 1, 8, 1536, 2, 1
+ waitforvisualfinish
+ createvisualtask sub_8141C08, 2
end
General_ItemKnockoff: @ 81D647E
- loadsprite 10224
- sprite gBattleAnimSpriteTemplate_83D6734, 130
+ loadspritegfx 10224
+ createsprite gBattleAnimSpriteTemplate_83D6734, 130
end
General_TurnTrap: @ 81D6489
- createtask sub_8141DAC, 5
- jumpvareq 0, 1, _81D64FD
- jumpvareq 0, 2, _81D6522
- jumpvareq 0, 3, _81D6576
- jumpvareq 0, 4, _81D65D3
- jump _81D64B5
+ createvisualtask sub_8141DAC, 5
+ jumpargeq 0, 1, _81D64FD
+ jumpargeq 0, 2, _81D6522
+ jumpargeq 0, 3, _81D6576
+ jumpargeq 0, 4, _81D65D3
+ goto _81D64B5
_81D64B5:
- loadsprite 10186
- panse_1C SE_W010, 63, 6, 2
- sprite gBattleAnimSpriteTemplate_83D65A0, 132, 0, 16, 0, 1
- pause 7
- sprite gBattleAnimSpriteTemplate_83D65A0, 130, 0, 8, 1, 1
- pause 3
- createtask sub_80A7FA0, 2, 1, 2, 0, 8, 1
- pause 20
- setvar 7, -1
- panse_19 SE_W020, 63
- wait
+ loadspritegfx 10186
+ loopsewithpan SE_W010, 63, 6, 2
+ createsprite gBattleAnimSpriteTemplate_83D65A0, 132, 0, 16, 0, 1
+ delay 7
+ createsprite gBattleAnimSpriteTemplate_83D65A0, 130, 0, 8, 1, 1
+ delay 3
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_TARGET, 2, 0, 8, 1
+ delay 20
+ setarg 7, -1
+ playsewithpan SE_W020, 63
+ waitforvisualfinish
end
_81D64FD:
- loadsprite 10029
- panse_19 SE_W221B, 63
- createtask sub_80A7E7C, 5, 1, 0, 2, 30, 1
+ loadspritegfx 10029
+ playsewithpan SE_W221B, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1
call _81C90BF
call _81C90BF
- wait
+ waitforvisualfinish
stopsound
end
_81D6522:
- loadsprite 10149
- monbg 3
+ loadspritegfx 10149
+ monbg ANIM_BANK_DEF_PARTNER
monbgprio_28 1
setalpha 12, 8
- pause 0
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 23968
- panse_19 SE_W250, 63
- createtask sub_80A7E7C, 5, 1, 0, 2, 30, 1
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 23968
+ playsewithpan SE_W250, 63
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1
call _81D03E4
call _81D03E4
- pause 12
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 23968
- wait
+ delay 12
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 23968
+ waitforvisualfinish
stopsound
- clearmonbg 3
+ clearmonbg ANIM_BANK_DEF_PARTNER
end
_81D6576:
- loadsprite 10145
- loadsprite 10135
- monbg 1
+ loadspritegfx 10145
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- panse_19 SE_W011, 63
- sprite gBattleAnimSpriteTemplate_83DB1E8, 2, -32, 0, 2, 819, 0, 10
- sprite gBattleAnimSpriteTemplate_83DB1E8, 2, 32, 0, 6, -819, 0, 10
- pause 10
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A7E7C, 5, 1, 3, 0, 5, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W011, 63
+ createsprite gBattleAnimSpriteTemplate_83DB1E8, 2, -32, 0, 2, 819, 0, 10
+ createsprite gBattleAnimSpriteTemplate_83DB1E8, 2, 32, 0, 6, -819, 0, 10
+ delay 10
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 5, 1, 3, 0, 5, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
- wait
+ waitforvisualfinish
end
_81D65D3:
- loadsprite 10074
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 563
- createtask sub_80A7E7C, 5, 1, 0, 2, 30, 1
- panse_19 SE_W328, 63
+ loadspritegfx 10074
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 0, 7, 563
+ createvisualtask AnimTask_ShakeMon, 5, 1, 0, 2, 30, 1
+ playsewithpan SE_W328, 63
call _81D361F
call _81D361F
- pause 22
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 563
- wait
+ delay 22
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 4, 2, 7, 0, 563
+ waitforvisualfinish
stopsound
end
General_ItemEffect: @ 81D661C
- loadsprite 10203
- loadsprite 10049
- pause 0
- panse_19 SE_W036, 192
- createtask sub_80A8EFC, 2, 16, 128, 0, 2
- wait
- panse_19 SE_W036, 192
- createtask sub_80A8EFC, 2, 16, 128, 0, 2
- wait
- panse_19 SE_W036, 192
- createtask sub_80A8EFC, 2, 16, 128, 0, 2
- wait
- panse_19 SE_W234, 192
+ loadspritegfx 10203
+ loadspritegfx 10049
+ delay 0
+ playsewithpan SE_W036, 192
+ createvisualtask sub_80A8EFC, 2, 16, 128, 0, 2
+ waitforvisualfinish
+ playsewithpan SE_W036, 192
+ createvisualtask sub_80A8EFC, 2, 16, 128, 0, 2
+ waitforvisualfinish
+ playsewithpan SE_W036, 192
+ createvisualtask sub_80A8EFC, 2, 16, 128, 0, 2
+ waitforvisualfinish
+ playsewithpan SE_W234, 192
call Unknown_81D5ECA
- wait
- panse_19 SE_REAPOKE, 192
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 3, 7, 0, 26609
- sprite gBattleAnimSpriteTemplate_83D7928, 3, 0, 0, 0, 0
- wait
+ waitforvisualfinish
+ playsewithpan SE_REAPOKE, 192
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 2, 3, 7, 0, 26609
+ createsprite gBattleAnimSpriteTemplate_83D7928, 3, 0, 0, 0, 0
+ waitforvisualfinish
end
General_SmokeballEscape: @ 81D6690
- loadsprite 10242
- monbg 0
+ loadspritegfx 10242
+ monbg ANIM_BANK_ATTACKER
setalpha 12, 4
- pause 0
- panse_19 SE_BOWA2, 63
- sprite gBattleAnimSpriteTemplate_8402894, 128, 0, 32, 28, 30
- pause 4
- panse_19 SE_BOWA2, 63
- sprite gBattleAnimSpriteTemplate_8402894, 127, 2, 12, 20, 30
- pause 12
- panse_19 SE_BOWA2, 63
- sprite gBattleAnimSpriteTemplate_8402894, 126, 2, -28, 4, 30
- pause 4
- pause 8
- panse_19 SE_BOWA2, 63
- sprite gBattleAnimSpriteTemplate_8402894, 124, 2, 14, -20, 30
- pause 4
- panse_19 SE_BOWA2, 63
- createtask sub_80DFC24, 2, 2
- sprite gBattleAnimSpriteTemplate_8402894, 123, 3, 4, 4, 30
- pause 14
- panse_19 SE_BOWA2, 63
- sprite gBattleAnimSpriteTemplate_8402894, 122, 3, -14, 18, 46
- pause 0
- sprite gBattleAnimSpriteTemplate_8402894, 121, 3, 14, -14, 46
- pause 0
- sprite gBattleAnimSpriteTemplate_8402894, 120, 3, -12, -10, 46
- pause 0
- sprite gBattleAnimSpriteTemplate_8402894, 119, 3, 14, 14, 46
- pause 0
- sprite gBattleAnimSpriteTemplate_8402894, 118, 3, 0, 0, 46
- wait
- clearmonbg 0
+ delay 0
+ playsewithpan SE_BOWA2, 63
+ createsprite gBattleAnimSpriteTemplate_8402894, 128, 0, 32, 28, 30
+ delay 4
+ playsewithpan SE_BOWA2, 63
+ createsprite gBattleAnimSpriteTemplate_8402894, 127, 2, 12, 20, 30
+ delay 12
+ playsewithpan SE_BOWA2, 63
+ createsprite gBattleAnimSpriteTemplate_8402894, 126, 2, -28, 4, 30
+ delay 4
+ delay 8
+ playsewithpan SE_BOWA2, 63
+ createsprite gBattleAnimSpriteTemplate_8402894, 124, 2, 14, -20, 30
+ delay 4
+ playsewithpan SE_BOWA2, 63
+ createvisualtask sub_80DFC24, 2, 2
+ createsprite gBattleAnimSpriteTemplate_8402894, 123, 3, 4, 4, 30
+ delay 14
+ playsewithpan SE_BOWA2, 63
+ createsprite gBattleAnimSpriteTemplate_8402894, 122, 3, -14, 18, 46
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_8402894, 121, 3, 14, -14, 46
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_8402894, 120, 3, -12, -10, 46
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_8402894, 119, 3, 14, 14, 46
+ delay 0
+ createsprite gBattleAnimSpriteTemplate_8402894, 118, 3, 0, 0, 46
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_ATTACKER
invisible 0
- pause 0
+ delay 0
blendoff
end
General_HangedOn: @ 81D676E
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 2, 7, 0, 9, 31
- panse_19 SE_W082, 192
- createtask sub_812FC68, 5, 30, 128, 0, 1, 2, 0, 1
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 0, 2, 4, 9, 0, 31
- wait
- pause 6
- sprite gBattleAnimSpriteTemplate_83C1FE0, 0, 0, 0, 15
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 2, 7, 0, 9, 31
+ playsewithpan SE_W082, 192
+ createvisualtask sub_812FC68, 5, 30, 128, 0, 1, 2, 0, 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 0, 2, 4, 9, 0, 31
+ waitforvisualfinish
+ delay 6
+ createsprite gSlideMonToOriginalPosSpriteTemplate, 0, 0, 0, 15
end
General_Rain: @ 81D67BB
- loadsprite 10115
- panse_19 SE_W240, 192
- createtask sub_80E2A38, 10, 1921, 2, 0, 4, 0
- wait
- createtask CreateAnimRaindrops, 2, 0, 3, 60
- createtask CreateAnimRaindrops, 2, 0, 3, 60
- pause 50
- wait
- createtask sub_80E2A38, 10, 1921, 2, 4, 0, 0
- wait
+ loadspritegfx 10115
+ playsewithpan SE_W240, 192
+ createvisualtask sub_80E2A38, 10, 1921, 2, 0, 4, 0
+ waitforvisualfinish
+ createvisualtask CreateAnimRaindrops, 2, 0, 3, 60
+ createvisualtask CreateAnimRaindrops, 2, 0, 3, 60
+ delay 50
+ waitforvisualfinish
+ createvisualtask sub_80E2A38, 10, 1921, 2, 4, 0, 0
+ waitforvisualfinish
end
General_Sun: @ 81D6804
- jump Move_SUNNY_DAY
+ goto Move_SUNNY_DAY
General_Sandstorm: @ 81D6809
- jump Move_SANDSTORM
+ goto Move_SANDSTORM
General_Hail: @ 81D680E
- jump Move_HAIL
+ goto Move_HAIL
General_LeechSeedDrain: @ 81D6813
- createtask sub_8141E10, 5
- pause 0
- jump Move_ABSORB
+ createvisualtask sub_8141E10, 5
+ delay 0
+ goto Move_ABSORB
General_MonHit: @ 81D6821
- loadsprite 10135
- monbg 1
+ loadspritegfx 10135
+ monbg ANIM_BANK_TARGET
setalpha 12, 8
- panse_19 SE_W003, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 2, 0, 0, 1, 2
- createtask sub_80A7E7C, 2, 1, 3, 0, 6, 1
- wait
- clearmonbg 1
+ playsewithpan SE_W003, 63
+ createsprite gBasicHitSplatSpriteTemplate, 2, 0, 0, 1, 2
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 3, 0, 6, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_TARGET
blendoff
end
General_ItemSteal: @ 81D6852
- loadsprite 10224
- createtask sub_80E42D0, 2
- createtask sub_8141808, 2
- pause 1
- sprite gBattleAnimSpriteTemplate_83D677C, 2, 0, -5, 10, 2, -1
+ loadspritegfx 10224
+ createvisualtask sub_80E42D0, 2
+ createvisualtask sub_8141808, 2
+ delay 1
+ createsprite gBattleAnimSpriteTemplate_83D677C, 2, 0, -5, 10, 2, -1
end
General_SnatchMove: @ 81D6877
- loadsprite 10224
- createtask sub_80E4234, 2
+ loadspritegfx 10224
+ createvisualtask sub_80E4234, 2
call Unknown_81D6AB6
- pause 1
- createtask sub_80A8B88, 2, 0, 5, 5120, 4, 1
- wait
- createtask sub_80E4264, 2
- jumpvareq 7, 0, _81D68B5
- jump _81D68C5
+ delay 1
+ createvisualtask AnimTask_SwayMon, 2, 0, 5, 5120, 4, 1
+ waitforvisualfinish
+ createvisualtask sub_80E4264, 2
+ jumpargeq 7, 0, _81D68B5
+ goto _81D68C5
_81D68AE:
- wait
+ waitforvisualfinish
call Unknown_81D6AD6
end
_81D68B5:
- panse_19 SE_W104, 192
- createtask sub_8131944, 2
- jump _81D68AE
+ playsewithpan SE_W104, 192
+ createvisualtask sub_8131944, 2
+ goto _81D68AE
_81D68C5:
- panse_19 SE_W104, 192
- createtask sub_8131FFC, 2
- jump _81D68AE
+ playsewithpan SE_W104, 192
+ createvisualtask sub_8131FFC, 2
+ goto _81D68AE
General_FutureSightHit: @ 81D68D5
- createtask sub_80E42B0, 2
- monbg 3
- panse_19 SE_W060, 192
+ createvisualtask sub_80E42B0, 2
+ monbg ANIM_BANK_DEF_PARTNER
+ playsewithpan SE_W060, 192
call Unknown_81D61E7
setalpha 8, 8
- panse_19 SE_W048, 63
- panse_1D SE_W048, 63, 8
- createtask sub_80A7E7C, 2, 1, 4, 0, 15, 1
- createtask sub_80A8D34, 5, -5, -5, 15, 1, 1
- wait
- createtask sub_80A7E7C, 2, 1, 4, 0, 24, 1
- wait
- clearmonbg 3
- blendoff
- wait
- pause 1
+ playsewithpan SE_W048, 63
+ waitplaysewithpan SE_W048, 63, 8
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 4, 0, 15, 1
+ createvisualtask AnimTask_ScaleMonAndRestore, 5, -5, -5, 15, ANIM_BANK_TARGET, 1
+ waitforvisualfinish
+ createvisualtask AnimTask_ShakeMon, 2, ANIM_BANK_TARGET, 4, 0, 24, 1
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
+ blendoff
+ waitforvisualfinish
+ delay 1
call Unknown_81D61F3
end
General_DoomDesireHit: @ 81D6934
- createtask sub_80E42B0, 2
- loadsprite 10198
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 32767
- wait
- pause 10
- createtask sub_812E14C, 5
- pause 9
- panse_19 SE_W109, 192
- pause 9
- panse_19 SE_W109, 0
- pause 9
- panse_19 SE_W109, 63
- pause 25
- createtask sub_80A8154, 2, 1, 10, 0, 20, 1
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 24, -24, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, -16, 16, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, -24, -12, 1, 1
- pause 6
- panse_19 SE_W120, 63
- sprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 1, 1
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767
- wait
+ createvisualtask sub_80E42B0, 2
+ loadspritegfx 10198
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 16, 32767
+ waitforvisualfinish
+ delay 10
+ createvisualtask sub_812E14C, 5
+ delay 9
+ playsewithpan SE_W109, 192
+ delay 9
+ playsewithpan SE_W109, 0
+ delay 9
+ playsewithpan SE_W109, 63
+ delay 25
+ createvisualtask AnimTask_ShakeMonInPlace, 2, ANIM_BANK_TARGET, 10, 0, 20, 1
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 0, 0, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 24, -24, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, -16, 16, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, -24, -12, 1, 1
+ delay 6
+ playsewithpan SE_W120, 63
+ createsprite gBattleAnimSpriteTemplate_83D7828, 3, 16, 16, 1, 1
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 16, 0, 32767
+ waitforvisualfinish
end
General_FocusPunchSetUp: @ 81D69F9
- loadsprite 10184
- panse_19 SE_W082, 192
+ loadspritegfx 10184
+ playsewithpan SE_W082, 192
call EndureFlamesAnim
- pause 8
- createtask sub_80E1F8C, 2, 2, 2, 2, 0, 11, 31
- createtask sub_80A7FA0, 2, 0, 1, 0, 32, 1
+ delay 8
+ createvisualtask sub_80E1F8C, 2, 2, 2, 2, 0, 11, 31
+ createvisualtask AnimTask_ShakeMon2, 2, ANIM_BANK_ATTACKER, 1, 0, 32, 1
call EndureFlamesAnim
- pause 8
+ delay 8
call EndureFlamesAnim
- wait
+ waitforvisualfinish
end
General_IngrainHeal: @ 81D6A39
- loadsprite 10147
- loadsprite 10031
- monbg 3
+ loadspritegfx 10147
+ loadspritegfx 10031
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 13293
- wait
- pause 3
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 0, 4, 13293
+ waitforvisualfinish
+ delay 3
call _81CF496
- wait
- pause 15
+ waitforvisualfinish
+ delay 15
call Unknown_81D5EF5
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 13293
- wait
- clearmonbg 3
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 1, 4, 0, 13293
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
end
General_WishHeal: @ 81D6A7C
- loadsprite 10031
- loadsprite 10049
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 10, 0
- wait
- panse_19 SE_W025, 192
+ loadspritegfx 10031
+ loadspritegfx 10049
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 0, 10, 0
+ waitforvisualfinish
+ playsewithpan SE_W025, 192
call Unknown_81D5ECA
- wait
+ waitforvisualfinish
call Unknown_81D5EF5
- wait
- sprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 10, 0, 0
+ waitforvisualfinish
+ createsprite gBattleAnimSpriteTemplate_83DB3C4, 2, 1, 3, 10, 0, 0
end
Unknown_81D6AB6: @ 81D6AB6
- createtask sub_81417D8, 2
- jumpvareq 7, 1, _81D6AC7
+ createvisualtask sub_81417D8, 2
+ jumpargeq 7, 1, _81D6AC7
_81D6AC5:
- wait
- ret
+ waitforvisualfinish
+ return
_81D6AC7:
- createtask sub_814151C, 2, 1
- wait
- jump _81D6AC5
+ createvisualtask sub_814151C, 2, 1
+ waitforvisualfinish
+ goto _81D6AC5
Unknown_81D6AD6: @ 81D6AD6
- createtask sub_81417D8, 2
- jumpvareq 7, 1, _81D6AE7
+ createvisualtask sub_81417D8, 2
+ jumpargeq 7, 1, _81D6AE7
_81D6AE5:
- wait
- ret
+ waitforvisualfinish
+ return
_81D6AE7:
- createtask sub_814151C, 2, 0
- wait
- jump _81D6AE5
+ createvisualtask sub_814151C, 2, 0
+ waitforvisualfinish
+ goto _81D6AE5
Special_LevelUp: @ 81D6AF6
- panse_19 SE_EXPMAX, 0
- createtask sub_813F4EC, 2
- pause 0
- createtask sub_813F6A0, 5, 0, 0
- wait
- createtask sub_813F5E8, 2
+ playsewithpan SE_EXPMAX, 0
+ createvisualtask sub_813F4EC, 2
+ delay 0
+ createvisualtask sub_813F6A0, 5, 0, 0
+ waitforvisualfinish
+ createvisualtask sub_813F5E8, 2
end
Special_SwitchOutPlayerMon: @ 81D6B17
- createtask sub_813F844, 2
- pause 10
- createtask sub_813F798, 2
+ createvisualtask sub_813F844, 2
+ delay 10
+ createvisualtask sub_813F798, 2
end
Special_SwitchOutOpponentMon: @ 81D6B28
- createtask sub_813F844, 2
- pause 10
- createtask sub_813F798, 2
+ createvisualtask sub_813F844, 2
+ delay 10
+ createvisualtask sub_813F798, 2
end
Special_BallThrow: @ 81D6B39
- createtask sub_813F990, 2
- pause 0
- panse_19 SE_NAGERU, 0
- createtask sub_813FA94, 2
- createtask sub_813F9E0, 2
- jumpvareq 7, -1, _81D6B65
+ createvisualtask sub_813F990, 2
+ delay 0
+ playsewithpan SE_NAGERU, 0
+ createvisualtask sub_813FA94, 2
+ createvisualtask sub_813F9E0, 2
+ jumpargeq 7, -1, _81D6B65
_81D6B5C:
- wait
- createtask sub_813F9B8, 2
+ waitforvisualfinish
+ createvisualtask sub_813F9B8, 2
end
_81D6B65:
- loadsprite 10135
- pause 25
- monbg 3
+ loadspritegfx 10135
+ delay 25
+ monbg ANIM_BANK_DEF_PARTNER
setalpha 12, 8
- pause 0
- panse_19 SE_W003, 63
- sprite gBattleAnimSpriteTemplate_83DB4A8, 130, -4, -20, 1, 2
- wait
- clearmonbg 3
+ delay 0
+ playsewithpan SE_W003, 63
+ createsprite gBasicHitSplatSpriteTemplate, 130, -4, -20, 1, 2
+ waitforvisualfinish
+ clearmonbg ANIM_BANK_DEF_PARTNER
blendoff
- jump _81D6B5C
+ goto _81D6B5C
Special_SafariBallThrow: @ 81D6B8D
- createtask sub_813F990, 2
- pause 0
- createtask sub_813FBB8, 2
- wait
- createtask sub_813F9B8, 2
+ createvisualtask sub_813F990, 2
+ delay 0
+ createvisualtask sub_813FBB8, 2
+ waitforvisualfinish
+ createvisualtask sub_813F9B8, 2
end
Special_SubstituteToMon: @ 81D6BA6
- createtask sub_814151C, 2, 1
+ createvisualtask sub_814151C, 2, 1
end
Special_MonToSubstitute: @ 81D6BB0
- createtask sub_814151C, 2, 0
+ createvisualtask sub_814151C, 2, 0
end
diff --git a/data/btl_attrs.s b/data/btl_attrs.s
index 1bd5ed6e5..5955c487d 100644
--- a/data/btl_attrs.s
+++ b/data/btl_attrs.s
@@ -203,6 +203,121 @@ gUnknown_081F96C8:: @ 81F96C8
gSpriteTemplate_81F96D0:: @ 81F96D0
spr_template 0, 0, gDummyOamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_800F828
+.if DEBUG
+
+UnkDebug0:: @ 0x821F3B8
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+gUnknown_Debug_821F424::
+ .byte 0x02, 0x00, 0x01, 0x00, 0x02, 0x00, 0x9b, 0x01, 0x01, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x64, 0x00, 0x01, 0x00, 0x18, 0x00, 0x0e, 0x00, 0x02, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x2e, 0x00
+ .byte 0x1a, 0x00, 0x02, 0x00, 0x05, 0x00, 0x00, 0x00, 0x30, 0x00, 0x1c, 0x00, 0x02, 0x00, 0x02, 0x00, 0x00, 0x00, 0x34, 0x00, 0x01, 0x00, 0x04, 0x00, 0x9b, 0x01, 0x00, 0x00, 0x44, 0x00, 0x0a, 0x00
+ .byte 0x04, 0x00, 0x64, 0x00, 0x01, 0x00, 0x4a, 0x00, 0x0e, 0x00, 0x04, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x60, 0x00, 0x1a, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x62, 0x00, 0x1c, 0x00, 0x04, 0x00
+ .byte 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x01, 0x00, 0x06, 0x00, 0x9b, 0x01, 0x00, 0x00, 0x76, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x64, 0x00, 0x01, 0x00, 0x7c, 0x00, 0x0e, 0x00, 0x06, 0x00, 0x5c, 0x01
+ .byte 0x00, 0x00, 0x92, 0x00, 0x1a, 0x00, 0x06, 0x00, 0x05, 0x00, 0x00, 0x00, 0x94, 0x00, 0x1c, 0x00, 0x06, 0x00, 0x02, 0x00, 0x00, 0x00, 0x98, 0x00, 0x01, 0x00, 0x08, 0x00, 0x9b, 0x01, 0x00, 0x00
+ .byte 0xa8, 0x00, 0x0a, 0x00, 0x08, 0x00, 0x64, 0x00, 0x01, 0x00, 0xae, 0x00, 0x0e, 0x00, 0x08, 0x00, 0x5c, 0x01, 0x00, 0x00, 0xc4, 0x00, 0x1a, 0x00, 0x08, 0x00, 0x05, 0x00, 0x00, 0x00, 0xc6, 0x00
+ .byte 0x1c, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0xca, 0x00, 0x01, 0x00, 0x0a, 0x00, 0x9b, 0x01, 0x00, 0x00, 0xda, 0x00, 0x0a, 0x00, 0x0a, 0x00, 0x64, 0x00, 0x01, 0x00, 0xe0, 0x00, 0x0e, 0x00
+ .byte 0x0a, 0x00, 0x5c, 0x01, 0x00, 0x00, 0xf6, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x1c, 0x00, 0x0a, 0x00, 0x02, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x01, 0x00, 0x0c, 0x00
+ .byte 0x9b, 0x01, 0x00, 0x00, 0x0c, 0x01, 0x0a, 0x00, 0x0c, 0x00, 0x64, 0x00, 0x01, 0x00, 0x12, 0x01, 0x0e, 0x00, 0x0c, 0x00, 0x5c, 0x01, 0x00, 0x00, 0x28, 0x01, 0x1a, 0x00, 0x0c, 0x00, 0x05, 0x00
+ .byte 0x00, 0x00, 0x2a, 0x01, 0x1c, 0x00, 0x0c, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2e, 0x01, 0x06, 0x00, 0x12, 0x00, 0x09, 0x00, 0x01, 0x00, 0x34, 0x01, 0x1a, 0x00, 0x12, 0x00, 0x09, 0x00, 0x01, 0x00
+
+gUnknown_Debug_821F564::
+ .byte 0x36, 0x01
+
+gUnknown_Debug_821F566::
+ .byte 0x01, 0x00
+
+gUnknown_Debug_821F568::
+ .byte 0x0e, 0x00, 0x62, 0x01
+
+gUnknown_Debug_821F56C::
+ .byte 0x01, 0x00, 0x4a, 0x01, 0x0c, 0x00, 0x0e, 0x00, 0x62, 0x01, 0x00, 0x00, 0x5e, 0x01, 0x01, 0x00, 0x10, 0x00, 0x62, 0x01, 0x00, 0x00, 0x72, 0x01, 0x0c, 0x00, 0x10, 0x00, 0x62, 0x01, 0x00, 0x00
+
+gUnknown_Debug_821F58C::
+ .byte 0x86, 0x01, 0x17, 0x00, 0x0e, 0x00, 0x94, 0x01, 0x17, 0x00, 0x10, 0x00
+
+gUnknown_Debug_821F598::
+ .byte 0x00, 0x00, 0x09, 0x00, 0x08, 0x00, 0x09, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x4b, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00
+
+gUnknown_Debug_821F5AC::
+ .byte 0x01, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x02, 0x00, 0x14, 0x00, 0x00, 0x00, 0x14, 0x00, 0x03, 0x00, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x04, 0x00, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00
+ .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x00, 0x06, 0x14, 0x00, 0x14, 0x00, 0x00, 0x14, 0x00, 0x07, 0x00, 0x14, 0x00, 0x14, 0x00, 0x14, 0x00, 0x08, 0x00, 0x00, 0x14, 0x00, 0x14, 0x14, 0x00
+ .byte 0x09, 0x14, 0x00, 0x00, 0x14, 0x00, 0x14, 0x00, 0x0a, 0x00, 0x14, 0x00, 0x00, 0x14, 0x14, 0x00, 0x0b, 0x00, 0x02, 0x00, 0x02, 0x02, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00
+ .byte 0x0d, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x0e, 0x14, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+Str_821F624:: @ 0x821F624
+ .string "ーーーーーーーーーーーー$"
+
+str_821F631:: @ 0x821F631
+ .string "ジュンイチ$"
+ .string "ダイゴロウ$"
+ .string "バレンシア$"
+ .string "ハルコマチ$"
+
+Str_821F649:: @ 0x821F649
+ .string "てつじ$"
+
+debug_unk_0b::
+@ 0x821F64D
+ .string "  オン$"
+
+@ 0x821F652
+ .string "オフ$"
+
+@ 0x821F655
+ .string "モノラル$"
+
+@ 0x821F65A
+ .string "ステレオ$"
+
+@ 0x821F65F
+ .string "テストです$"
+
+@ 0x821F665
+ .string "うけとったって$"
+
+@ 0x821F66D
+ .string "せつぞくエラー$"
+
+@ 0x821f675
+ .byte 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00
+
+gUnknown_Debug_821F680::
+ .byte 0xc0, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0xf6, 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x52, 0x01, 0x00, 0x00, 0x5a, 0x01, 0x00, 0x00
+ .byte 0x72, 0x01, 0x00, 0x00, 0x76, 0x01, 0x00, 0x00, 0xc0, 0x01, 0x00, 0x00, 0xd2, 0x01, 0x00, 0x00, 0xda, 0x01, 0x00, 0x00, 0xf2, 0x01, 0x00, 0x00, 0xf6, 0x01, 0x00, 0x00, 0x40, 0x02, 0x00, 0x00
+ .byte 0x52, 0x02, 0x00, 0x00, 0x5a, 0x02, 0x00, 0x00, 0x72, 0x02, 0x00, 0x00, 0x76, 0x02, 0x00, 0x00, 0xc0, 0x02, 0x00, 0x00, 0xd2, 0x02, 0x00, 0x00, 0xda, 0x02, 0x00, 0x00, 0xf2, 0x02, 0x00, 0x00
+ .byte 0xf6, 0x02, 0x00, 0x00, 0x40, 0x03, 0x00, 0x00, 0x52, 0x03, 0x00, 0x00, 0x5a, 0x03, 0x00, 0x00, 0x72, 0x03, 0x00, 0x00, 0x76, 0x03, 0x00, 0x00, 0xc0, 0x04, 0x00, 0x00, 0xd4, 0x04, 0x00, 0x00
+ .byte 0xde, 0x04, 0x00, 0x00, 0xe8, 0x04, 0x00, 0x00, 0xf2, 0x04, 0x00, 0x00, 0xc0, 0x08, 0x00, 0x00, 0xd2, 0x08, 0x00, 0x00, 0xda, 0x08, 0x00, 0x00, 0xf2, 0x08, 0x00, 0x00, 0xf6, 0x08, 0x00, 0x00
+ .byte 0x40, 0x09, 0x00, 0x00, 0x52, 0x09, 0x00, 0x00, 0x5a, 0x09, 0x00, 0x00, 0x72, 0x09, 0x00, 0x00, 0x76, 0x09, 0x00, 0x00, 0xc0, 0x09, 0x00, 0x00, 0xd2, 0x09, 0x00, 0x00, 0xda, 0x09, 0x00, 0x00
+ .byte 0xf2, 0x09, 0x00, 0x00, 0xf6, 0x09, 0x00, 0x00, 0x40, 0x0a, 0x00, 0x00, 0x52, 0x0a, 0x00, 0x00, 0x5a, 0x0a, 0x00, 0x00, 0x72, 0x0a, 0x00, 0x00, 0x76, 0x0a, 0x00, 0x00, 0xc0, 0x0a, 0x00, 0x00
+ .byte 0xd2, 0x0a, 0x00, 0x00, 0xda, 0x0a, 0x00, 0x00, 0xf2, 0x0a, 0x00, 0x00, 0xf6, 0x0a, 0x00, 0x00, 0x40, 0x0b, 0x00, 0x00, 0x52, 0x0b, 0x00, 0x00, 0x5a, 0x0b, 0x00, 0x00, 0x72, 0x0b, 0x00, 0x00
+ .byte 0x76, 0x0b, 0x00, 0x00, 0xc0, 0x0c, 0x00, 0x00, 0xd4, 0x0c, 0x00, 0x00, 0xde, 0x0c, 0x00, 0x00, 0xe8, 0x0c, 0x00, 0x00, 0xf2, 0x0c, 0x00, 0x00
+
+gUnknown_Debug_821F798::
+ .byte 0xc0, 0x03, 0x00, 0x00, 0xd6, 0x03, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x56, 0x04, 0x00, 0x00, 0xc0, 0x0b, 0x00, 0x00, 0xd6, 0x0b, 0x00, 0x00, 0x40, 0x0c, 0x00, 0x00, 0x56, 0x0c, 0x00, 0x00
+
+Str_821F7B8:: @ 0x821F7B8
+ .string "たかさ $"
+
+Str_821F7BD:: @ 0x821F7BD
+ .string "{PALETTE 1}{COLOR_HIGHLIGHT_SHADOW BLUE YELLOW MAGENTA}たかさ   ひこう\n"
+ .string "ポケモン  ファイル$"
+
+Str_821F7DA:: @ 0x821F7DA
+ .string "{PALETTE 1}{COLOR_HIGHLIGHT_SHADOW BLUE YELLOW MAGENTA}ロード\n"
+ .string "セーブ$"
+
+Str_821F7EA:: @ 0x821F7EA
+ .string "ロードしますか?$"
+
+@ 0x821F7F3
+gUnknown_Debug_821F7F3::
+ .string "セーブしますか?$"
+
+.endif
+
.align 2
gOamData_81F96E8:: @ 81F96E8
.2byte 0x0100
diff --git a/data/debug_menu_3.s b/data/debug_menu_3.s
new file mode 100644
index 000000000..ed4bb599b
--- /dev/null
+++ b/data/debug_menu_3.s
@@ -0,0 +1,106 @@
+.if DEBUG
+
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+gUnknown_Debug_845DAE1::
+ .byte 0x01, 0xe1, 0xda, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x45, 0x08, 0xb2, 0xdd, 0x45, 0x08, 0x06, 0x08
+ .byte 0x01, 0x01, 0x56, 0xdb, 0x45, 0x08, 0x0d, 0xdd, 0x45, 0x08, 0x0b, 0x01, 0x05, 0x13, 0x01, 0x05, 0x0d, 0xdd, 0x45, 0x08, 0x02, 0xc6, 0xd5, 0xe9, 0xda, 0x00, 0xe9, 0xe2, 0xd8, 0x00, 0xd6, 0xd9
+ .byte 0xe7, 0xe9, 0xd7, 0xdc, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe2, 0x00, 0xd0, 0xd5, 0xe8, 0xd9, 0xe6, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd9, 0xe6, 0xfe, 0xbb, 0xcc, 0xbf, 0xc8, 0xbb, 0x00
+ .byte 0xea, 0xe3, 0xe2, 0x00, 0xbc, 0xc6, 0xf3, 0xce, 0xbf, 0xc8, 0xbc, 0xcf, 0xcc, 0xc1, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0xad, 0xff, 0xb8, 0x56, 0xdb, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21
+ .byte 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xb4, 0xdb, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0xb4
+ .byte 0xdb, 0x45, 0x08, 0x6a, 0x5a, 0xbd, 0xbe, 0xdb, 0x45, 0x08, 0x66, 0x6d, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0xb5, 0xdb, 0x45, 0x08, 0x1a, 0x00, 0x80, 0x13
+ .byte 0x01, 0x1a, 0x01, 0x80, 0x01, 0x00, 0x09, 0x00, 0x29, 0x53, 0x08, 0xbd, 0x00, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x0d, 0xbd, 0x94, 0xdc, 0x45, 0x08, 0x66, 0x6d, 0x6c, 0x02, 0xd0, 0xbb, 0xce
+ .byte 0xbf, 0xcc, 0xf0, 0x00, 0xfd, 0x01, 0xab, 0x00, 0xcd, 0xd7, 0xdc, 0xf5, 0xe2, 0xb8, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0x00, 0xee, 0xe9, 0x00, 0xe7, 0xd9, 0xdc, 0xd9, 0xe2, 0xab, 0xfe, 0xc2, 0xdd
+ .byte 0xd9, 0xe6, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xd9, 0xdd, 0xe2, 0x00, 0xbc, 0xe6, 0xdd, 0xd9, 0xda, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0xb8, 0x00, 0xfd, 0x01, 0xad, 0xff, 0xd0
+ .byte 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xc3, 0xd7, 0xdc, 0x00, 0xd6, 0xdd, 0xe2, 0x00, 0xe1, 0xdd, 0xe6, 0x00, 0xe2, 0xdd, 0xd7, 0xdc, 0xe8, 0x00, 0xe7, 0xdd, 0xd7, 0xdc, 0xd9, 0xe6, 0xb8, 0x00
+ .byte 0xd9, 0xe7, 0xfe, 0xdf, 0xf5, 0xe2, 0xe2, 0xe8, 0xd9, 0x00, 0xd9, 0xdd, 0xe2, 0x00, 0xce, 0xc3, 0xbd, 0xc5, 0xbf, 0xce, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xd9, 0xdd, 0xe2, 0xd9, 0x00, 0xc0, 0xf4
+ .byte 0xdc, 0xe6, 0xd9, 0x00, 0xe7, 0xd9, 0xdd, 0xe2, 0xad, 0xfb, 0xbe, 0xe9, 0x00, 0xe7, 0xe3, 0xe0, 0xe0, 0xe8, 0xd9, 0xe7, 0xe8, 0x00, 0xe2, 0xd5, 0xd7, 0xdc, 0x00, 0xcd, 0xbf, 0xbf, 0xc1, 0xcc
+ .byte 0xbb, 0xcd, 0xcf, 0xc6, 0xbc, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0x00, 0xdb, 0xd9, 0xdc, 0xd9, 0xe2, 0xfe, 0xe9, 0xe2, 0xd8, 0x00, 0xd8, 0xdd, 0xd7, 0xdc, 0x00, 0xd8, 0xe3, 0xe6, 0xe8, 0x00, 0xdb
+ .byte 0xd9, 0xe2, 0xd5, 0xe9, 0xd9, 0xe6, 0x00, 0xd9, 0xe6, 0xdf, 0xe9, 0xe2, 0xd8, 0xdd, 0xdb, 0xd9, 0xe2, 0xad, 0xff, 0xd0, 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xfd, 0x01, 0xb8, 0x00, 0xd8, 0xdd
+ .byte 0xd9, 0x00, 0xbc, 0xbb, 0xcd, 0xc3, 0xcd, 0xae, 0xce, 0xbb, 0xcd, 0xbd, 0xc2, 0xbf, 0xfe, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe7, 0x00, 0xbc, 0xbf, 0xcf, 0xce, 0xbf, 0xc6, 0xcd, 0x00, 0xdd, 0xe7
+ .byte 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xad, 0xfb, 0xc6, 0xd5, 0xdb, 0xd9, 0xe6, 0xd9, 0x00, 0xd9, 0xdd, 0xe2, 0xdd, 0xdb, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe6, 0x00, 0xbc, 0xd5, 0xe7
+ .byte 0xdd, 0xe7, 0xae, 0xc3, 0xe8, 0xd9, 0xe1, 0xe7, 0x00, 0xdd, 0xe2, 0xfe, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9, 0xe1, 0x00, 0xca, 0xbd, 0x00, 0xe9, 0xe2, 0xd8, 0x00, 0xdf, 0xe3, 0xe1, 0xe1, 0x00, 0xd8
+ .byte 0xd5, 0xe2, 0xe2, 0x00, 0xeb, 0xdd, 0xd9, 0xd8, 0xd9, 0xe6, 0xad, 0xff, 0xb8, 0x0d, 0xdd, 0x45, 0x08, 0x47, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45
+ .byte 0x08, 0x4a, 0x13, 0x01, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x2b, 0xce, 0x00, 0xbb, 0x01, 0x53, 0xdd, 0x45, 0x08, 0x46, 0x13, 0x01, 0x01, 0x00, 0x21
+ .byte 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x5b, 0xdd, 0x45, 0x08, 0xbe, 0x16, 0xdb, 0x45, 0x08, 0x0e, 0x02, 0x02, 0xbe, 0x63, 0xdd, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xbe, 0x95, 0xdd, 0x45, 0x08, 0x0e
+ .byte 0x03, 0x02, 0xbe, 0xdd, 0xd9, 0xe7, 0xd9, 0xe7, 0x00, 0xc1, 0xbf, 0xcd, 0xbd, 0xc2, 0xbf, 0xc2, 0xbf, 0xc8, 0x00, 0xdf, 0xd5, 0xe2, 0xe2, 0x00, 0xe2, 0xe9, 0xe6, 0x00, 0xd9, 0xdd, 0xe2, 0xe1
+ .byte 0xd5, 0xe0, 0xfe, 0xdb, 0xd9, 0xe7, 0xe4, 0xdd, 0xd9, 0xe0, 0xe8, 0x00, 0xeb, 0xd9, 0xe6, 0xd8, 0xd9, 0xe2, 0xad, 0xff, 0xbe, 0xd9, 0xdd, 0xe2, 0xd9, 0x00, 0xbc, 0xbb, 0xcd, 0xc3, 0xcd, 0xae
+ .byte 0xce, 0xbb, 0xcd, 0xbd, 0xc2, 0xbf, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xad, 0xff
+
+gUnknown_Debug_845DDB2::
+ .byte 0x01, 0xb2, 0xdd, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xd0, 0xdd, 0x45, 0x08, 0x06, 0xe3, 0x45, 0x08, 0x07, 0xd6
+ .byte 0xdd, 0x45, 0x08, 0x02
+
+gUnknown_Debug_845DDD6::
+ .space 0x530
+
+gUnknown_Debug_845E306::
+ .byte 0x01, 0x06, 0xe3, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x05, 0x29, 0xe3, 0x45, 0x08, 0x03, 0x02, 0x4f, 0xe3, 0x45, 0x08, 0x03, 0x03, 0x87, 0xe3
+ .byte 0x45, 0x08, 0x02, 0xb8, 0x29, 0xe3, 0x45, 0x08, 0x43, 0x21, 0x0d, 0x80, 0x06, 0x00, 0xbb, 0x01, 0x4c, 0xe3, 0x45, 0x08, 0x79, 0x45, 0x01, 0x0f, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+ .byte 0x00, 0x00, 0x00, 0x0e, 0x02, 0x02, 0x0e, 0x03, 0x02, 0xbf, 0xdd, 0xe2, 0x00, 0xca, 0xc9, 0xc5, 0x1b, 0xc7, 0xc9, 0xc8, 0x00, 0xeb, 0xe9, 0xe6, 0xd8, 0xd9, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd5
+ .byte 0xe7, 0x00, 0xce, 0xd9, 0xd5, 0xe1, 0x00, 0xd8, 0xd9, 0xe7, 0xfe, 0xcd, 0xe4, 0xdd, 0xd9, 0xe0, 0xd9, 0xe6, 0xe7, 0x00, 0xd5, 0xe9, 0xda, 0xdb, 0xd9, 0xe2, 0xe3, 0xe1, 0xe1, 0xd9, 0xe2, 0xad
+ .byte 0xff, 0xbe, 0xd5, 0xe7, 0x00, 0xce, 0xd9, 0xd5, 0xe1, 0x00, 0xd8, 0xd9, 0xe7, 0x00, 0xcd, 0xe4, 0xdd, 0xd9, 0xe0, 0xd9, 0xe6, 0xe7, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xea, 0xe3, 0xe0, 0xe0, 0xe7
+ .byte 0xe8, 0xf4, 0xe2, 0xd8, 0xdd, 0xdb, 0xad, 0xfe, 0xbf, 0xe7, 0x00, 0xdf, 0xd5, 0xe2, 0xe2, 0x00, 0xdf, 0xd9, 0xdd, 0xe2, 0x00, 0xeb, 0xd9, 0xdd, 0xe8, 0xd9, 0xe6, 0xd9, 0xe7, 0x00, 0xca, 0xc9
+ .byte 0xc5, 0x1b, 0xc7, 0xc9, 0xc8, 0xfa, 0xd5, 0xe9, 0xda, 0xdb, 0xd9, 0xe2, 0xe3, 0xe1, 0xe1, 0xd9, 0xe2, 0x00, 0xeb, 0xd9, 0xe6, 0xd8, 0xd9, 0xe2, 0xad, 0xff
+
+gUnknown_Debug_845E3E0::
+ .byte 0x01, 0xe0, 0xe3, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xe3, 0x45, 0x08, 0x02, 0xe4, 0x45, 0x08, 0x08, 0x00
+ .byte 0x01, 0x02
+
+gUnknown_Debug_845E402::
+ .byte 0x01, 0x02, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x20, 0xe4, 0x45, 0x08, 0x22, 0xe4, 0x45, 0x08, 0x09, 0x02
+
+gUnknown_Debug_845E422::
+ .byte 0x01, 0x22, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe4, 0x45, 0x08, 0x43, 0xe4, 0x45, 0x08, 0x0a, 0x01
+ .byte 0x02
+
+gUnknown_Debug_845E443::
+ .byte 0x01, 0x43, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x61, 0xe4, 0x45, 0x08, 0xef, 0xe4, 0x45, 0x08, 0x0c, 0x67
+ .byte 0xe4, 0x45, 0x08, 0x02
+
+gUnknown_Debug_845E467::
+ .space 100
+
+gUnknown_Debug_845E4CB::
+ .space 36
+
+gUnknown_Debug_845E4EF::
+ .byte 0x01, 0xef, 0xe4, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0d, 0x06, 0xe5, 0x45, 0x08, 0x02
+
+gUnknown_Debug_845E506::
+ .space 256
+
+gUnknown_Debug_845E606::
+ .byte 0x01, 0x06, 0xe6, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0e, 0x02
+
+gUnknown_Debug_845E619::
+ .byte 0x01, 0x19, 0xe6, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x37, 0xe6, 0x45, 0x08, 0x12, 0xe7, 0x45, 0x08, 0x06, 0x08
+ .byte 0x01, 0x01, 0x83, 0xe6, 0x45, 0x08, 0x12, 0xe7, 0x45, 0x08, 0x03, 0xff, 0x4c, 0xe6, 0x45, 0x08, 0x04, 0x02, 0x02, 0xbc, 0xd9, 0xe7, 0xe9, 0xd7, 0xdc, 0xd9, 0x00, 0xd8, 0xd9, 0xdd, 0xe2, 0xd9
+ .byte 0xe2, 0x00, 0xd0, 0xd5, 0xe8, 0xd9, 0xe6, 0x00, 0xdd, 0xe2, 0x00, 0xd8, 0xd9, 0xe6, 0x00, 0xbb, 0xcc, 0xbf, 0xc8, 0xbb, 0xfe, 0xea, 0xe3, 0xe2, 0x00, 0xbc, 0xc6, 0xf3, 0xce, 0xbf, 0xc8, 0xbc
+ .byte 0xcf, 0xcc, 0xc1, 0x00, 0xbd, 0xc3, 0xce, 0xd3, 0xad, 0xff, 0xb8, 0x83, 0xe6, 0x45, 0x08, 0x47, 0xa9, 0x00, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xbf, 0xe6, 0x45, 0x08, 0x4a
+ .byte 0xa9, 0x00, 0x01, 0x00, 0x21, 0x0d, 0x80, 0x01, 0x00, 0xbb, 0x01, 0xbf, 0xe6, 0x45, 0x08, 0x6a, 0x5a, 0xbd, 0xc0, 0xe6, 0x45, 0x08, 0x66, 0x6d, 0x1a, 0x00, 0x80, 0xa9, 0x00, 0x1a, 0x01, 0x80
+ .byte 0x01, 0x00, 0x09, 0x00, 0x6c, 0x0d, 0x0c, 0xd0, 0xbb, 0xce, 0xbf, 0xcc, 0xf0, 0x00, 0xc2, 0xdd, 0xb8, 0x00, 0xfd, 0x01, 0xab, 0xfb, 0xc3, 0xd7, 0xdc, 0x00, 0xdc, 0xd5, 0xd6, 0xd9, 0x00, 0xdb
+ .byte 0xd9, 0xe6, 0xd5, 0xd8, 0xd9, 0x00, 0xd8, 0xdd, 0xd9, 0xe7, 0xd9, 0x00, 0xe7, 0xd9, 0xe0, 0xe8, 0xd9, 0xe2, 0xd9, 0x00, 0xbc, 0xbf, 0xbf, 0xcc, 0xbf, 0xfe, 0xd9, 0xe6, 0xdc, 0xd5, 0xe0, 0xe8
+ .byte 0xd9, 0xe2, 0xad, 0x00, 0xc3, 0xd7, 0xdc, 0x00, 0xe7, 0xd7, 0xdc, 0xd9, 0xe2, 0xdf, 0xd9, 0x00, 0xe7, 0xdd, 0xd9, 0x00, 0xd8, 0xdd, 0xe6, 0xab, 0xff
+
+gUnknown_Debug_845E712::
+ .byte 0x01, 0x12, 0xe7, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x30, 0xe7, 0x45, 0x08, 0x97, 0xe7, 0x45, 0x08, 0x05, 0x36
+ .byte 0xe7, 0x45, 0x08, 0x02, 0xb8, 0x36, 0xe7, 0x45, 0x08, 0x81, 0x00, 0x78, 0x00, 0x4b, 0x78, 0x00, 0x21, 0x0d, 0x80, 0x00, 0x00, 0xbb, 0x01, 0x55, 0xe7, 0x45, 0x08, 0xbe, 0x5d, 0xe7, 0x45, 0x08
+ .byte 0x0e, 0x02, 0x02, 0xbe, 0x71, 0xe7, 0x45, 0x08, 0x0e, 0x03, 0x02, 0xfd, 0x02, 0x00, 0xeb, 0xe9, 0xe6, 0xd8, 0xd9, 0x00, 0xf6, 0xd6, 0xd9, 0xe6, 0xdb, 0xd9, 0xd6, 0xd9, 0xe2, 0xad, 0xff, 0xbf
+ .byte 0xe7, 0x00, 0xdd, 0xe7, 0xe8, 0x00, 0xdf, 0xd9, 0xdd, 0xe2, 0x00, 0xca, 0xe0, 0xd5, 0xe8, 0xee, 0x00, 0xda, 0xf6, 0xe6, 0x00, 0xfd, 0x02, 0xfe, 0xea, 0xe3, 0xe6, 0xdc, 0xd5, 0xe2, 0xd8, 0xd9
+ .byte 0xe2, 0xad, 0xad, 0xad, 0xff
+
+gUnknown_Debug_845E797::
+ .byte 0x01, 0x97, 0xe7, 0x45, 0x08, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x04, 0x00, 0x80, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0xb5, 0xe7, 0x45, 0x08, 0xbb, 0xe7, 0x45, 0x08
+
+gUnknown_Debug_845E7B5::
+ .byte 0x0b, 0x01, 0x03, 0x0d, 0x00, 0x02
+
+gUnknown_Debug_845E7BB::
+ .byte 0x00
+
+.endif
+
diff --git a/data/debug_menu_nohara.s b/data/debug_menu_nohara.s
new file mode 100644
index 000000000..8556d0ff4
--- /dev/null
+++ b/data/debug_menu_nohara.s
@@ -0,0 +1,253 @@
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .if DEBUG
+
+ .align 2
+gUnknown_Debug_083C48C4:: @ 0x83C48C4
+ .string "TV$"
+
+gUnknown_Debug_083C48C7:: @ 0x83C48C7
+ .string "Fan$"
+
+gUnknown_Debug_083C48CB:: @ 0x83C48CB
+ .string "Battle (vs Dad)$"
+
+gUnknown_Debug_083C48DB:: @ 0x83C48DB
+ .string "Dad after battle$"
+
+gUnknown_Debug_083C48EC:: @ 0x83C48EC
+ .string "SOOTOPOLIS CITY$"
+
+gUnknown_Debug_083C48FC:: @ 0x83C48FC
+ .string "Embark$"
+
+gUnknown_Debug_083C4903:: @ 0x83C4903
+ .string "Yes 9999$"
+
+gUnknown_Debug_083C490C:: @ 0x83C490C
+ .string "Legends flag ON$"
+
+gUnknown_Debug_083C491C:: @ 0x83C491C
+ .string "Add num of winning streaks$"
+
+ .align 2
+gUnknown_Debug_083C4938:: @ 0x83C4938
+ .4byte gUnknown_Debug_083C48C4, NoharaDebugMenu_TV+1
+ .4byte gUnknown_Debug_083C48C7, NoharaDebugMenu_Fan+1
+ .4byte gUnknown_Debug_083C48CB, NoharaDebugMenu_BattleVSDad+1
+ .4byte gUnknown_Debug_083C48DB, NoharaDebugMenu_DadAfterBattle+1
+ .4byte gUnknown_Debug_083C48EC, NoharaDebugMenu_SootopolisCity+1
+ .4byte gUnknown_Debug_083C48FC, NoharaDebugMenu_Embark+1
+ .4byte gUnknown_Debug_083C4903, NoharaDebugMenu_Yes9999+1
+ .4byte gUnknown_Debug_083C490C, NoharaDebugMenu_LegendsFlagOn+1
+ .4byte gUnknown_Debug_083C491C, NoharaDebugMenu_AddNumWinningStreaks+1
+
+gUnknown_Debug_083C4980:: @ 0x83C4980
+ .string "Want to change data type{CLEAR_TO 143}Press Left\n"
+ .string "to see secret type now?{CLEAR_TO 143}to switch$"
+
+gUnknown_Debug_083C49CA:: @ 0x83C49CA
+ .string "Choose the TV data you wish to\n"
+ .string "create to check a transmission。$"
+
+gUnknown_Debug_083C4A09:: @ 0x83C4A09
+ .string "ほうそうの はっせいりつを セット\n"
+ .string "してください ?ぶんの1に なります$"
+
+gUnknown_Debug_083C4A2E:: @ 0x83C4A2E
+ .string "SURVEY$"
+
+gUnknown_Debug_083C4A35:: @ 0x83C4A35
+ .string "RECENT HAPPENINGS$"
+
+gUnknown_Debug_083C4A47:: @ 0x83C4A47
+ .string "POKひMON FAN CLUB$"
+
+gUnknown_Debug_083C4A58:: @ 0x83C4A58
+ .string "ジム$"
+
+gUnknown_Debug_083C4A5B:: @ 0x83C4A5B
+ .string "OUTBREAKS$"
+
+gUnknown_Debug_083C4A65:: @ 0x83C4A65
+ .string "NAME RATER$"
+
+gUnknown_Debug_083C4A70:: @ 0x83C4A70
+ .string "CONTEST$"
+
+gUnknown_Debug_083C4A78:: @ 0x83C4A78
+ .string "INTRODUCTION$"
+
+gUnknown_Debug_083C4A85:: @ 0x83C4A85
+ .string "SHOPPING$"
+
+gUnknown_Debug_083C4A8E:: @ 0x83C4A8E
+ .string "MISFORTUNE$"
+
+gUnknown_Debug_083C4A99:: @ 0x83C4A99
+ .string "FISHING$"
+
+gUnknown_Debug_083C4AA1:: @ 0x83C4AA1
+ .string "MEMORABLE DAY$"
+
+gUnknown_Debug_083C4AAF:: @ 0x83C4AAF
+ .string "BRAVO TRAINER$"
+
+gUnknown_Debug_083C4ABD:: @ 0x83C4ABD
+ .byte 1, 2, 3, 41, 5, 6, 21, 22, 23, 24, 25, 7, 0
+
+ .align 2
+gUnknown_Debug_083C4ACC::
+ .4byte gUnknown_Debug_083C4A2E
+ .4byte gUnknown_Debug_083C4A35
+ .4byte gUnknown_Debug_083C4A47
+ .4byte gUnknown_Debug_083C4A5B
+ .4byte gUnknown_Debug_083C4A65
+ .4byte gUnknown_Debug_083C4A70
+ .4byte gUnknown_Debug_083C4A78
+ .4byte gUnknown_Debug_083C4A85
+ .4byte gUnknown_Debug_083C4A8E
+ .4byte gUnknown_Debug_083C4A99
+ .4byte gUnknown_Debug_083C4AA1
+ .4byte gUnknown_Debug_083C4AAF
+
+gDebugText_BigSale:
+ .string "BIG SALE$"
+
+gUnknown_Debug_083C4B05:: @ 0x83C4B05
+ .string "SERVICE DAY$"
+
+gUnknown_Debug_083C4B11:: @ 0x83C4B11
+ .string "CLEARーOUT SALE$"
+
+gUnknown_Debug_083C4B20:: @ 0x83C4B20
+ .byte 1, 2, 3, 0
+
+ .align 2
+gUnknown_Debug_083C4B24::
+ .4byte gDebugText_BigSale
+ .4byte gUnknown_Debug_083C4B05
+ .4byte gUnknown_Debug_083C4B11
+
+gUnknown_Debug_083C4B30:: @ 0x83C4B30
+ .string "Secret type$"
+
+gUnknown_Debug_083C4B3C:: @ 0x83C4B3C
+ .string "Start$"
+
+gUnknown_Debug_083C4B42:: @ 0x83C4B42
+ .string "Create TV$"
+
+gUnknown_Debug_083C4B4C:: @ 0x83C4B4C
+ .string "All clear$"
+
+gUnknown_Debug_083C4B56:: @ 0x83C4B56
+ .string "All seen$"
+
+gUnknown_Debug_083C4B5F:: @ 0x83C4B5F
+ .string "Create CM$"
+
+gUnknown_Debug_083C4B69:: @ 0x83C4B69
+ .string "Not yet seen$"
+
+gUnknown_Debug_083C4B76:: @ 0x83C4B76
+ .string "Hit Table$"
+
+gUnknown_Debug_083C4B80:: @ 0x83C4B80
+ .string "Set full$"
+
+ .align 2
+gUnknown_Debug_083C4B8C:: @ 0x83C4B8C
+ .4byte gUnknown_Debug_083C4B30, debug_sub_808F4EC+1
+ .4byte gUnknown_Debug_083C4B3C, debug_sub_808F8AC+1
+ .4byte gUnknown_Debug_083C4B42, debug_sub_808F8CC+1
+ .4byte gUnknown_Debug_083C4B4C, debug_sub_808FEBC+1
+ .4byte gUnknown_Debug_083C4B56, debug_sub_808F560+1
+ .4byte gUnknown_Debug_083C4B5F, debug_sub_808FECC+1
+ .4byte gUnknown_Debug_083C4B69, debug_sub_808F594+1
+ .4byte gUnknown_Debug_083C4B76, debug_sub_808F5D8+1
+ .4byte gUnknown_Debug_083C4B80, debug_sub_80900AC+1
+
+gUnknown_Debug_083C4BD4:: @ 0x83C4BD4
+ .byte 0x0C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+gUnknown_Debug_083C4C64:: @ 0x83C4C64
+ .string "TERUKUN$"
+
+gUnknown_Debug_083C4C6C:: @ 0x83C4C6C
+ .string "TERUTERUDA$"
+
+gUnknown_Debug_083C4C77:: @ 0x83C4C77
+ .string "1 スクル$"
+
+gUnknown_Debug_083C4C7D:: @ 0x83C4C7D
+ .string "2 ミドル$"
+
+gUnknown_Debug_083C4C83:: @ 0x83C4C83
+ .string "3 オジヨ$"
+
+gUnknown_Debug_083C4C89:: @ 0x83C4C89
+ .string "4 ボーヤ$"
+
+gUnknown_Debug_083C4C8F:: @ 0x83C4C8F
+ .string "5 ボーイ$"
+
+gUnknown_Debug_083C4C95:: @ 0x83C4C95
+ .string "6 ヤング$"
+
+gUnknown_Debug_083C4C9B:: @ 0x83C4C9B
+ .string "7 ヲーカ$"
+
+gUnknown_Debug_083C4CA1:: @ 0x83C4CA1
+ .string "8 オルド$"
+
+ .align 2
+gUnknown_Debug_083C4CA8:: @ 0x83C4CA8
+ .4byte gUnknown_Debug_083C4C77, gUnknown_Debug_083C4C7D
+ .4byte gUnknown_Debug_083C4C83, gUnknown_Debug_083C4C89
+ .4byte gUnknown_Debug_083C4C8F, gUnknown_Debug_083C4C95
+ .4byte gUnknown_Debug_083C4C9B, gUnknown_Debug_083C4CA1
+
+gUnknown_Debug_083C4CC8:: @ 0x83C4CC8
+ .string "Start$"
+
+gUnknown_Debug_083C4CCE:: @ 0x83C4CCE
+ .string "Increase$"
+
+gUnknown_Debug_083C4CD7:: @ 0x83C4CD7
+ .string "Reduce$"
+
+gUnknown_Debug_083C4CDE:: @ 0x83C4CDE
+ .string "Points$"
+
+gUnknown_Debug_083C4CE5:: @ 0x83C4CE5
+ .string "Play time 6$"
+
+gUnknown_Debug_083C4CF1:: @ 0x83C4CF1
+ .string "P ELITE FOUR$"
+
+gUnknown_Debug_083C4CFE:: @ 0x83C4CFE
+ .string "P SECRET BASE$"
+
+gUnknown_Debug_083C4D0C:: @ 0x83C4D0C
+ .string "P CONTEST$"
+
+gUnknown_Debug_083C4D16:: @ 0x83C4D16
+ .string "P BATTLE TOWER$"
+
+ .align 2
+gUnknown_Debug_083C4D28:: @ 0x83C4D28
+ .4byte gUnknown_Debug_083C4CC8, debug_sub_80901E4+1
+ .4byte gUnknown_Debug_083C4CCE, debug_sub_80901F8+1
+ .4byte gUnknown_Debug_083C4CD7, debug_sub_8090238+1
+ .4byte gUnknown_Debug_083C4CDE, debug_sub_809029C+1
+ .4byte gUnknown_Debug_083C4CE5, debug_sub_80902E4+1
+ .4byte gUnknown_Debug_083C4CF1, debug_sub_80902FC+1
+ .4byte gUnknown_Debug_083C4CFE, debug_sub_8090310+1
+ .4byte gUnknown_Debug_083C4D0C, debug_sub_8090324+1
+ .4byte gUnknown_Debug_083C4D16, debug_sub_8090338+1
+
+ .endif
diff --git a/data/debug_menu_taya.s b/data/debug_menu_taya.s
new file mode 100644
index 000000000..4bd8239f4
--- /dev/null
+++ b/data/debug_menu_taya.s
@@ -0,0 +1,219 @@
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .if DEBUG
+
+gUnknown_Debug_083C4E54:: @ 0x83C4E54
+ .string "Profile$"
+
+gUnknown_Debug_083C4E5C:: @ 0x83C4E5C
+ .string "Battle’s start$"
+
+gUnknown_Debug_083C4E6B:: @ 0x83C4E6B
+ .string "Good saying$"
+
+gUnknown_Debug_083C4E77:: @ 0x83C4E77
+ .string "Lose a battle$"
+
+gUnknown_Debug_083C4E85:: @ 0x83C4E85
+ .string "MAIL$"
+
+gUnknown_Debug_083C4E8A:: @ 0x83C4E8A
+ .string "MAIL salutation$"
+
+gUnknown_Debug_083C4E9A:: @ 0x83C4E9A
+ .string "BARD’s song$"
+
+gUnknown_Debug_083C4EA6:: @ 0x83C4EA6
+ .string "Interview$"
+
+gUnknown_Debug_083C4EB0:: @ 0x83C4EB0
+ .string "InterviewシBTス$"
+
+ .align 2
+gUnknown_Debug_083C4EC0:: @ 0x83C4EC0
+ .4byte gUnknown_Debug_083C4E54, 0x0
+ .4byte gUnknown_Debug_083C4E5C, 0x1
+ .4byte gUnknown_Debug_083C4E6B, 0xD
+ .4byte gUnknown_Debug_083C4E77, 0x3
+ .4byte gUnknown_Debug_083C4E85, 0x4
+ .4byte gUnknown_Debug_083C4E8A, 0x5
+ .4byte gUnknown_Debug_083C4E9A, 0x6
+ .4byte gUnknown_Debug_083C4EA6, 0x7
+ .4byte gUnknown_Debug_083C4EB0, 0xC
+
+gUnknown_Debug_083C4F08:: @ 0x83C4F08
+ .string "サえぃえそい"
+
+gUnknown_Debug_083C4F0E:: @ 0x83C4F0E
+ .string "BARD$"
+
+gUnknown_Debug_083C4F13:: @ 0x83C4F13
+ .string "HIPSTER$"
+
+gUnknown_Debug_083C4F1B:: @ 0x83C4F1B
+ .string "RECYCLE$"
+
+gUnknown_Debug_083C4F23:: @ 0x83C4F23
+ .string "STORYTELLER$"
+
+gUnknown_Debug_083C4F2F:: @ 0x83C4F2F
+ .string "GIDDY GUY$"
+
+gUnknown_Debug_083C4F39:: @ 0x83C4F39
+ .string "Flag OFF$"
+
+gUnknown_Debug_083C4F42:: @ 0x83C4F42
+ .string "21 letters$"
+
+gUnknown_Debug_083C4F4D:: @ 0x83C4F4D
+ .string "ナウくなる$"
+
+ .align 2
+gUnknown_Debug_083C4F54:: @ 0x83C4F54
+ .4byte gUnknown_Debug_083C4F0E, 0x0
+ .4byte gUnknown_Debug_083C4F13, 0x0
+ .4byte gUnknown_Debug_083C4F1B, 0x0
+ .4byte gUnknown_Debug_083C4F23, 0x0
+ .4byte gUnknown_Debug_083C4F2F, 0x0
+ .4byte gUnknown_Debug_083C4F39, 0x0
+ .4byte gUnknown_Debug_083C4F42, 0x0
+ .4byte gUnknown_Debug_083C4F4D, 0x0
+
+gUnknown_Debug_083C4F94:: @ 0x83C4F94
+ .string "しょうしょうおまちください!$"
+
+gUnknown_Debug_083C4FA3:: @ 0x83C4FA3
+ .string "Weather$"
+
+gUnknown_Debug_083C4FAB:: @ 0x83C4FAB
+ .string "LANETTE’S PC$"
+
+gUnknown_Debug_083C4FB8:: @ 0x83C4FB8
+ .string "SimpleText$"
+
+gUnknown_Debug_083C4FC3:: @ 0x83C4FC3
+ .string "Old man$"
+
+gUnknown_Debug_083C4FCB:: @ 0x83C4FCB
+ .string "Trend$"
+
+gUnknown_Debug_083C4FD1:: @ 0x83C4FD1
+ .string "Trend R$"
+
+gUnknown_Debug_083C4FD9:: @ 0x83C4FD9
+ .string "Town flag$"
+
+gUnknown_Debug_083C4FE3:: @ 0x83C4FE3
+ .string "Award a ribbon$"
+
+gUnknown_Debug_083C4FF2:: @ 0x83C4FF2
+ .string "{PKMN}LOTTERY$"
+
+gUnknown_Debug_083C4FFC:: @ 0x83C4FFC
+ .string "Trainer$"
+
+gUnknown_Debug_083C5004:: @ 0x83C5004
+ .string "POKéNAV D$"
+
+ .align 2
+gUnknown_Debug_083C5010:: @ 0x83C5010
+ .4byte gUnknown_Debug_083C4FA3, debug_sub_808560C+1
+ .4byte gUnknown_Debug_083C4FAB, TayaDebugMenu_LanettesPC+1
+ .4byte gUnknown_Debug_083C4FB8, TayaDebugMenu_SimpleText+1
+ .4byte gUnknown_Debug_083C4FC3, TayaDebugMenu_OldMan+1
+ .4byte gUnknown_Debug_083C4FCB, TayaDebugMenu_Trend+1
+ .4byte gUnknown_Debug_083C4FD1, TayaDebugMenu_TrendR+1
+ .4byte gUnknown_Debug_083C4FD9, TayaDebugMenu_TownFlags+1
+ .4byte gUnknown_Debug_083C4FE3, TayaDebugMenu_AwardARibbon+1
+ .4byte gUnknown_Debug_083C4FF2, TayaDebugMenu_PKMNLottery+1
+
+gUnknown_Debug_083C5058:: @ 0x83C5058
+ .4byte gUnknown_Debug_083C4FFC, TayaDebugMenu_Trainer+1
+ .4byte gUnknown_Debug_083C5004, TayaDebugMenu_PokenavD+1
+
+gUnknown_Debug_83C5068::
+ .4byte gUnknown_Debug_083C5010, 0x9
+ .4byte gUnknown_Debug_083C5058, 0x2
+
+gUnknown_Debug_083C5078:: @ 0x83C5078
+ .string "CHANP$"
+
+gUnknown_Debug_083C507E:: @ 0x83C507E
+ .string "COOL$"
+
+gUnknown_Debug_083C5083:: @ 0x83C5083
+ .string "BEAUTY$"
+
+gUnknown_Debug_083C508A:: @ 0x83C508A
+ .string "CUTE$"
+
+gUnknown_Debug_083C508F:: @ 0x83C508F
+ .string "SMART$"
+
+gUnknown_Debug_083C5095:: @ 0x83C5095
+ .string "TOUGH$"
+
+gUnknown_Debug_083C509B:: @ 0x83C509B
+ .string "WIN$"
+
+gUnknown_Debug_083C509F:: @ 0x83C509F
+ .string "VICTORY$"
+
+gUnknown_Debug_083C50A7:: @ 0x83C50A7
+ .string "BROMIDE$"
+
+gUnknown_Debug_083C50AF:: @ 0x83C50AF
+ .string "ACCESSIT$"
+
+gUnknown_Debug_083C50B8:: @ 0x83C50B8
+ .string "MARINE$"
+
+gUnknown_Debug_083C50BF:: @ 0x83C50BF
+ .string "LAND$"
+
+gUnknown_Debug_083C50C4:: @ 0x83C50C4
+ .string "SKY$"
+
+gUnknown_Debug_083C50C8:: @ 0x83C50C8
+ .string "COUNTRY$"
+
+gUnknown_Debug_083C50D0:: @ 0x83C50D0
+ .string "NATIONAL$"
+
+gUnknown_Debug_083C50D9:: @ 0x83C50D9
+ .string "EARTH$"
+
+gUnknown_Debug_083C50DF:: @ 0x83C50DF
+ .string "WORLD$"
+
+gUnknown_Debug_083C50E5:: @ 0x83C50E5
+ .string "     $"
+
+ .align 2
+gUnknown_Debug_083C50EC:: @ 0x83C50EC
+ .4byte gUnknown_Debug_083C5078, 0x43
+ .4byte gUnknown_Debug_083C507E, 0x32
+ .4byte gUnknown_Debug_083C5083, 0x33
+ .4byte gUnknown_Debug_083C508A, 0x34
+ .4byte gUnknown_Debug_083C508F, 0x35
+ .4byte gUnknown_Debug_083C5095, 0x36
+ .4byte gUnknown_Debug_083C509B, 0x44
+ .4byte gUnknown_Debug_083C509F, 0x45
+ .4byte gUnknown_Debug_083C50A7, 0x46
+ .4byte gUnknown_Debug_083C50AF, 0x47
+ .4byte gUnknown_Debug_083C50B8, 0x48
+ .4byte gUnknown_Debug_083C50BF, 0x49
+ .4byte gUnknown_Debug_083C50C4, 0x4A
+ .4byte gUnknown_Debug_083C50C8, 0x4B
+ .4byte gUnknown_Debug_083C50D0, 0x4C
+ .4byte gUnknown_Debug_083C50D9, 0x4D
+ .4byte gUnknown_Debug_083C50DF, 0x4E
+ .4byte gUnknown_Debug_083C50E5, 0x0
+
+gUnknown_Debug_083C517C:: @ 0x83C517C
+ .string "Select Ribbon$"
+
+ .endif
diff --git a/data/debug_menu_tomomichi.s b/data/debug_menu_tomomichi.s
new file mode 100644
index 000000000..19401bb85
--- /dev/null
+++ b/data/debug_menu_tomomichi.s
@@ -0,0 +1,2711 @@
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .if DEBUG
+
+gUnknown_Debug_083C0C54:: @ 0x83C0C54
+ .string "Contest graphics$"
+
+gUnknown_Debug_083C0C65:: @ 0x83C0C65
+ .string "Art Mus. graphics$"
+
+gUnknown_Debug_083C0C77:: @ 0x83C0C77
+ .string "Preview data$"
+
+gUnknown_Debug_083C0C84:: @ 0x83C0C84
+ .string "TRICK HOUSE$"
+
+gUnknown_Debug_083C0C90:: @ 0x83C0C90
+ .string "Control events$"
+
+gUnknown_Debug_083C0C9F:: @ 0x83C0C9F
+ .string "Control flags$"
+
+gUnknown_Debug_083C0CAD:: @ 0x83C0CAD
+ .string "Control WORK$"
+
+ .align 2
+gUnknown_Debug_083C0CBA:: @ 0x83C0CBA
+ .4byte gUnknown_Debug_083C0C54, TomomichiDebugMenu_ContestGraphics+1
+ .4byte gUnknown_Debug_083C0C65, TomomichiDebugMenu_ArtMusGraphics+1
+ .4byte gUnknown_Debug_083C0C77, TomomichiDebugMenu_PreviewData+1
+ .4byte gUnknown_Debug_083C0C84, TomomichiDebugMenu_TrickHouse+1
+ .4byte gUnknown_Debug_083C0C90, TomomichiDebugMenu_ControlEvents+1
+ .4byte gUnknown_Debug_083C0C9F, TomomichiDebugMenu_ControlFlags+1
+ .4byte gUnknown_Debug_083C0CAD, TomomichiDebugMenu_ControlWorks+1
+
+gUnknown_Debug_083C0CF4:: @ 0x83C0CF4
+ .string "Contest$"
+
+gUnknown_Debug_083C0CFC:: @ 0x83C0CFC
+ .string "Pokémon No.$"
+
+gUnknown_Debug_083C0D08:: @ 0x83C0D08
+ .string "ID rnd. digit$"
+
+gUnknown_Debug_083C0D16:: @ 0x83C0D16
+ .string "Contest Type$"
+
+gUnknown_Debug_083C0D23:: @ 0x83C0D23
+ .string "Poké Art$"
+
+ .align 2
+gUnknown_Debug_083C0D2C:: @ 0x83C0D2C
+ .4byte gUnknown_Debug_083C0CFC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D08, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D16, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D23, TomomichiDebugMenu_ContestGraphics_Show+1
+
+gUnknown_Debug_083C0D4C:: @ 0x83C0D4C
+ .string "Art Mus.$"
+
+gUnknown_Debug_083C0D55:: @ 0x83C0D55
+ .string "Pokémon No.$"
+
+gUnknown_Debug_083C0D61:: @ 0x83C0D61
+ .string "ID rnd. digit$"
+
+gUnknown_Debug_083C0D6F:: @ 0x83C0D6F
+ .string "Title Type$"
+
+gUnknown_Debug_083C0D7A:: @ 0x83C0D7A
+ .string "Poké Art$"
+
+ .align 2
+gUnknown_Debug_083C0D83:: @ 0x83C0D83
+ .4byte gUnknown_Debug_083C0D55, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D61, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D6F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0D7A, TomomichiDebugMenu_MuseumGraphics_Show+1
+
+gUnknown_Debug_083C0DA4:: @ 0x83C0DA4
+ .string "Preview$"
+
+gUnknown_Debug_083C0DAC:: @ 0x83C0DAC
+ .string "Pokémon No.$"
+
+gUnknown_Debug_083C0DB8:: @ 0x83C0DB8
+ .string "ID rnd. digit$"
+
+gUnknown_Debug_083C0DC6:: @ 0x83C0DC6
+ .string "Type$"
+
+gUnknown_Debug_083C0DCB:: @ 0x83C0DCB
+ .string "Poké Art$"
+
+ .align 2
+gUnknown_Debug_083C0DD4:: @ 0x83C0DD4
+ .4byte gUnknown_Debug_083C0DAC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0DB8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0DC6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C0DCB, debug_sub_808ECA4+1
+
+gUnknown_Debug_083C0DF4:: @ 0x83C0DF4
+ .string "Trick related$"
+
+gUnknown_Debug_083C0E02:: @ 0x83C0E02
+ .string "Level$"
+
+gUnknown_Debug_083C0E08:: @ 0x83C0E08
+ .string "Trick Master$"
+
+ .align 2
+gUnknown_Debug_083C0E15:: @ 0x83C0E15
+ .4byte gUnknown_Debug_083C0E02, debug_sub_808EB58+1
+ .4byte gUnknown_Debug_083C0E08, debug_sub_808EBB4+1
+
+gUnknown_Debug_083C0E28:: @ 0x83C0E28
+ .string "パート1$"
+
+gUnknown_Debug_083C0E2D:: @ 0x83C0E2D
+ .string "パート2$"
+
+ .align 2
+gUnknown_Debug_083C0E32:: @ 0x83C0E32
+ .4byte gUnknown_Debug_083C0E28, debug_sub_808BFC4+1
+ .4byte gUnknown_Debug_083C0E2D, debug_sub_808C014+1
+
+gUnknown_Debug_083C0E44:: @ 0x83C0E44
+ .string "イベントFLAG$"
+
+gUnknown_Debug_083C0E4D:: @ 0x83C0E4D
+ .string "バニシュFLAG$"
+
+gUnknown_Debug_083C0E56:: @ 0x83C0E56
+ .string "トレーナーFLAG$"
+
+gUnknown_Debug_083C0E60:: @ 0x83C0E60
+ .string "SYSFLAG$"
+
+gUnknown_Debug_083C0E68:: @ 0x83C0E68
+ .string "BALLバニシュFLAG$"
+
+gUnknown_Debug_083C0E75:: @ 0x83C0E75
+ .string "FH$"
+
+gUnknown_Debug_083C0E78:: @ 0x83C0E78
+ .string "FH-OBJ$"
+
+ .align 2
+gUnknown_Debug_083C0E7F:: @ 0x83C0E7F
+ .4byte gUnknown_Debug_083C0E44, debug_sub_808C31C+1
+ .4byte gUnknown_Debug_083C0E4D, debug_sub_808C7C8+1
+ .4byte gUnknown_Debug_083C0E56, debug_sub_808CC74+1
+ .4byte gUnknown_Debug_083C0E60, debug_sub_808CF10+1
+ .4byte gUnknown_Debug_083C0E68, debug_sub_808D844+1
+ .4byte gUnknown_Debug_083C0E75, debug_sub_808D600+1
+ .4byte gUnknown_Debug_083C0E78, debug_sub_808D3BC+1
+
+gUnknown_Debug_083C0EB8:: @ 0x83C0EB8
+ .string "SAVEWORK$"
+
+gUnknown_Debug_083C0EC1:: @ 0x83C0EC1
+ .string "SYSWORK$"
+
+gUnknown_Debug_083C0EC9:: @ 0x83C0EC9
+ .string "LOCALWORK$"
+
+gUnknown_Debug_083C0ED3:: @ 0x83C0ED3
+ .string "OBJWORK$"
+
+gUnknown_Debug_083C0EDB:: @ 0x83C0EDB
+ .string "ANSWORK$"
+
+gUnknown_Debug_083C0EE3:: @ 0x83C0EE3
+ .string "SAVEWORK パート2$"
+
+ .align 2
+gUnknown_Debug_083C0EF1:: @ 0x83C0EF1
+ .4byte gUnknown_Debug_083C0EB8, debug_sub_808DB0C+1
+ .4byte gUnknown_Debug_083C0EC1, debug_sub_808E36C+1
+ .4byte gUnknown_Debug_083C0EC9, debug_sub_808E6C0+1
+ .4byte gUnknown_Debug_083C0ED3, debug_sub_808E90C+1
+ .4byte gUnknown_Debug_083C0EDB, debug_sub_808DA30+1
+ .4byte gUnknown_Debug_083C0EE3, debug_sub_808DFC0+1
+
+gUnknown_Debug_083C0F24:: @ 0x83C0F24
+ .string "クリアご$"
+
+gUnknown_Debug_083C0F29:: @ 0x83C0F29
+ .string "コインこうにゅうかのう$"
+
+gUnknown_Debug_083C0F35:: @ 0x83C0F35
+ .string "コトキサポーターセット$"
+
+gUnknown_Debug_083C0F41:: @ 0x83C0F41
+ .string "ニューキンセツOPEN$"
+
+gUnknown_Debug_083C0F4D:: @ 0x83C0F4D
+ .string "れんらくせんにのれる$"
+
+gUnknown_Debug_083C0F58:: @ 0x83C0F58
+ .string "タマゴついか$"
+
+gUnknown_Debug_083C0F5F:: @ 0x83C0F5F
+ .string "アイテムいっぱい$"
+
+gUnknown_Debug_083C0F68:: @ 0x83C0F68
+ .string "グッズいっぱい$"
+
+gUnknown_Debug_083C0F70:: @ 0x83C0F70
+ .string "COINいっぱい$"
+
+ .align 2
+gUnknown_Debug_083C0F79:: @ 0x83C0F79
+ .4byte gUnknown_Debug_083C0F24, debug_sub_808C0EC+1
+ .4byte gUnknown_Debug_083C0F29, debug_sub_808C104+1
+ .4byte gUnknown_Debug_083C0F35, debug_sub_808C11C+1
+ .4byte gUnknown_Debug_083C0F41, debug_sub_808C134+1
+ .4byte gUnknown_Debug_083C0F4D, debug_sub_808C14C+1
+ .4byte gUnknown_Debug_083C0F58, debug_sub_808C164+1
+ .4byte gUnknown_Debug_083C0F5F, debug_sub_808C17C+1
+ .4byte gUnknown_Debug_083C0F68, debug_sub_808C194+1
+ .4byte gUnknown_Debug_083C0F70, debug_sub_808C1AC+1
+
+gUnknown_Debug_083C0FC4:: @ 0x83C0FC4
+ .string "ムロジムOPEN$"
+
+gUnknown_Debug_083C0FCD:: @ 0x83C0FCD
+ .string "おかねを0へ$"
+
+gUnknown_Debug_083C0FD4:: @ 0x83C0FD4
+ .string "ドジョッチ FULL$"
+
+gUnknown_Debug_083C0FDF:: @ 0x83C0FDF
+ .string "キノココ FULL$"
+
+gUnknown_Debug_083C0FE9:: @ 0x83C0FE9
+ .string "ドジョッチ タマゴ$"
+
+gUnknown_Debug_083C0FF3:: @ 0x83C0FF3
+ .string "キノココ タマゴ$"
+
+ .align 2
+gUnknown_Debug_083C0FFC:: @ 0x83C0FFC
+ .4byte gUnknown_Debug_083C0FC4, debug_sub_808C1C4+1
+ .4byte gUnknown_Debug_083C0FCD, debug_sub_808C1DC+1
+ .4byte gUnknown_Debug_083C0FD4, debug_sub_808C1F4+1
+ .4byte gUnknown_Debug_083C0FDF, debug_sub_808C20C+1
+ .4byte gUnknown_Debug_083C0FE9, debug_sub_808C224+1
+ .4byte gUnknown_Debug_083C0FF3, debug_sub_808C23C+1
+
+gUnknown_Debug_083C102C:: @ 0x83C102C
+ .string "ANSWORK みかんせい$"
+
+ .align 2
+gUnknown_Debug_083C103A:: @ 0x83C103A
+ .4byte gUnknown_Debug_083C102C, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1044:: @ 0x83C1044
+ .string "FHーOBJ00ー08$"
+
+gUnknown_Debug_083C1050:: @ 0x83C1050
+ .string "FHーOBJ09ー15$"
+
+ .align 2
+gUnknown_Debug_083C105C:: @ 0x83C105C
+ .4byte gUnknown_Debug_083C1044, debug_sub_808D450+1
+ .4byte gUnknown_Debug_083C1050, debug_sub_808D4A8+1
+
+gUnknown_Debug_083C106C:: @ 0x83C106C
+ .string "FHーOBJ00$"
+
+gUnknown_Debug_083C1075:: @ 0x83C1075
+ .string "FHーOBJ01$"
+
+gUnknown_Debug_083C107E:: @ 0x83C107E
+ .string "FHーOBJ02$"
+
+gUnknown_Debug_083C1087:: @ 0x83C1087
+ .string "FHーOBJ03$"
+
+gUnknown_Debug_083C1090:: @ 0x83C1090
+ .string "FHーOBJ04$"
+
+gUnknown_Debug_083C1099:: @ 0x83C1099
+ .string "FHーOBJ05$"
+
+gUnknown_Debug_083C10A2:: @ 0x83C10A2
+ .string "FHーOBJ06$"
+
+gUnknown_Debug_083C10AB:: @ 0x83C10AB
+ .string "FHーOBJ07$"
+
+gUnknown_Debug_083C10B4:: @ 0x83C10B4
+ .string "FHーOBJ08$"
+
+ .align 2
+gUnknown_Debug_083C10BD:: @ 0x83C10BD
+ .4byte gUnknown_Debug_083C106C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1075, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C107E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1087, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1090, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1099, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C10A2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C10AB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C10B4, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1108:: @ 0x83C1108
+ .string "FH-OBJ09$"
+
+gUnknown_Debug_083C1111:: @ 0x83C1111
+ .string "FH-OBJ10$"
+
+gUnknown_Debug_083C111A:: @ 0x83C111A
+ .string "FH-OBJ11$"
+
+gUnknown_Debug_083C1123:: @ 0x83C1123
+ .string "FH-OBJ12$"
+
+gUnknown_Debug_083C112C:: @ 0x83C112C
+ .string "FH-OBJ13$"
+
+gUnknown_Debug_083C1135:: @ 0x83C1135
+ .string "FH-OBJ14$"
+
+gUnknown_Debug_083C113E:: @ 0x83C113E
+ .string "FH-OBJ15$"
+
+gUnknown_Debug_083C1147:: @ 0x83C1147
+ .string "$"
+
+gUnknown_Debug_083C1148:: @ 0x83C1148
+ .string "$"
+
+ .align 2
+gUnknown_Debug_083C1149:: @ 0x83C1149
+ .4byte gUnknown_Debug_083C1108, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1111, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C111A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1123, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C112C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1135, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C113E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1147, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1148, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1194:: @ 0x83C1194
+ .byte 9, 7
+
+gUnknown_Debug_083C1196:: @ 0x83C1196
+ .2byte 0x0011, 0x0012, 0x0013, 0x0014, 0x0015, 0x0016, 0x0017, 0x0018, 0x0019
+ .2byte 0x001a, 0x001b, 0x001c, 0x001d, 0x001e, 0x001f, 0x0020, 0x0000, 0x0000
+
+gUnknown_Debug_083C11BA:: @ 0x83C11BA
+ .string "FH-00-08$"
+
+gUnknown_Debug_083C11C3:: @ 0x83C11C3
+ .string "FH-09-15$"
+
+ .align 2
+gUnknown_Debug_083C11CC:: @ 0x83C11CC
+ .4byte gUnknown_Debug_083C11BA, debug_sub_808D694+1
+ .4byte gUnknown_Debug_083C11C3, debug_sub_808D6EC+1
+
+gUnknown_Debug_083C11DC:: @ 0x83C11DC
+ .string "FH-00$"
+
+gUnknown_Debug_083C11E2:: @ 0x83C11E2
+ .string "FH-01$"
+
+gUnknown_Debug_083C11E8:: @ 0x83C11E8
+ .string "FH-02$"
+
+gUnknown_Debug_083C11EE:: @ 0x83C11EE
+ .string "FH-03$"
+
+gUnknown_Debug_083C11F4:: @ 0x83C11F4
+ .string "FH-04$"
+
+gUnknown_Debug_083C11FA:: @ 0x83C11FA
+ .string "FH-05$"
+
+gUnknown_Debug_083C1200:: @ 0x83C1200
+ .string "FH-06$"
+
+gUnknown_Debug_083C1206:: @ 0x83C1206
+ .string "FH-07$"
+
+gUnknown_Debug_083C120C:: @ 0x83C120C
+ .string "FH-08$"
+
+ .align 2
+gUnknown_Debug_083C1212:: @ 0x83C1212
+ .4byte gUnknown_Debug_083C11DC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C11E2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C11E8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C11EE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C11F4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C11FA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1200, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1206, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C120C, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C125C:: @ 0x83C125C
+ .string "FHー09$"
+
+gUnknown_Debug_083C1262:: @ 0x83C1262
+ .string "FHー10$"
+
+gUnknown_Debug_083C1268:: @ 0x83C1268
+ .string "FHー11$"
+
+gUnknown_Debug_083C126E:: @ 0x83C126E
+ .string "FHー12$"
+
+gUnknown_Debug_083C1274:: @ 0x83C1274
+ .string "FHー13$"
+
+gUnknown_Debug_083C127A:: @ 0x83C127A
+ .string "FHー14$"
+
+gUnknown_Debug_083C1280:: @ 0x83C1280
+ .string "FHー15$"
+
+gUnknown_Debug_083C1286:: @ 0x83C1286
+ .string "$"
+
+gUnknown_Debug_083C1287:: @ 0x83C1287
+ .string "$"
+
+ .align 2
+gUnknown_Debug_083C1288:: @ 0x83C1288
+ .4byte gUnknown_Debug_083C125C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1262, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1268, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C126E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1274, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C127A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1280, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1286, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1287, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C12D0:: @ 0x83C12D0
+ .byte 9, 7
+
+gUnknown_Debug_083C12D2:: @ 0x83C12D2
+ .2byte 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009
+ .2byte 0x000a, 0x000b, 0x000c, 0x000d, 0x000e, 0x000f, 0x0010, 0x0000, 0x0000
+
+gUnknown_Debug_083C12F6:: @ 0x83C12F6
+ .string "BATCH$"
+
+gUnknown_Debug_083C12FC:: @ 0x83C12FC
+ .string "タウンとうちゃく$"
+
+gUnknown_Debug_083C1305:: @ 0x83C1305
+ .string "シティとうちゃく$"
+
+gUnknown_Debug_083C130E:: @ 0x83C130E
+ .string "GET$"
+
+gUnknown_Debug_083C1312:: @ 0x83C1312
+ .string "そのた1$"
+
+gUnknown_Debug_083C1317:: @ 0x83C1317
+ .string "そのた2$"
+
+gUnknown_Debug_083C131C:: @ 0x83C131C
+ .string "そのた3$"
+
+gUnknown_Debug_083C1321:: @ 0x83C1321
+ .string "そのた4$"
+
+gUnknown_Debug_083C1326:: @ 0x83C1326
+ .string "そのた とうちゃく$"
+
+gUnknown_Debug_083C1330:: @ 0x83C1330
+ .4byte gUnknown_Debug_083C12F6, debug_sub_808CFA4+1
+ .4byte gUnknown_Debug_083C12FC, debug_sub_808CFFC+1
+ .4byte gUnknown_Debug_083C1305, debug_sub_808D054+1
+ .4byte gUnknown_Debug_083C130E, debug_sub_808D0AC+1
+ .4byte gUnknown_Debug_083C1312, debug_sub_808D104+1
+ .4byte gUnknown_Debug_083C1317, debug_sub_808D15C+1
+ .4byte gUnknown_Debug_083C131C, debug_sub_808D1B4+1
+ .4byte gUnknown_Debug_083C1321, debug_sub_808D20C+1
+ .4byte gUnknown_Debug_083C1326, debug_sub_808D264+1
+
+gUnknown_Debug_083C1378:: @ 0x83C1378
+ .string "BATCH01ーGET$"
+
+gUnknown_Debug_083C1384:: @ 0x83C1384
+ .string "BATCH02ーGET$"
+
+gUnknown_Debug_083C1390:: @ 0x83C1390
+ .string "BATCH03ーGET$"
+
+gUnknown_Debug_083C139C:: @ 0x83C139C
+ .string "BATCH04ーGET$"
+
+gUnknown_Debug_083C13A8:: @ 0x83C13A8
+ .string "BATCH05ーGET$"
+
+gUnknown_Debug_083C13B4:: @ 0x83C13B4
+ .string "BATCH06ーGET$"
+
+gUnknown_Debug_083C13C0:: @ 0x83C13C0
+ .string "BATCH07ーGET$"
+
+gUnknown_Debug_083C13CC:: @ 0x83C13CC
+ .string "BATCH08ーGET$"
+
+gUnknown_Debug_083C13D8:: @ 0x83C13D8
+ .4byte gUnknown_Debug_083C1378, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1384, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1390, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C139C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C13A8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C13B4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C13C0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C13CC, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1418:: @ 0x83C1418
+ .string "T101ARRIVE$"
+
+gUnknown_Debug_083C1423:: @ 0x83C1423
+ .string "T102ARRIVE$"
+
+gUnknown_Debug_083C142E:: @ 0x83C142E
+ .string "T103ARRIVE$"
+
+gUnknown_Debug_083C1439:: @ 0x83C1439
+ .string "T104ARRIVE$"
+
+gUnknown_Debug_083C1444:: @ 0x83C1444
+ .string "T105ARRIVE$"
+
+gUnknown_Debug_083C144F:: @ 0x83C144F
+ .string "T106ARRIVE$"
+
+gUnknown_Debug_083C145A:: @ 0x83C145A
+ .string "T107ARRIVE$"
+
+ .align 2
+gUnknown_Debug_083C1465:: @ 0x83C1465
+ .4byte gUnknown_Debug_083C1418, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1423, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C142E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1439, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1444, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C144F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C145A, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C14A0:: @ 0x83C14A0
+ .string "C101ARRIVE$"
+
+gUnknown_Debug_083C14AB:: @ 0x83C14AB
+ .string "C102ARRIVE$"
+
+gUnknown_Debug_083C14B6:: @ 0x83C14B6
+ .string "C103ARRIVE$"
+
+gUnknown_Debug_083C14C1:: @ 0x83C14C1
+ .string "C104ARRIVE$"
+
+gUnknown_Debug_083C14CC:: @ 0x83C14CC
+ .string "C105ARRIVE$"
+
+gUnknown_Debug_083C14D7:: @ 0x83C14D7
+ .string "C106ARRIVE$"
+
+gUnknown_Debug_083C14E2:: @ 0x83C14E2
+ .string "C107ARRIVE$"
+
+gUnknown_Debug_083C14ED:: @ 0x83C14ED
+ .string "C108ARRIVE$"
+
+gUnknown_Debug_083C14F8:: @ 0x83C14F8
+ .string "C109ARRIVE$"
+
+ .align 2
+gUnknown_Debug_083C1503:: @ 0x83C1503
+ .4byte gUnknown_Debug_083C14A0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14AB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14B6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14C1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14CC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14D7, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14E2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14ED, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C14F8, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C154C:: @ 0x83C154C
+ .string "SYSーPOKEMONーGET$"
+
+gUnknown_Debug_083C155C:: @ 0x83C155C
+ .string "SYSーZUKANーGET$"
+
+gUnknown_Debug_083C156A:: @ 0x83C156A
+ .string "SYSーPOKEGEARーGET$"
+
+gUnknown_Debug_083C157B:: @ 0x83C157B
+ .string "SYSーRIBBONーGET$"
+
+ .align 2
+gUnknown_Debug_083C158A:: @ 0x83C158A
+ .4byte gUnknown_Debug_083C154C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C155C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C156A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C157B, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C15AC:: @ 0x83C15AC
+ .string "SYSーGAMEーCLEAR$"
+
+gUnknown_Debug_083C15BB:: @ 0x83C15BB
+ .string "SYSーKAIWAーUSED$"
+
+gUnknown_Debug_083C15CA:: @ 0x83C15CA
+ .string "SYSーNOWーOYAJIーMEET$"
+
+gUnknown_Debug_083C15DD:: @ 0x83C15DD
+ .string "SYSーUSEーWAZAーFLASH$"
+
+gUnknown_Debug_083C15F0:: @ 0x83C15F0
+ .string "SYSーUSEーWAZAーKAIRIKI$"
+
+gUnknown_Debug_083C1605:: @ 0x83C1605
+ .string "SYSーWEATHERーCTRL$"
+
+gUnknown_Debug_083C1616:: @ 0x83C1616
+ .string "SYSーCYCLINGーROAD$"
+
+gUnknown_Debug_083C1627:: @ 0x83C1627
+ .string "SYSーSAFARIーMODE$"
+
+gUnknown_Debug_083C1637:: @ 0x83C1637
+ .string "SYSーCRUISEーMODE$"
+
+ .align 2
+gUnknown_Debug_083C1647:: @ 0x83C1647
+ .4byte gUnknown_Debug_083C15AC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C15BB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C15CA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C15DD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C15F0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1605, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1616, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1627, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1637, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1690:: @ 0x83C1690
+ .string "SYSーTVーHOME$"
+
+gUnknown_Debug_083C169C:: @ 0x83C169C
+ .string "SYSーTVーWATCH$"
+
+gUnknown_Debug_083C16A9:: @ 0x83C16A9
+ .string "SYSーTVSTART$"
+
+gUnknown_Debug_083C16B5:: @ 0x83C16B5
+ .string "SYSーPOPWORDーINPUT$"
+
+gUnknown_Debug_083C16C7:: @ 0x83C16C7
+ .string "SYSーMIXーRECORD$"
+
+gUnknown_Debug_083C16D6:: @ 0x83C16D6
+ .string "SYSーCLOCKーSET$"
+
+gUnknown_Debug_083C16E4:: @ 0x83C16E4
+ .string "SYSーCAVEーSHIP$"
+
+gUnknown_Debug_083C16F2:: @ 0x83C16F2
+ .string "SYSーCAVEーWONDER$"
+
+gUnknown_Debug_083C1702:: @ 0x83C1702
+ .string "SYSーCAVEーBATTLE$"
+
+ .align 2
+gUnknown_Debug_083C1712:: @ 0x83C1712
+ .4byte gUnknown_Debug_083C1690, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C169C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16A9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16B5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16C7, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16D6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16E4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C16F2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1702, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C175C:: @ 0x83C175C
+ .string "SYSーSPECIALーZUKAN$"
+
+gUnknown_Debug_083C176E:: @ 0x83C176E
+ .string "SYSーASASEーTIDE$"
+
+gUnknown_Debug_083C177D:: @ 0x83C177D
+ .string "SYSーRIBBONーGET$"
+
+gUnknown_Debug_083C178C:: @ 0x83C178C
+ .string "SYSーPASOーMAYUMI$"
+
+gUnknown_Debug_083C179C:: @ 0x83C179C
+ .string "SYSーEXDATAーENABLE$"
+
+gUnknown_Debug_083C17AE:: @ 0x83C17AE
+ .string "SYSーTENJIーANAWOHORU$"
+
+gUnknown_Debug_083C17C2:: @ 0x83C17C2
+ .string "SYSーTENJIーKAIRIKI$"
+
+gUnknown_Debug_083C17D4:: @ 0x83C17D4
+ .string "SYSーTENJIーWAIT$"
+
+gUnknown_Debug_083C17E3:: @ 0x83C17E3
+ .string "SYSーTENJIーSORAWOTOBU$"
+
+gUnknown_Debug_083C17F8:: @ 0x83C17F8
+ .4byte gUnknown_Debug_083C175C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C176E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C177D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C178C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C179C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C17AE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C17C2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C17D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C17E3, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1840:: @ 0x83C1840
+ .string "SYSーENCーUPーITEM$"
+
+gUnknown_Debug_083C1850:: @ 0x83C1850
+ .string "SYSーENEーDOWNーITEM$"
+
+gUnknown_Debug_083C1862:: @ 0x83C1862
+ .string "SYSーKOKOROーEVENT$"
+
+gUnknown_Debug_083C1873:: @ 0x83C1873
+ .string "SYSーMOVEーPOKEーNEWS$"
+
+gUnknown_Debug_083C1886:: @ 0x83C1886
+ .string "SYSーASASEーITEM$"
+
+gUnknown_Debug_083C1895:: @ 0x83C1895
+ .string "SYSーBーDASH$"
+
+gUnknown_Debug_083C18A0:: @ 0x83C18A0
+ .string "SYSーCTRLーOBJーDELETE$"
+
+gUnknown_Debug_083C18B4:: @ 0x83C18B4
+ .string "$"
+
+gUnknown_Debug_083C18B5:: @ 0x83C18B5
+ .string "$"
+
+ .align 2
+gUnknown_Debug_083C18B8:: @ 0x83C18B8
+ .4byte gUnknown_Debug_083C1840, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1850, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1862, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1873, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1886, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1895, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C18A0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C18B4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C18B5, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1900:: @ 0x83C1900
+ .string "SYSーARRIVEーSUBMARINECAVE$"
+
+gUnknown_Debug_083C1919:: @ 0x83C1919
+ .string "SYSーARRIVEーBATTLETOWER$"
+
+gUnknown_Debug_083C1930:: @ 0x83C1930
+ .string "SYSーARRIVEーISLAND$"
+
+gUnknown_Debug_083C1942:: @ 0x83C1942
+ .string "SYSーARRIVEーLEAGUE$"
+
+gUnknown_Debug_083C1954:: @ 0x83C1954
+ .string "SYSーARRIVEーSORANOHASHIRA$"
+
+gUnknown_Debug_083C196D:: @ 0x83C196D
+ .string "$"
+
+gUnknown_Debug_083C196E:: @ 0x83C196E
+ .string "$"
+
+gUnknown_Debug_083C196F:: @ 0x83C196F
+ .string "$"
+
+gUnknown_Debug_083C1970:: @ 0x83C1970
+ .string "$"
+
+ .align 2
+gDebug_0x83C1974:: @ 0x83C1974
+ .4byte gUnknown_Debug_083C1900, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1919, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1930, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1942, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1954, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C196D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C196E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C196F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1970, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C19BC:: @ 0x83C19BC
+ .byte 0x08, 0x07, 0x09, 0x04, 0x09, 0x09, 0x09, 0x07, 0x05, 0x00
+
+gUnknown_Debug_083C19C6:: @ 0x83C19C6
+ .2byte 0x0807, 0x0808, 0x0809, 0x080a, 0x080b, 0x080c, 0x080d, 0x080e, 0x0000
+ .2byte 0x080f, 0x0810, 0x0811, 0x0812, 0x0813, 0x0814, 0x0815, 0x0000, 0x0000
+ .2byte 0x0816, 0x0817, 0x0818, 0x0819, 0x081a, 0x081b, 0x081c, 0x081d, 0x081e
+ .2byte 0x0800, 0x0801, 0x0802, 0x083b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+ .2byte 0x0804, 0x0805, 0x0806, 0x0828, 0x0829, 0x082a, 0x082b, 0x082c, 0x082d
+ .2byte 0x0830, 0x0831, 0x0832, 0x0833, 0x0834, 0x0835, 0x0837, 0x0838, 0x0839
+ .2byte 0x0836, 0x083a, 0x083b, 0x084b, 0x084c, 0x084f, 0x0850, 0x0851, 0x0852
+ .2byte 0x084d, 0x084e, 0x0853, 0x085d, 0x085f, 0x0860, 0x0861, 0x0000, 0x0000
+ .2byte 0x0847, 0x0848, 0x0849, 0x0854, 0x085e, 0x0000, 0x0000, 0x0000, 0x0000
+
+gDebug_0x83C1A68:: @ 0x83C1A68
+ .string "FVーBALL パート1$"
+
+ .align 2
+gUnknown_Debug_083C1A78:: @ 0x83C1A78
+ .4byte gDebug_0x83C1A68, debug_sub_808D8D8+1
+
+gUnknown_Debug_083C1A80:: @ 0x83C1A80
+ .string "FVーBALL1ー78$"
+
+gUnknown_Debug_083C1A8C:: @ 0x83C1A8C
+ .string "FVーBALL1ー133$"
+
+ .align 2
+gUnknown_Debug_083C1A9C:: @ 0x83C1A9C
+ .4byte gUnknown_Debug_083C1A80, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1A8C, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C1AAC:: @ 0x83C1AAC
+ .string "い "
+gUnknown_Debug_083C1AAE:: @ 0x83C1AAE
+ .string "ょえヘえ              "
+
+gUnknown_Debug_083C1AC0:: @ 0x83C1AC0
+ .string "ジムリーダー$"
+
+gUnknown_Debug_083C1AC7:: @ 0x83C1AC7
+ .string "してんのう$"
+
+gUnknown_Debug_083C1ACD:: @ 0x83C1ACD
+ .string "みつる/Champロード$"
+
+ .align 2
+gUnknown_Debug_083C1ADC:: @ 0x83C1ADC
+ .4byte gUnknown_Debug_083C1AC0, debug_sub_808CD08+1
+ .4byte gUnknown_Debug_083C1AC7, debug_sub_808CD60+1
+ .4byte gUnknown_Debug_083C1ACD, debug_sub_808CDB8+1
+
+gUnknown_Debug_083C1AF4:: @ 0x83C1AF4
+ .string "FTーGYMー01ーLEADER$"
+
+gUnknown_Debug_083C1B05:: @ 0x83C1B05
+ .string "FTーGYMー02ーLEADER$"
+
+gUnknown_Debug_083C1B16:: @ 0x83C1B16
+ .string "FTーGYMー03ーLEADER$"
+
+gUnknown_Debug_083C1B27:: @ 0x83C1B27
+ .string "FTーGYMー04ーLEADER$"
+
+gUnknown_Debug_083C1B38:: @ 0x83C1B38
+ .string "FTーGYMー05ーLEADER$"
+
+gUnknown_Debug_083C1B49:: @ 0x83C1B49
+ .string "FTーGYMー06ーLEADER$"
+
+gUnknown_Debug_083C1B5A:: @ 0x83C1B5A
+ .string "FTーGYMー07ーLEADER$"
+
+gUnknown_Debug_083C1B6B:: @ 0x83C1B6B
+ .string "FTーGYMー08ーLEADER$"
+
+gUnknown_Debug_083C1B7C:: @ 0x83C1B7C
+ .4byte gUnknown_Debug_083C1AF4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B05, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B16, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B27, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B38, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B49, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B5A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1B6B, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1BBC:: @ 0x83C1BBC
+ .string "FTーSHITENー01$"
+
+gUnknown_Debug_083C1BC9:: @ 0x83C1BC9
+ .string "FTーSHITENー02$"
+
+gUnknown_Debug_083C1BD6:: @ 0x83C1BD6
+ .string "FTーSHITENー03$"
+
+gUnknown_Debug_083C1BE3:: @ 0x83C1BE3
+ .string "FTーSHITENー04$"
+
+gUnknown_Debug_083C1BF0:: @ 0x83C1BF0
+ .4byte gUnknown_Debug_083C1BBC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1BC9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1BD6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1BE3, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1C10:: @ 0x83C1C10
+ .string "FTーMITSURUー01ーCAVEーD1301$"
+
+ .align 2
+gUnknown_Debug_083C1C2C:: @ 0x83C1C2C
+ .4byte gUnknown_Debug_083C1C10, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C1C34:: @ 0x83C1C34
+ .string "くえあ "
+gUnknown_Debug_083C1C38:: @ 0x83C1C38
+ .string "“え’え,えCえGえOえSえZえ  iえjえkえlえ          mえ                "
+
+gUnknown_Debug_083C1C6E:: @ 0x83C1C6E
+ .string "120/119ばんどうろカクレオン$"
+
+gUnknown_Debug_083C1C80:: @ 0x83C1C80
+ .string "そのた1 / SUPPORTM/W$"
+
+gUnknown_Debug_083C1C92:: @ 0x83C1C92
+ .string "ODAMAKI/FIGHTER1$"
+
+gUnknown_Debug_083C1CA3:: @ 0x83C1CA3
+ .string "MITSURU/TENKI$"
+
+gUnknown_Debug_083C1CB1:: @ 0x83C1CB1
+ .string "そのた2 /DAIGO$"
+
+gUnknown_Debug_083C1CBD:: @ 0x83C1CBD
+ .string "POKE/POKEMON$"
+
+gUnknown_Debug_083C1CCA:: @ 0x83C1CCA
+ .string "MAMA/SUPPORT02$"
+
+gUnknown_Debug_083C1CD9:: @ 0x83C1CD9
+ .string "HAGI$"
+
+gUnknown_Debug_083C1CDE:: @ 0x83C1CDE
+ .string "SUPPORT01$"
+
+gUnknown_Debug_083C1CE8:: @ 0x83C1CE8
+ .4byte gUnknown_Debug_083C1C6E, debug_sub_808C85C+1
+ .4byte gUnknown_Debug_083C1C80, debug_sub_808C8B4+1
+ .4byte gUnknown_Debug_083C1C92, debug_sub_808C90C+1
+ .4byte gUnknown_Debug_083C1CA3, debug_sub_808C964+1
+ .4byte gUnknown_Debug_083C1CB1, debug_sub_808C9BC+1
+ .4byte gUnknown_Debug_083C1CBD, debug_sub_808CA14+1
+ .4byte gUnknown_Debug_083C1CCA, debug_sub_808CA6C+1
+ .4byte gUnknown_Debug_083C1CD9, debug_sub_808CAC4+1
+ .4byte gUnknown_Debug_083C1CDE, debug_sub_808CB1C+1
+
+gUnknown_Debug_083C1D30:: @ 0x83C1D30
+ .string "FVーKAKUREONBー01ーFIELDーR120$"
+
+gUnknown_Debug_083C1D4B:: @ 0x83C1D4B
+ .string "FVーKAKUREー01ーFIELDーR120$"
+
+gUnknown_Debug_083C1D63:: @ 0x83C1D63
+ .string "FVーKAKUREー02ーFIELDーR120$"
+
+gUnknown_Debug_083C1D7B:: @ 0x83C1D7B
+ .string "FVーKAKUREー03ーFIELDーR120$"
+
+gUnknown_Debug_083C1D93:: @ 0x83C1D93
+ .string "FVーKAKUREー04ーFIELDーR120$"
+
+gUnknown_Debug_083C1DAB:: @ 0x83C1DAB
+ .string "FVーKAKUREー05ーFIELDーR120$"
+
+gUnknown_Debug_083C1DC3:: @ 0x83C1DC3
+ .string "FVーKAKUREー06ーFIELDーR120$"
+
+gUnknown_Debug_083C1DDB:: @ 0x83C1DDB
+ .string "FVーKAKUREー01ーFIELDーR119$"
+
+gUnknown_Debug_083C1DF3:: @ 0x83C1DF3
+ .string "FVーKAKUREー02ーFIELDーR119$"
+
+ .align 2
+gUnknown_Debug_083C1E0C:: @ 0x83C1E0C
+ .4byte gUnknown_Debug_083C1D30, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1D4B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1D63, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1D7B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1D93, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1DAB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1DC3, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1DDB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1DF3, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1E54:: @ 0x83C1E54
+ .string "FVーBALLー01ーC107ーR0501$"
+
+gUnknown_Debug_083C1E6A:: @ 0x83C1E6A
+ .string "FVーWORKERM1ー04ーFIELDーC104$"
+
+gUnknown_Debug_083C1E84:: @ 0x83C1E84
+ .string "FVーSUBMARINEー06ーCAVEーD1101$"
+
+gUnknown_Debug_083C1E9F:: @ 0x83C1E9F
+ .string "FVーGUESTーALLーC106ーR0102$"
+
+gUnknown_Debug_083C1EB7:: @ 0x83C1EB7
+ .string "FVーHORIDASIー01ーC106ーR1106$"
+
+gUnknown_Debug_083C1ED1:: @ 0x83C1ED1
+ .string "FVーMIDDLEM1ー01ーR110ーR0101$"
+
+gUnknown_Debug_083C1EEB:: @ 0x83C1EEB
+ .string "FVーFUNEー01ーC102ーR0601$"
+
+gUnknown_Debug_083C1F01:: @ 0x83C1F01
+ .string "FVーSUPPORTWー01ーT101ーR0202$"
+
+gUnknown_Debug_083C1F1B:: @ 0x83C1F1B
+ .string "FVーSUPPORTMー01ーT101ーR0102$"
+
+ .align 2
+gUnknown_Debug_083C1F38:: @ 0x83C1F38
+ .4byte gUnknown_Debug_083C1E54, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1E6A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1E84, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1E9F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1EB7, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1ED1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1EEB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1F01, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1F1B, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C1F80:: @ 0x83C1F80
+ .string "FVーODAMAKIー01ーFIELDーR101$"
+
+gUnknown_Debug_083C1F99:: @ 0x83C1F99
+ .string "FVーODAMAKIー01ーT101ーR0301$"
+
+gUnknown_Debug_083C1FB2:: @ 0x83C1FB2
+ .string "FVーODAMAKIーHYOKAーT101ーR0301$"
+
+gUnknown_Debug_083C1FCE:: @ 0x83C1FCE
+ .string "FVーODAMAKIーHYOKAーFIELDーR101$"
+
+gUnknown_Debug_083C1FEA:: @ 0x83C1FEA
+ .string "FVーODAMAKIーHYOKAーFIELDーR103$"
+
+gUnknown_Debug_083C2006:: @ 0x83C2006
+ .string "FVーODAMAKIー01ーC109ーR0105$"
+
+gUnknown_Debug_083C201F:: @ 0x83C201F
+ .string "FVーFIGHTERー01ーCAVEーD0201$"
+
+gUnknown_Debug_083C2038:: @ 0x83C2038
+ .string "FVーFIGHTERー01ーT106ーR0201$"
+
+gUnknown_Debug_083C2051:: @ 0x83C2051
+ .string "FVーFIGHTERー01ーFIELDーR116$"
+
+ .align 2
+gUnknown_Debug_083C206C:: @ 0x83C206C
+ .4byte gUnknown_Debug_083C1F80, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1F99, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1FB2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1FCE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C1FEA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2006, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C201F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2038, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2051, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C20B4:: @ 0x83C20B4
+ .string "FVーMITSURUー01ーFIELDーC101$"
+
+gUnknown_Debug_083C20CD:: @ 0x83C20CD
+ .string "FVーMITSURUー02ーCAVEーD1301$"
+
+gUnknown_Debug_083C20E6:: @ 0x83C20E6
+ .string "FVーMITSURUー01ーFIELDーC103$"
+
+gUnknown_Debug_083C20FF:: @ 0x83C20FF
+ .string "FVーMITSURUー01ーT106ーR0201$"
+
+gUnknown_Debug_083C2118:: @ 0x83C2118
+ .string "FVーMITSURUー01ーCAVEーD1301$"
+
+gUnknown_Debug_083C2131:: @ 0x83C2131
+ .string "FVーMITSURUー01ーC101ーR0201$"
+
+gUnknown_Debug_083C214A:: @ 0x83C214A
+ .string "FVーMITSURUー01ーFIELDーR102$"
+
+gUnknown_Debug_083C2163:: @ 0x83C2163
+ .string "FVーTENKIー01ーR119ーR101$"
+
+gUnknown_Debug_083C2179:: @ 0x83C2179
+ .string "FVーTENKIー01ーR119ーR102$"
+
+ .align 2
+gUnknown_Debug_083C2190:: @ 0x83C2190
+ .4byte gUnknown_Debug_083C20B4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C20CD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C20E6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C20FF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2118, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2131, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C214A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2163, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2179, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C21D8:: @ 0x83C21D8
+ .string "FVーDAIGOー01ーCAVEーD0504$"
+
+gUnknown_Debug_083C21EF:: @ 0x83C21EF
+ .string "FVーDAIGOー01ーFIELDーR128$"
+
+gUnknown_Debug_083C2206:: @ 0x83C2206
+ .string "FVーDAIGOー01ーFIELDーR118$"
+
+gUnknown_Debug_083C221D:: @ 0x83C221D
+ .string "FVーDAIGOー01ーC107ーR0501$"
+
+gUnknown_Debug_083C2234:: @ 0x83C2234
+ .string "FVーDAIGOー01ーFIELDーR120$"
+
+gUnknown_Debug_083C224B:: @ 0x83C224B
+ .string "FVーDAIGOー01ーFIELDーR108$"
+
+ .align 2
+gUnknown_Debug_083C2264:: @ 0x83C2264
+ .4byte gUnknown_Debug_083C21D8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C21EF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2206, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C221D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2234, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C224B, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2294:: @ 0x83C2294
+ .string "FVーPOKE1ー02ーCAVEーD1111$"
+
+gUnknown_Debug_083C22AB:: @ 0x83C22AB
+ .string "FVーPOKE1ー01ーCAVEーD0601$"
+
+gUnknown_Debug_083C22C2:: @ 0x83C22C2
+ .string "FVーPOKE1ー02ーCAVEーD0601$"
+
+gUnknown_Debug_083C22D9:: @ 0x83C22D9
+ .string "FVーPOKE1ー01ーFIELDーR101$"
+
+gUnknown_Debug_083C22F0:: @ 0x83C22F0
+ .string "FVーPOKE1ー01ーOPENINGーROOM01$"
+
+gUnknown_Debug_083C230B:: @ 0x83C230B
+ .string "FVーPOKE1ー02ーOPENINGーROOM01$"
+
+gUnknown_Debug_083C2326:: @ 0x83C2326
+ .string "FVーPOKE1ー01ーCAVEーD2308$"
+
+gUnknown_Debug_083C233D:: @ 0x83C233D
+ .string "FVーPOKEMONー01ーCAVEーD0201$"
+
+gUnknown_Debug_083C2356:: @ 0x83C2356
+ .string "FVーPOKEMONー01ーR104ーR0101$"
+
+ .align 2
+gUnknown_Debug_083C2370:: @ 0x83C2370
+ .4byte gUnknown_Debug_083C2294, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C22AB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C22C2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C22D9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C22F0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C230B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2326, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C233D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2356, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C23B8:: @ 0x83C23B8
+ .string "FVーMAMAー01ーFIELDーT101$"
+
+gUnknown_Debug_083C23CE:: @ 0x83C23CE
+ .string "FVーMAMAー01ーOPENINGーROOM02$"
+
+gUnknown_Debug_083C23E8:: @ 0x83C23E8
+ .string "FVーMAMAー01ーT101ーR0101$"
+
+gUnknown_Debug_083C23FE:: @ 0x83C23FE
+ .string "FVーMAMAー01ーT101ーR0201$"
+
+gUnknown_Debug_083C2414:: @ 0x83C2414
+ .string "FVーMAMAー02ーT101ーR0101$"
+
+gUnknown_Debug_083C242A:: @ 0x83C242A
+ .string "FVーMAMAー02ーT101ーR0201$"
+
+gUnknown_Debug_083C2440:: @ 0x83C2440
+ .string "FVーSUPPORTー02ーFIELDーR110$"
+
+gUnknown_Debug_083C2459:: @ 0x83C2459
+ .string "FVーSUPPORTー02ーFIELDーR119$"
+
+gUnknown_Debug_083C2472:: @ 0x83C2472
+ .string "FVーSUPPORTー02ーFIELDーT104$"
+
+ .align 2
+gUnknown_Debug_083C248C:: @ 0x83C248C
+ .4byte gUnknown_Debug_083C23B8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C23CE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C23E8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C23FE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2414, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C242A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2440, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2459, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2472, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C24D4:: @ 0x83C24D4
+ .string "FVーHAGIー01ーFIELDーR104$"
+
+gUnknown_Debug_083C24EA:: @ 0x83C24EA
+ .string "FVーHAGIー01ーR104ーR0101$"
+
+gUnknown_Debug_083C2500:: @ 0x83C2500
+ .string "FVーHAGIー01ーFIELDーT103$"
+
+gUnknown_Debug_083C2516:: @ 0x83C2516
+ .string "FVーHAGIー01ーFIELDーR109$"
+
+gUnknown_Debug_083C252C:: @ 0x83C252C
+ .string "FVーHAGIー01ーC102ーR0601$"
+
+gUnknown_Debug_083C2542:: @ 0x83C2542
+ .string "FVーHAGIー01ーC102ーR0101$"
+
+gUnknown_Debug_083C2558:: @ 0x83C2558
+ .string "FVーHAGIー01ーCAVEーD0201$"
+
+gUnknown_Debug_083C256E:: @ 0x83C256E
+ .string "FVーHAGIー01ーFIELDーR116$"
+
+gUnknown_Debug_083C2584:: @ 0x83C2584
+ .string "FVーHAGIー01ーSPーSHIP01$"
+
+ .align 2
+gUnknown_Debug_083C259C:: @ 0x83C259C
+ .4byte gUnknown_Debug_083C24D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C24EA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2500, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2516, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C252C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2542, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2558, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C256E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2584, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C25E4:: @ 0x83C25E4
+ .string "FVーSUPPORTー01ーT101ーR0301$"
+
+gUnknown_Debug_083C25FD:: @ 0x83C25FD
+ .string "FVーSUPPORTー01ーC109ーR0105$"
+
+gUnknown_Debug_083C2616:: @ 0x83C2616
+ .string "FVーSUPPORTー01ーFIELDーC104$"
+
+gUnknown_Debug_083C262F:: @ 0x83C262F
+ .string "FVーSUPPORTー01ーFIELDーC106$"
+
+gUnknown_Debug_083C2648:: @ 0x83C2648
+ .string "FVーSUPPORTー01ーFIELDーR103$"
+
+gUnknown_Debug_083C2661:: @ 0x83C2661
+ .string "FVーSUPPORTー01ーFIELDーR110$"
+
+gUnknown_Debug_083C267A:: @ 0x83C267A
+ .string "FVーSUPPORTー01ーFIELDーR119$"
+
+gUnknown_Debug_083C2693:: @ 0x83C2693
+ .string "FVーSUPPORTー01ーFIELDーT104$"
+
+gUnknown_Debug_083C26AC:: @ 0x83C26AC
+ .string "FVーSUPPORTー01ーFIELDーT102$"
+
+ .align 2
+gUnknown_Debug_083C26C8:: @ 0x83C26C8
+ .4byte gUnknown_Debug_083C25E4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C25FD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2616, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C262F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2648, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2661, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C267A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2693, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C26AC, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C2710:: @ 0x83C2710
+ .string "けけけけかけけけけ "
+gUnknown_Debug_083C271A:: @ 0x83C271A
+ .string "aうPうbうeうfうgうhうiうjうNうhいZうプうHうネうイうXい{0xF8}いVいWいィうゥうェうベうらうりうンうbい▶いやうようコうツうテうワうヲうだうぢうLうMうRうSう      iいmいxいzいÖいÜいおうミうムう:いöいüい{0xF7}いせうそうボうパう1うnいoいpいqいぽうナうマうロう♀うルうブうんうQうYいビうウう0うYう"
+
+gUnknown_Debug_083C27BC:: @ 0x83C27BC
+ .string "FEひでんわざ/デボンかんれん$"
+
+gUnknown_Debug_083C27CC:: @ 0x83C27CC
+ .string "FEだいじなアイテムPART1$"
+
+gUnknown_Debug_083C27DC:: @ 0x83C27DC
+ .string "そのた1$"
+
+gUnknown_Debug_083C27E1:: @ 0x83C27E1
+ .string "MITSURU/DOOR$"
+
+gUnknown_Debug_083C27EE:: @ 0x83C27EE
+ .string "カラクリやしき10のやじるし/GYM07$"
+
+gUnknown_Debug_083C2803:: @ 0x83C2803
+ .string "SUPPORT/そのた4$"
+
+gUnknown_Debug_083C2810:: @ 0x83C2810
+ .string "DAISUKI/そのた5$"
+
+gUnknown_Debug_083C281D:: @ 0x83C281D
+ .string "そのた2$"
+
+gUnknown_Debug_083C2822:: @ 0x83C2822
+ .string "そのた6$"
+
+ .align 2
+gUnknown_Debug_083C2828:: @ 0x83C2828
+ .4byte gUnknown_Debug_083C27BC, debug_sub_808C3B0+1
+ .4byte gUnknown_Debug_083C27CC, debug_sub_808C408+1
+ .4byte gUnknown_Debug_083C27DC, debug_sub_808C460+1
+ .4byte gUnknown_Debug_083C27E1, debug_sub_808C4B8+1
+ .4byte gUnknown_Debug_083C27EE, debug_sub_808C510+1
+ .4byte gUnknown_Debug_083C2803, debug_sub_808C568+1
+ .4byte gUnknown_Debug_083C2810, debug_sub_808C5C0+1
+ .4byte gUnknown_Debug_083C281D, debug_sub_808C618+1
+ .4byte gUnknown_Debug_083C2822, debug_sub_808C670+1
+
+gUnknown_Debug_083C2870:: @ 0x83C2870
+ .string "FEーHWAZA01ーGET$"
+
+gUnknown_Debug_083C287F:: @ 0x83C287F
+ .string "FEーHWAZA02ー01ーFIELDR119$"
+
+gUnknown_Debug_083C2897:: @ 0x83C2897
+ .string "FEーHWAZA03ーGET$"
+
+gUnknown_Debug_083C28A6:: @ 0x83C28A6
+ .string "FEーHWAZA04ー01ーT106ーR0201$"
+
+gUnknown_Debug_083C28BF:: @ 0x83C28BF
+ .string "FEーHWAZA05ー01ーCAVEーD0502$"
+
+gUnknown_Debug_083C28D8:: @ 0x83C28D8
+ .string "FEーHWAZA04ー01ーC103ーR0301$"
+
+gUnknown_Debug_083C28F1:: @ 0x83C28F1
+ .string "FEーDEBONーNIMOTSUーRETURN$"
+
+gUnknown_Debug_083C2909:: @ 0x83C2909
+ .string "FEーDEBONー01ーFIELDーC104$"
+
+gUnknown_Debug_083C2920:: @ 0x83C2920
+ .string "FEーDEBONー02ーFIELDーC104$"
+
+ .align 2
+gUnknown_Debug_083C2938:: @ 0x83C2938
+ .4byte gUnknown_Debug_083C2870, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C287F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2897, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C28A6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C28BF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C28D8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C28F1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2909, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2920, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2980:: @ 0x83C2980
+ .string "FEーCYCLEー01ーP01ーP01ーC103ーR0201$"
+
+gUnknown_Debug_083C299F:: @ 0x83C299F
+ .string "FEーSCOOPー01ーP01ーFIELDーR115$"
+
+gUnknown_Debug_083C29BA:: @ 0x83C29BA
+ .string "FEーROPEー01ーP01ーFIELDーR114$"
+
+gUnknown_Debug_083C29D4:: @ 0x83C29D4
+ .string "FEーKAMAー01ーP01ーFIELDーR119$"
+
+gUnknown_Debug_083C29EE:: @ 0x83C29EE
+ .string "FEーZYOUROーGET$"
+
+gUnknown_Debug_083C29FC:: @ 0x83C29FC
+ .string "FEーCUBECASEーGET$"
+
+gUnknown_Debug_083C2A0C:: @ 0x83C2A0C
+ .string "FEーBORONOTURIZAOーGET$"
+
+gUnknown_Debug_083C2A21:: @ 0x83C2A21
+ .string "FEーIITURIZAOーGET$"
+
+gUnknown_Debug_083C2A32:: @ 0x83C2A32
+ .string "FEーSUGOITURIZAOーGET$"
+
+ .align 2
+gUnknown_Debug_083C2A48:: @ 0x83C2A48
+ .4byte gUnknown_Debug_083C2980, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C299F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C29BA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C29D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C29EE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C29FC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2A0C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2A21, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2A32, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2A90:: @ 0x83C2A90
+ .string "FEーBOSSー01ーCAVEーD0701$"
+
+gUnknown_Debug_083C2AA6:: @ 0x83C2AA6
+ .string "FEーTANTIKIーRETURN$"
+
+gUnknown_Debug_083C2AB8:: @ 0x83C2AB8
+ .string "FEーPOKE1ー01ーCAVEーD1111$"
+
+gUnknown_Debug_083C2ACF:: @ 0x83C2ACF
+ .string "FEーPOKE1ー01ーCAVEーD1206$"
+
+gUnknown_Debug_083C2AE6:: @ 0x83C2AE6
+ .string "FEーSHOPー01ーC104ーFS01$"
+
+gUnknown_Debug_083C2AFB:: @ 0x83C2AFB
+ .string "FEーHUNENOTIKETTーGET$"
+
+gUnknown_Debug_083C2B0F:: @ 0x83C2B0F
+ .string "FEーKAKUREー01ーFIELDーC105$"
+
+gUnknown_Debug_083C2B27:: @ 0x83C2B27
+ .string "FEーKASEKIーRETURN$"
+
+gUnknown_Debug_083C2B38:: @ 0x83C2B38
+ .string "FEーWINー01ーSPーSHIP01$"
+
+gUnknown_Debug_083C2B4C:: @ 0x83C2B4C
+ .4byte gUnknown_Debug_083C2A90, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2AA6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2AB8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2ACF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2AE6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2AFB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2B0F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2B27, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2B38, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2B94:: @ 0x83C2B94
+ .string "FEーMITSURUー01ーT106ーR0201$"
+
+gUnknown_Debug_083C2BAD:: @ 0x83C2BAD
+ .string "FEーMITSURUー01ーCAVEーD1301$"
+
+gUnknown_Debug_083C2BC6:: @ 0x83C2BC6
+ .string "FEーMITSURUー02ーFIELDーC103$"
+
+gUnknown_Debug_083C2BDF:: @ 0x83C2BDF
+ .string "FEーMITSURUー02ーT106ーR0201$"
+
+gUnknown_Debug_083C2BF8:: @ 0x83C2BF8
+ .string "FEーMITSURUー01ーFIELDーC103$"
+
+gUnknown_Debug_083C2C11:: @ 0x83C2C11
+ .string "FEーDOORーOPENー01ーCAVEーD1712$"
+
+gUnknown_Debug_083C2C2C:: @ 0x83C2C2C
+ .string "FEーDOORーOPENー02ーCAVEーD1712$"
+
+gUnknown_Debug_083C2C47:: @ 0x83C2C47
+ .string "FEーDOORーOPENー04ーCAVEーD1712$"
+
+gUnknown_Debug_083C2C62:: @ 0x83C2C62
+ .string "FEーDOORーOPENー06ーCAVEーD1712$"
+
+ .align 2
+gUnknown_Debug_083C2C80:: @ 0x83C2C80
+ .4byte gUnknown_Debug_083C2B94, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2BAD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2BC6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2BDF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2BF8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2C11, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2C2C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2C47, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2C62, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2CC8:: @ 0x83C2CC8
+ .string "FEーKARAKURI10ーSWITCHー01$"
+
+gUnknown_Debug_083C2CE0:: @ 0x83C2CE0
+ .string "FEーKARAKURI10ーSWITCHー02$"
+
+gUnknown_Debug_083C2CF8:: @ 0x83C2CF8
+ .string "FEーKARAKURI10ーSWITCHー03$"
+
+gUnknown_Debug_083C2D10:: @ 0x83C2D10
+ .string "FEーKARAKURI10ーSWITCHー04$"
+
+gUnknown_Debug_083C2D28:: @ 0x83C2D28
+ .string "FEーKARAKURI10ーSWITCHー05$"
+
+gUnknown_Debug_083C2D40:: @ 0x83C2D40
+ .string "FEーGYM07ーSWITCHー01$"
+
+gUnknown_Debug_083C2D53:: @ 0x83C2D53
+ .string "FEーGYM07ーSWITCHー02$"
+
+gUnknown_Debug_083C2D66:: @ 0x83C2D66
+ .string "FEーGYM07ーSWITCHー03$"
+
+gUnknown_Debug_083C2D79:: @ 0x83C2D79
+ .string "FEーGYM07ーSWITCHー04$"
+
+gUnknown_Debug_083C2D8C:: @ 0x83C2D8C
+ .4byte gUnknown_Debug_083C2CC8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2CE0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2CF8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D10, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D28, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D40, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D53, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D66, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2D79, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2DD4:: @ 0x83C2DD4
+ .string "FEーSUPPORTー01ーFIELDーR103$"
+
+gUnknown_Debug_083C2DED:: @ 0x83C2DED
+ .string "FEーSUPPORTー01ーFIELDーC106$"
+
+gUnknown_Debug_083C2E06:: @ 0x83C2E06
+ .string "FEーSUPPORTー01ーFIELDーR104$"
+
+gUnknown_Debug_083C2E1F:: @ 0x83C2E1F
+ .string "FEーSUPPORTー02ーFIELDーC106$"
+
+gUnknown_Debug_083C2E38:: @ 0x83C2E38
+ .string "FEーSUPPORTー01ーT101ーR0202$"
+
+gUnknown_Debug_083C2E51:: @ 0x83C2E51
+ .string "FEーMAMAー01ーP01ーT101ーR0101$"
+
+gUnknown_Debug_083C2E6B:: @ 0x83C2E6B
+ .string "FEーCLOCKーSET$"
+
+gUnknown_Debug_083C2E78:: @ 0x83C2E78
+ .string "FEーODAMAKIー01ーP01ーT101ーR03$"
+
+gUnknown_Debug_083C2E93:: @ 0x83C2E93
+ .string "FEーPAPAー01ーP01ーC101ーR0201$"
+
+ .align 2
+gUnknown_Debug_083C2EB0:: @ 0x83C2EB0
+ .4byte gUnknown_Debug_083C2DD4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2DED, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E06, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E1F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E38, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E51, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E6B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E78, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2E93, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C2EF8:: @ 0x83C2EF8
+ .string "FEーDAISUKIーGOODSーFLAG01$"
+
+gUnknown_Debug_083C2F10:: @ 0x83C2F10
+ .string "FEーDAISUKIーGOODSーFLAG02$"
+
+gUnknown_Debug_083C2F28:: @ 0x83C2F28
+ .string "FEーDAISUKIーGOODSーFLAG03$"
+
+gUnknown_Debug_083C2F40:: @ 0x83C2F40
+ .string "FEーDAISUKIーGOODSーFLAG04$"
+
+gUnknown_Debug_083C2F58:: @ 0x83C2F58
+ .string "FEーDAISUKIーGOODSーFLAG05$"
+
+gUnknown_Debug_083C2F70:: @ 0x83C2F70
+ .string "FEーBASHAー01ーP01ーFIELDーC101ー$"
+
+gUnknown_Debug_083C2F8C:: @ 0x83C2F8C
+ .string "FEーBASHAー01ーP02ーFIELDーC101ー$"
+
+gUnknown_Debug_083C2FA8:: @ 0x83C2FA8
+ .string "FEーBALLー01ーP01ーSPーCONTEST$"
+
+gUnknown_Debug_083C2FC2:: @ 0x83C2FC2
+ .string "FEーWOMAN2ー01ーP01ーT101ーR0201$"
+
+ .align 2
+gUnknown_Debug_083C2FE0:: @ 0x83C2FE0
+ .4byte gUnknown_Debug_083C2EF8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F10, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F28, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F40, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F58, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F70, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2F8C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2FA8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C2FC2, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C3028:: @ 0x83C3028
+ .string "FEーSOUKOーOPENーCAVEーD1704$"
+
+gUnknown_Debug_083C3041:: @ 0x83C3041
+ .string "FEーSORAISIー01ーCAVEーD0101$"
+
+gUnknown_Debug_083C305A:: @ 0x83C305A
+ .string "FEーMAYUMIー01ーーR114ーR0201$"
+
+gUnknown_Debug_083C3073:: @ 0x83C3073
+ .string "FEーKUSUNOKIー01ーC102ーR0601$"
+
+gUnknown_Debug_083C308D:: @ 0x83C308D
+ .string "FEーOLDWOMAN1ー01ーCAVEーD0808$"
+
+gUnknown_Debug_083C30A8:: @ 0x83C30A8
+ .string "FEーTRAINERM1ー01ーC109ーR0206$"
+
+gUnknown_Debug_083C30C3:: @ 0x83C30C3
+ .string "FEーSOONANOーTAMAGOーGET$"
+
+gUnknown_Debug_083C30D9:: @ 0x83C30D9
+ .string "FEーDASHーSHOESーGET$"
+
+gUnknown_Debug_083C30EB:: @ 0x83C30EB
+ .string "FEーDEBONSUKOOPUーGET$"
+
+ .align 2
+gUnknown_Debug_083C3100:: @ 0x83C3100
+ .4byte gUnknown_Debug_083C3028, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3041, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C305A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3073, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C308D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C30A8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C30C3, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C30D9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C30EB, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C3148:: @ 0x83C3148
+ .string "FEーSTUDYM1ー01ーP01ーT101R0301$"
+
+gUnknown_Debug_083C3164:: @ 0x83C3164
+ .string "FEーWORKERM1ー01ーC103ーR0201$"
+
+gUnknown_Debug_083C317E:: @ 0x83C317E
+ .string "FEーHIMITSUーGET$"
+
+gUnknown_Debug_083C318D:: @ 0x83C318D
+ .string "$"
+
+gUnknown_Debug_083C318E:: @ 0x83C318E
+ .string "$"
+
+gUnknown_Debug_083C318F:: @ 0x83C318F
+ .string "$"
+
+gUnknown_Debug_083C3190:: @ 0x83C3190
+ .string "$"
+
+gUnknown_Debug_083C3191:: @ 0x83C3191
+ .string "$"
+
+gUnknown_Debug_083C3192:: @ 0x83C3192
+ .string "$"
+
+ .align 2
+gUnknown_Debug_083C3194:: @ 0x83C3194
+ .4byte gUnknown_Debug_083C3148, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3164, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C317E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C318D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C318E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C318F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3190, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3191, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3192, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C31DC:: @ 0x83C31DC
+ .byte 9, 9, 9, 9, 9, 9, 9, 9, 3, 0
+
+ @ This is not a string. I don't feel like converting it right now.
+gUnknown_Debug_83C31E6:: @ 0x83C31E6
+ .string "グ ホ レ ハ ヘ ヒ ゾ ズ ゼ コ サ シ ス セ ソ ああo ブ ゴ よあゥ ム  あもあらあさあ{0xF7} フ ン D G ふあ: Ä Ö Ü H I J K L ト ナ ニ ヌ ェ ほあみあやあゆあっ ア イ オ N O P Q R ウ エ カ キ ▶ ä ォ そあうあきあこあつあへあク ケ タ             "
+
+gUnknown_Debug_083C3288:: @ 0x83C3288
+ .string "CYCLEかんれん$"
+
+gUnknown_Debug_083C3292:: @ 0x83C3292
+ .string "おおきさくらべ$"
+
+gUnknown_Debug_083C329A:: @ 0x83C329A
+ .string "カウンタ$"
+
+gUnknown_Debug_083C329F:: @ 0x83C329F
+ .string "そのた1$"
+
+gUnknown_Debug_083C32A4:: @ 0x83C32A4
+ .string "そのた2$"
+
+ .align 2
+gUnknown_Debug_083C32AC:: @ 0x83C32AC
+ .4byte gUnknown_Debug_083C3288, debug_sub_808E400+1
+ .4byte gUnknown_Debug_083C3292, debug_sub_808E458+1
+ .4byte gUnknown_Debug_083C329A, debug_sub_808E4B0+1
+ .4byte gUnknown_Debug_083C329F, debug_sub_808E508+1
+ .4byte gUnknown_Debug_083C32A4, debug_sub_808E560+1
+
+gUnknown_Debug_083C32D4:: @ 0x83C32D4
+ .string "WKーCYCLEーROADーHIT$"
+
+gUnknown_Debug_083C32E6:: @ 0x83C32E6
+ .string "WKーCYCLEーROADーTIMエ1$"
+
+gUnknown_Debug_083C32FA:: @ 0x83C32FA
+ .string "WKーCYCLEーROADーTIMエ2$"
+
+gUnknown_Debug_083C330E:: @ 0x83C330E
+ .string "WKーSIZEーKINOKOKOーOYAJI$"
+
+gUnknown_Debug_083C3325:: @ 0x83C3325
+ .string "WKーSIZEーNAMAZOーOYAJI$"
+
+gUnknown_Debug_083C333A:: @ 0x83C333A
+ .string "WKーSPRAYーCOUNT$"
+
+gUnknown_Debug_083C3349:: @ 0x83C3349
+ .string "WKーICEーCOUNT$"
+
+gUnknown_Debug_083C3356:: @ 0x83C3356
+ .string "WKーASHーGATHERーCOUNT$"
+
+gUnknown_Debug_083C336A:: @ 0x83C336A
+ .string "WKーCRUISEーCOUNT$"
+
+gUnknown_Debug_083C337A:: @ 0x83C337A
+ .string "WKーFRIENDLYーSTEPーCOUNT$"
+
+gUnknown_Debug_083C3391:: @ 0x83C3391
+ .string "WKーPOISONーSTEPーCOUNT$"
+
+gUnknown_Debug_083C33A6:: @ 0x83C33A6
+ .string "WKRECYCLEーGOODS$"
+
+gUnknown_Debug_083C33B6:: @ 0x83C33B6
+ .string "WKーFIRSTーPOKE$"
+
+gUnknown_Debug_083C33C4:: @ 0x83C33C4
+ .string "WKーMABOROSIRNDーH$"
+
+gUnknown_Debug_083C33D5:: @ 0x83C33D5
+ .string "WKーMABOROSIRNDーL$"
+
+gUnknown_Debug_083C33E6:: @ 0x83C33E6
+ .string "EVーONEーDAYーWORK$"
+
+gUnknown_Debug_083C33F6:: @ 0x83C33F6
+ .string "EVーFANWORK$"
+
+gUnknown_Debug_083C3401:: @ 0x83C3401
+ .string "EVーFANTIME$"
+
+gUnknown_Debug_083C340C:: @ 0x83C340C
+ .string "WKーKARAKURIーLEVEL$"
+
+gUnknown_Debug_083C341E:: @ 0x83C341E
+ .string "WKーPOKELOTーPRIZE$"
+
+gUnknown_Debug_083C342F:: @ 0x83C342F
+ .string "WKーSPECIALーZUKN$"
+
+gUnknown_Debug_083C343F:: @ 0x83C343F
+ .string "WKーHYOUKAーDAYS$"
+
+gUnknown_Debug_083C344E:: @ 0x83C344E
+ .string "WKーPOKELOTーRND1$"
+
+gUnknown_Debug_083C345E:: @ 0x83C345E
+ .string "WKーPOKELOTーRND2$"
+
+gUnknown_Debug_083C346E:: @ 0x83C346E
+ .string "WKーBASEーMAPNO$"
+
+ .align 2
+gUnknown_Debug_083C347C:: @ 0x83C347C
+ .4byte gUnknown_Debug_083C32D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C32E6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C32FA, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C3494::
+ .4byte gUnknown_Debug_083C330E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3325, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C34A4::
+ .4byte gUnknown_Debug_083C333A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3349, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3356, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C336A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C337A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3391, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C34D4::
+ .4byte gUnknown_Debug_083C33A6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C33B6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C33C4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C33D5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C33E6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C33F6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3401, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C340C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C341E, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C351C::
+ .4byte gUnknown_Debug_083C342F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C343F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C344E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C345E, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C346E, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C3544:: @ 0x83C3544
+ .string "ういかけお "
+gUnknown_Debug_083C354A::
+ .string "らぞりぞるぞ            びぞぽぞ              むぞめぞぶぞぼぞれぞろぞ      みぞもぞやぞゆぞぞぞだぞぢぞでぞどぞばぞべぞぱぞぴぞよぞ        "
+
+gUnknown_Debug_083C35A4:: @ 0x83C35A4
+ .string "OBJCHRWORK0ー8$"
+
+gUnknown_Debug_083C35B2:: @ 0x83C35B2
+ .string "OBJCHRWORK9ー15$"
+
+ .align 2
+gUnknown_Debug_083C35C4:: @ 0x83C35C4
+ .4byte gUnknown_Debug_083C35A4, debug_sub_808E9A0+1
+ .4byte gUnknown_Debug_083C35B2, debug_sub_808E9F8+1
+
+gUnknown_Debug_083C35D4:: @ 0x83C35D4
+ .string "OBJCHRWORK1$"
+
+gUnknown_Debug_083C35E0:: @ 0x83C35E0
+ .string "OBJCHRWORK2$"
+
+gUnknown_Debug_083C35EC:: @ 0x83C35EC
+ .string "OBJCHRWORK3$"
+
+gUnknown_Debug_083C35F8:: @ 0x83C35F8
+ .string "OBJCHRWORK4$"
+
+gUnknown_Debug_083C3604:: @ 0x83C3604
+ .string "OBJCHRWORK5$"
+
+gUnknown_Debug_083C3610:: @ 0x83C3610
+ .string "OBJCHRWORK6$"
+
+gUnknown_Debug_083C361C:: @ 0x83C361C
+ .string "OBJCHRWORK7$"
+
+gUnknown_Debug_083C3628:: @ 0x83C3628
+ .string "OBJCHRWORK8$"
+
+gUnknown_Debug_083C3634:: @ 0x83C3634
+ .string "OBJCHRWORK9$"
+
+gUnknown_Debug_083C3640:: @ 0x83C3640
+ .string "OBJCHRWORK10$"
+
+gUnknown_Debug_083C364D:: @ 0x83C364D
+ .string "OBJCHRWORK11$"
+
+gUnknown_Debug_083C365A:: @ 0x83C365A
+ .string "OBJCHRWORK12$"
+
+gUnknown_Debug_083C3667:: @ 0x83C3667
+ .string "OBJCHRWORK13$"
+
+gUnknown_Debug_083C3674:: @ 0x83C3674
+ .string "OBJCHRWORK14$"
+
+gUnknown_Debug_083C3681:: @ 0x83C3681
+ .string "OBJCHRWORK15$"
+
+gUnknown_Debug_083C368E:: @ 0x83C368E
+ .string "OBJCHRWORK16$"
+
+ .align 2
+gUnknown_Debug_083C369C:: @ 0x83C369C
+ .4byte gUnknown_Debug_083C35D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C35E0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C35EC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C35F8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3604, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3610, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C361C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3628, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3634, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C36E4::
+ .4byte gUnknown_Debug_083C3640, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C364D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C365A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3667, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3674, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3681, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C368E, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C371C:: @ 0x83C371C
+ .string "けき"
+gUnknown_Debug_083C371E:: @ 0x83C371E
+ .string "たぞちぞつぞてぞとぞなぞにぞぬぞねぞのぞはぞひぞふぞへぞほぞまぞ    "
+
+gUnknown_Debug_083C3742:: @ 0x83C3742
+ .string "SP$"
+
+gUnknown_Debug_083C3745:: @ 0x83C3745
+ .string "ルーム R110 PART1/カラクリ$"
+
+gUnknown_Debug_083C3759:: @ 0x83C3759
+ .string "ルーム R110 PART2$"
+
+gUnknown_Debug_083C3768:: @ 0x83C3768
+ .string "ルーム ロード$"
+
+gUnknown_Debug_083C3770:: @ 0x83C3770
+ .string "ソノタ1$"
+
+gUnknown_Debug_083C3775:: @ 0x83C3775
+ .string "ソノタ2$"
+
+ .align 2
+gUnknown_Debug_083C377C:: @ 0x83C377C
+ .4byte gUnknown_Debug_083C3742, debug_sub_808E054+1
+ .4byte gUnknown_Debug_083C3745, debug_sub_808E0AC+1
+ .4byte gUnknown_Debug_083C3759, debug_sub_808E104+1
+ .4byte gUnknown_Debug_083C3768, debug_sub_808E15C+1
+ .4byte gUnknown_Debug_083C3770, debug_sub_808E1B4+1
+ .4byte gUnknown_Debug_083C3775, debug_sub_808E20C+1
+
+gUnknown_Debug_083C37AC:: @ 0x83C37AC
+ .string "WKーSCENEーSPーCONTEST$"
+
+gUnknown_Debug_083C37C0:: @ 0x83C37C0
+ .string "WKーSCENEーSPーPC$"
+
+gUnknown_Debug_083C37CF:: @ 0x83C37CF
+ .string "WKーSCENEーSPーCONTEST03$"
+
+gUnknown_Debug_083C37E5:: @ 0x83C37E5
+ .string "WKーSCENEーSPーCONTESTITEM$"
+
+gUnknown_Debug_083C37FD:: @ 0x83C37FD
+ .string "WKーSCENEーSPーOPENING$"
+
+gUnknown_Debug_083C3811:: @ 0x83C3811
+ .string "WKーSCENEーSPーSHIP01$"
+
+gUnknown_Debug_083C3824:: @ 0x83C3824
+ .string "$"
+
+gUnknown_Debug_083C3825:: @ 0x83C3825
+ .string "$"
+
+gUnknown_Debug_083C3826:: @ 0x83C3826
+ .string "$"
+
+gUnknown_Debug_083C3827:: @ 0x83C3827
+ .string "WKーSCENEーR110ーR0101$"
+
+gUnknown_Debug_083C383B:: @ 0x83C383B
+ .string "WKーSCENEーR110ーR0102$"
+
+gUnknown_Debug_083C384F:: @ 0x83C384F
+ .string "WKーSCENEーR110ーR0103$"
+
+gUnknown_Debug_083C3863:: @ 0x83C3863
+ .string "WKーKARAKURIーDAIOU$"
+
+gUnknown_Debug_083C3875:: @ 0x83C3875
+ .string "WKーSCENEーSHISEN$"
+
+gUnknown_Debug_083C3885:: @ 0x83C3885
+ .string "$"
+
+gUnknown_Debug_083C3886:: @ 0x83C3886
+ .string "$"
+
+gUnknown_Debug_083C3887:: @ 0x83C3887
+ .string "$"
+
+gUnknown_Debug_083C3888:: @ 0x83C3888
+ .string "$"
+
+gUnknown_Debug_083C3889:: @ 0x83C3889
+ .string "WKーSCENEーR110ーR0104$"
+
+gUnknown_Debug_083C389D:: @ 0x83C389D
+ .string "WKーSCENEーR110ーR0105$"
+
+gUnknown_Debug_083C38B1:: @ 0x83C38B1
+ .string "WKーSCENEーR110ーR0106$"
+
+gUnknown_Debug_083C38C5:: @ 0x83C38C5
+ .string "WKーSCENEーR110ーR0107$"
+
+gUnknown_Debug_083C38D9:: @ 0x83C38D9
+ .string "WKーSCENEーR110ーR0108$"
+
+gUnknown_Debug_083C38ED:: @ 0x83C38ED
+ .string "WKーSCENEーR110ーR0109$"
+
+gUnknown_Debug_083C3901:: @ 0x83C3901
+ .string "WKーSCENEーR110ーR0110$"
+
+gUnknown_Debug_083C3915:: @ 0x83C3915
+ .string "WKーSCENEーR110ーR0111$"
+
+gUnknown_Debug_083C3929:: @ 0x83C3929
+ .string "WKーSCENEー02ーR110ーR0110$"
+
+gUnknown_Debug_083C3940:: @ 0x83C3940
+ .string "WKーSCENEーR104ーR0101$"
+
+gUnknown_Debug_083C3954:: @ 0x83C3954
+ .string "WKーSCENEーR113ーR0101$"
+
+gUnknown_Debug_083C3968:: @ 0x83C3968
+ .string "$"
+
+gUnknown_Debug_083C3969:: @ 0x83C3969
+ .string "$"
+
+gUnknown_Debug_083C396A:: @ 0x83C396A
+ .string "$"
+
+gUnknown_Debug_083C396B:: @ 0x83C396B
+ .string "$"
+
+gUnknown_Debug_083C396C:: @ 0x83C396C
+ .string "$"
+
+gUnknown_Debug_083C396D:: @ 0x83C396D
+ .string "$"
+
+gUnknown_Debug_083C396E:: @ 0x83C396E
+ .string "$"
+
+gUnknown_Debug_083C396F:: @ 0x83C396F
+ .string "WKーSCENEーBASEーGDOODS$"
+
+gUnknown_Debug_083C3984:: @ 0x83C3984
+ .string "WKーSCENEーHAGIーFUNE$"
+
+gUnknown_Debug_083C3997:: @ 0x83C3997
+ .string "WKーSCENEーFUNEーPOS$"
+
+gUnknown_Debug_083C39A9:: @ 0x83C39A9
+ .string "WKーSCENEーBASEーMAKE$"
+
+gUnknown_Debug_083C39BC:: @ 0x83C39BC
+ .string "WKーSCENEーARTISTーC106ーR$"
+
+gUnknown_Debug_083C39D3:: @ 0x83C39D3
+ .string "WKーSCENEーPOKEーLEAGUE$"
+
+gUnknown_Debug_083C39E8:: @ 0x83C39E8
+ .string "WKーSCENEーROPEWAY$"
+
+gUnknown_Debug_083C39F9:: @ 0x83C39F9
+ .string "WKーSCENEーSAFARIーZONE$"
+
+gUnknown_Debug_083C3A0E:: @ 0x83C3A0E
+ .string "WKーSCENEーCYCLEーROAD$"
+
+gUnknown_Debug_083C3A22:: @ 0x83C3A22
+ .string "WKーSCENEーR119ーTENKI$"
+
+gUnknown_Debug_083C3A36:: @ 0x83C3A36
+ .string "WKーSCENEー01ーC102ーR0401$"
+
+gUnknown_Debug_083C3A4D:: @ 0x83C3A4D
+ .string "WKーFUTAGOー01ーFIELDーR104$"
+
+gUnknown_Debug_083C3A65:: @ 0x83C3A65
+ .string "WKーSCENEーBATTLEーTOWER$"
+
+gUnknown_Debug_083C3A7B:: @ 0x83C3A7B
+ .string "WKーSCENEーTRーHOUSE$"
+
+gUnknown_Debug_083C3A8D:: @ 0x83C3A8D
+ .string "WKーKASEKIーTYPE$"
+
+gUnknown_Debug_083C3A9C:: @ 0x83C3A9C
+ .string "$"
+
+gUnknown_Debug_083C3A9D:: @ 0x83C3A9D
+ .string "$"
+
+gUnknown_Debug_083C3A9E:: @ 0x83C3A9E
+ .string "$"
+
+ .align 2
+gUnknown_Debug_083C3AA0:: @ 0x83C3AA0
+ .4byte gUnknown_Debug_083C37AC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C37C0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C37CF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C37E5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C37FD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3811, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3824, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3825, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C3AE0:: @ 0x83C3AE0
+ .4byte gUnknown_Debug_083C3827, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C383B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C384F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3863, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3875, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3885, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3886, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3887, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3888, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C3B28:: @ 0x83C3B28
+ .4byte gUnknown_Debug_083C3889, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C389D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C38B1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C38C5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C38D9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C38ED, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3901, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3915, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3929, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C3B70:: @ 0x83C3B70
+ .4byte gUnknown_Debug_083C3940, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3954, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3968, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3969, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C396A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C396B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C396C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C396D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C396E, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C3BB8::
+ .4byte gUnknown_Debug_083C396F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3984, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3997, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C39A9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C39BC, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C39D3, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C39E8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C39F9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A0E, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C3C00::
+ .4byte gUnknown_Debug_083C3A22, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A36, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A4D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A65, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A7B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A8D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A9C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A9D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3A9E, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C3C48:: @ 0x83C3C48
+ .string "かおけいけか"
+
+gUnknown_Debug_83C3C4E:: @ 0x83C3C4E
+ .string "ョぞガぞギぞゲぞヂぞ’ぞ      5ぞGぞ♂ぞ6ぞ4ぞ        !ぞ?ぞ。ぞーぞ·ぞ‥ぞ“ぞ”ぞ♀ぞゾぞDぞ              グぞズぞバぞビぞベぞピぞ2ぞ3ぞ8ぞ‘ぞ¥ぞAぞBぞFぞKぞ      "
+
+ @ But these are strings
+gUnknown_Debug_083C3CBA:: @ 0x83C3CBA
+ .string "タウン$"
+
+gUnknown_Debug_083C3CBE:: @ 0x83C3CBE
+ .string "シティ$"
+
+gUnknown_Debug_083C3CC2:: @ 0x83C3CC2
+ .string "ロード101ー109$"
+
+gUnknown_Debug_083C3CCD:: @ 0x83C3CCD
+ .string "ロード110ー118$"
+
+gUnknown_Debug_083C3CD8:: @ 0x83C3CD8
+ .string "ロード119ー127$"
+
+gUnknown_Debug_083C3CE3:: @ 0x83C3CE3
+ .string "ロード128ー134$"
+
+gUnknown_Debug_083C3CEE:: @ 0x83C3CEE
+ .string "ルーム タウン$"
+
+gUnknown_Debug_083C3CF6:: @ 0x83C3CF6
+ .string "ルーム シティ$"
+
+gUnknown_Debug_083C3CFE:: @ 0x83C3CFE
+ .string "ダンジョンない$"
+
+ .align 2
+gUnknown_Debug_083C3D08:: @ 0x83C3D08
+ .4byte gUnknown_Debug_083C3CBA, debug_sub_808DBA0+1
+ .4byte gUnknown_Debug_083C3CBE, debug_sub_808DBF8+1
+ .4byte gUnknown_Debug_083C3CC2, debug_sub_808DC50+1
+ .4byte gUnknown_Debug_083C3CCD, debug_sub_808DCA8+1
+ .4byte gUnknown_Debug_083C3CD8, debug_sub_808DD00+1
+ .4byte gUnknown_Debug_083C3CE3, debug_sub_808DD58+1
+ .4byte gUnknown_Debug_083C3CEE, debug_sub_808DDB0+1
+ .4byte gUnknown_Debug_083C3CF6, debug_sub_808DE08+1
+ .4byte gUnknown_Debug_083C3CFE, debug_sub_808DE60+1
+
+gUnknown_Debug_083C3D50:: @ 0x83C3D50
+ .string "WKーSCENEーFIELDーT101$"
+
+gUnknown_Debug_083C3D64:: @ 0x83C3D64
+ .string "WKーSCENEーFIELDーT102$"
+
+gUnknown_Debug_083C3D78:: @ 0x83C3D78
+ .string "WKーSCENEーFIELDーT103$"
+
+gUnknown_Debug_083C3D8C:: @ 0x83C3D8C
+ .string "WKーSCENEーFIELDーT104$"
+
+gUnknown_Debug_083C3DA0:: @ 0x83C3DA0
+ .string "WKーBASEーPOSNO$"
+
+gUnknown_Debug_083C3DAE:: @ 0x83C3DAE
+ .string "WKーSCENEーFIELDーT106$"
+
+gUnknown_Debug_083C3DC2:: @ 0x83C3DC2
+ .string "WKーSCENEーFIELDーT107$"
+
+gUnknown_Debug_083C3DD6:: @ 0x83C3DD6
+ .string "WKーSCENEー02ーFIELDーT102$"
+
+gUnknown_Debug_083C3DED:: @ 0x83C3DED
+ .string "WKーSCENEーFIELDーC101$"
+
+gUnknown_Debug_083C3E01:: @ 0x83C3E01
+ .string "WKーSCENEーFIELDーC102$"
+
+gUnknown_Debug_083C3E15:: @ 0x83C3E15
+ .string "WKーSCENEーFIELDーC103$"
+
+gUnknown_Debug_083C3E29:: @ 0x83C3E29
+ .string "WKーSCENEーFIELDーC104$"
+
+gUnknown_Debug_083C3E3D:: @ 0x83C3E3D
+ .string "WKーSCENEーFIELDーC105$"
+
+gUnknown_Debug_083C3E51:: @ 0x83C3E51
+ .string "WKーSCENEーFIELDーC106$"
+
+gUnknown_Debug_083C3E65:: @ 0x83C3E65
+ .string "WKーSCENEーFIELDーC107$"
+
+gUnknown_Debug_083C3E79:: @ 0x83C3E79
+ .string "WKーSCENEーFIELDーC108$"
+
+gUnknown_Debug_083C3E8D:: @ 0x83C3E8D
+ .string "WKーSCENEーFIELDーC109$"
+
+gUnknown_Debug_083C3EA1:: @ 0x83C3EA1
+ .string "WKーSCENEーFIELDーR101$"
+
+gUnknown_Debug_083C3EB5:: @ 0x83C3EB5
+ .string "WKーSCENEーFIELDーR102$"
+
+gUnknown_Debug_083C3EC9:: @ 0x83C3EC9
+ .string "WKーSCENEーFIELDーR103$"
+
+gUnknown_Debug_083C3EDD:: @ 0x83C3EDD
+ .string "WKーSCENEーFIELDーR104$"
+
+gUnknown_Debug_083C3EF1:: @ 0x83C3EF1
+ .string "WKーSCENEーFIELDーR105$"
+
+gUnknown_Debug_083C3F05:: @ 0x83C3F05
+ .string "WKーSCENEーFIELDーR106$"
+
+gUnknown_Debug_083C3F19:: @ 0x83C3F19
+ .string "WKーSCENEーFIELDーR107$"
+
+gUnknown_Debug_083C3F2D:: @ 0x83C3F2D
+ .string "WKーSCENEーFIELDーR108$"
+
+gUnknown_Debug_083C3F41:: @ 0x83C3F41
+ .string "WKーSCENEーFIELDーR109$"
+
+gUnknown_Debug_083C3F55:: @ 0x83C3F55
+ .string "WKーSCENEーFIELDーR110$"
+
+gUnknown_Debug_083C3F69:: @ 0x83C3F69
+ .string "WKーSCENEーFIELDーR111$"
+
+gUnknown_Debug_083C3F7D:: @ 0x83C3F7D
+ .string "WKーSCENEーFIELDーR112$"
+
+gUnknown_Debug_083C3F91:: @ 0x83C3F91
+ .string "WKーSCENEーFIELDーR113$"
+
+gUnknown_Debug_083C3FA5:: @ 0x83C3FA5
+ .string "WKーSCENEーFIELDーR114$"
+
+gUnknown_Debug_083C3FB9:: @ 0x83C3FB9
+ .string "WKーSCENEーFIELDーR115$"
+
+gUnknown_Debug_083C3FCD:: @ 0x83C3FCD
+ .string "WKーSCENEーFIELDーR116$"
+
+gUnknown_Debug_083C3FE1:: @ 0x83C3FE1
+ .string "WKーSCENEーFIELDーR117$"
+
+gUnknown_Debug_083C3FF5:: @ 0x83C3FF5
+ .string "WKーSCENEーFIELDーR118$"
+
+gUnknown_Debug_083C4009:: @ 0x83C4009
+ .string "WKーSCENEーFIELDーR119$"
+
+gUnknown_Debug_083C401D:: @ 0x83C401D
+ .string "WKーSCENEーFIELDーR120$"
+
+gUnknown_Debug_083C4031:: @ 0x83C4031
+ .string "WKーSCENEーFIELDーR121$"
+
+gUnknown_Debug_083C4045:: @ 0x83C4045
+ .string "WKーSCENEーFIELDーR122$"
+
+gUnknown_Debug_083C4059:: @ 0x83C4059
+ .string "WKーSCENEーFIELDーR123$"
+
+gUnknown_Debug_083C406D:: @ 0x83C406D
+ .string "WKーSCENEーFIELDーR124$"
+
+gUnknown_Debug_083C4081:: @ 0x83C4081
+ .string "WKーSCENEーFIELDーR125$"
+
+gUnknown_Debug_083C4095:: @ 0x83C4095
+ .string "WKーSCENEーFIELDーR126$"
+
+gUnknown_Debug_083C40A9:: @ 0x83C40A9
+ .string "WKーSCENEーFIELDーR127$"
+
+gUnknown_Debug_083C40BD:: @ 0x83C40BD
+ .string "WKーSCENEーFIELDーR128$"
+
+gUnknown_Debug_083C40D1:: @ 0x83C40D1
+ .string "WKーSCENEーFIELDーR129$"
+
+gUnknown_Debug_083C40E5:: @ 0x83C40E5
+ .string "WKーSCENEーFIELDーR130$"
+
+gUnknown_Debug_083C40F9:: @ 0x83C40F9
+ .string "WKーSCENEーFIELDーR131$"
+
+gUnknown_Debug_083C410D:: @ 0x83C410D
+ .string "WKーSCENEーFIELDーR132$"
+
+gUnknown_Debug_083C4121:: @ 0x83C4121
+ .string "WKーSCENEーFIELDーR133$"
+
+gUnknown_Debug_083C4135:: @ 0x83C4135
+ .string "WKーSCENEーFIELDーR134$"
+
+gUnknown_Debug_083C4149:: @ 0x83C4149
+ .string "WKーSCENEーT101ーR0101$"
+
+gUnknown_Debug_083C415D:: @ 0x83C415D
+ .string "WKーSCENEーT101ーR0102$"
+
+gUnknown_Debug_083C4171:: @ 0x83C4171
+ .string "WKーSCENEーT101ーR0301$"
+
+gUnknown_Debug_083C4185:: @ 0x83C4185
+ .string "WKーSCENEーT101ーR0201$"
+
+gUnknown_Debug_083C4199:: @ 0x83C4199
+ .string "WKーSCENEーT101ーR0202$"
+
+gUnknown_Debug_083C41AD:: @ 0x83C41AD
+ .string "WKーSCENEーT107ーR0201$"
+
+gUnknown_Debug_083C41C1:: @ 0x83C41C1
+ .string "WKーSCENEーC101ーR0201$"
+
+gUnknown_Debug_083C41D5:: @ 0x83C41D5
+ .string "WKーSCENEーC104ーR0103$"
+
+gUnknown_Debug_083C41E9:: @ 0x83C41E9
+ .string "WKーSCENEーC103ーR0101$"
+
+gUnknown_Debug_083C41FD:: @ 0x83C41FD
+ .string "WKーSCENEーC106ーR0202$"
+
+gUnknown_Debug_083C4211:: @ 0x83C4211
+ .string "WKーSCENEーC106ーR0401$"
+
+gUnknown_Debug_083C4225:: @ 0x83C4225
+ .string "WKーSCENEーC102ーR0601$"
+
+gUnknown_Debug_083C4239:: @ 0x83C4239
+ .string "WKーSCENEーC102ーR0501$"
+
+gUnknown_Debug_083C424D:: @ 0x83C424D
+ .string "WKーSCENEーC104ーR0102$"
+
+gUnknown_Debug_083C4261:: @ 0x83C4261
+ .string "WKーSCENEーC107ーR0501$"
+
+gUnknown_Debug_083C4275:: @ 0x83C4275
+ .string "WKーSCENEーCAVEーD0601$"
+
+gUnknown_Debug_083C4289:: @ 0x83C4289
+ .string "WKーSCENEーCAVEーD0201$"
+
+gUnknown_Debug_083C429D:: @ 0x83C429D
+ .string "WKーSCENEーCAVEーD1206$"
+
+gUnknown_Debug_083C42B1:: @ 0x83C42B1
+ .string "WKーSCENEーCAVEーD1111$"
+
+gUnknown_Debug_083C42C5:: @ 0x83C42C5
+ .string "WKーSCENEーCAVEーD0701$"
+
+gUnknown_Debug_083C42D9:: @ 0x83C42D9
+ .string "WKーSCENEーCAVEーD0808$"
+
+gUnknown_Debug_083C42ED:: @ 0x83C42ED
+ .string "WKーSCENEーCAVEーD1602$"
+
+gUnknown_Debug_083C4301:: @ 0x83C4301
+ .string "WKーSCENEーCAVEーD0101$"
+
+gUnknown_Debug_083C4315:: @ 0x83C4315
+ .string "WKーSCENEーCAVEーD1301$"
+
+ .align 2
+gUnknown_Debug_083C432C:: @ 0x83C432C
+ .4byte gUnknown_Debug_083C3D50, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3D64, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3D78, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3D8C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3DA0, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3DAE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3DC2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3DD6, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C436C::
+ .4byte gUnknown_Debug_083C3DED, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E01, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E15, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E29, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E3D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E51, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E65, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E79, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3E8D, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C43B4::
+ .4byte gUnknown_Debug_083C3EA1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3EB5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3EC9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3EDD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3EF1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F05, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F19, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F2D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F41, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C43FC::
+ .4byte gUnknown_Debug_083C3F55, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F69, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F7D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3F91, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3FA5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3FB9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3FCD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3FE1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C3FF5, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C4444::
+ .4byte gUnknown_Debug_083C4009, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C401D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4031, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4045, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4059, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C406D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4081, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4095, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C40A9, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C448C::
+ .4byte gUnknown_Debug_083C40BD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C40D1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C40E5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C40F9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C410D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4121, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4135, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C44C4::
+ .4byte gUnknown_Debug_083C4149, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C415D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4171, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4185, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4199, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_83C44EC::
+ .4byte gUnknown_Debug_083C41C1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C41D5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C41E9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C41FD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4211, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4225, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4239, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C424D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4261, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C4534::
+ .4byte gUnknown_Debug_083C4275, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4289, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C429D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C42B1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C42C5, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C42D9, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C42ED, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4301, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4315, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C457C:: @ 0x83C457C
+ .string "くけけけけきかけけ "
+gUnknown_Debug_083C4586:: @ 0x83C4586
+ .string "っぞアぞイぞウぞエぞオぞカぞMぞ  キぞクぞケぞコぞサぞシぞスぞセぞソぞタぞチぞツぞテぞトぞナぞニぞヌぞネぞノぞハぞヒぞフぞヘぞホぞマぞミぞムぞメぞモぞヤぞユぞヨぞラぞリぞルぞレぞロぞワぞヲぞンぞァぞィぞゥぞ    ェぞォぞャぞザぞジぞHぞ      ュぞゼぞヅぞデぞドぞッぞ9ぞJぞLぞブぞボぞパぞ1ぞ7ぞ×ぞ/ぞEぞIぞ"
+
+gUnknown_Debug_083C4628:: @ 0x83C4628
+ .string "LOCALWORK0ー8$"
+
+gUnknown_Debug_083C4635:: @ 0x83C4635
+ .string "LOCALWORK9ー15$"
+
+ .align 2
+gUnknown_Debug_083C4644:: @ 0x83C4644
+ .4byte gUnknown_Debug_083C4628, debug_sub_808E754+1
+ .4byte gUnknown_Debug_083C4635, debug_sub_808E7AC+1
+
+gUnknown_Debug_083C4654:: @ 0x83C4654
+ .string "LOCALWORK0$"
+
+gUnknown_Debug_083C465F:: @ 0x83C465F
+ .string "LOCALWORK1$"
+
+gUnknown_Debug_083C466A:: @ 0x83C466A
+ .string "LOCALWORK2$"
+
+gUnknown_Debug_083C4675:: @ 0x83C4675
+ .string "LOCALWORK3$"
+
+gUnknown_Debug_083C4680:: @ 0x83C4680
+ .string "LOCALWORK4$"
+
+gUnknown_Debug_083C468B:: @ 0x83C468B
+ .string "LOCALWORK5$"
+
+gUnknown_Debug_083C4696:: @ 0x83C4696
+ .string "LOCALWORK6$"
+
+gUnknown_Debug_083C46A1:: @ 0x83C46A1
+ .string "LOCALWORK7$"
+
+gUnknown_Debug_083C46AC:: @ 0x83C46AC
+ .string "LOCALWORK8$"
+
+gUnknown_Debug_083C46B7:: @ 0x83C46B7
+ .string "LOCALWORK9$"
+
+gUnknown_Debug_083C46C2:: @ 0x83C46C2
+ .string "LOCALWORK10$"
+
+gUnknown_Debug_083C46CE:: @ 0x83C46CE
+ .string "LOCALWORK11$"
+
+gUnknown_Debug_083C46DA:: @ 0x83C46DA
+ .string "LOCALWORK12$"
+
+gUnknown_Debug_083C46E6:: @ 0x83C46E6
+ .string "LOCALWORK13$"
+
+gUnknown_Debug_083C46F2:: @ 0x83C46F2
+ .string "LOCALWORK14$"
+
+gUnknown_Debug_083C46FE:: @ 0x83C46FE
+ .string "LOCALWORK15$"
+
+ .align 2
+gUnknown_Debug_083C470C:: @ 0x83C470C
+ .4byte gUnknown_Debug_083C4654, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C465F, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C466A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4675, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4680, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C468B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4696, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46A1, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46AC, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C4754C::
+ .4byte gUnknown_Debug_083C46B7, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46C2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46CE, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46DA, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46E6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46F2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C46FE, TomomichiDebugMenu_Config+1
+
+ @ These are not strings
+gUnknown_Debug_083C478C:: @ 0x83C478C
+ .string "けき"
+gUnknown_Debug_083C478E:: @ 0x83C478E
+ .string " ぞあぞいぞうぞえぞおぞかぞきぞくぞけぞこぞさぞしぞすぞせぞそぞ    "
+
+gUnknown_Debug_083C47B2::
+ .string "Level$"
+
+gUnknown_Debug_083C47B8:: @ 0x83C47B8
+ .string "Scene1$"
+
+gUnknown_Debug_083C47BF:: @ 0x83C47BF
+ .string "Scene2$"
+
+gUnknown_Debug_083C47C6:: @ 0x83C47C6
+ .string "Scene3$"
+
+gUnknown_Debug_083C47CD:: @ 0x83C47CD
+ .string "Scene4$"
+
+gUnknown_Debug_083C47D4:: @ 0x83C47D4
+ .string "Scene5$"
+
+gUnknown_Debug_083C47DB:: @ 0x83C47DB
+ .string "Scene6$"
+
+gUnknown_Debug_083C47E2:: @ 0x83C47E2
+ .string "Scene7$"
+
+gUnknown_Debug_083C47E9:: @ 0x83C47E9
+ .string "Scene8$"
+
+ .align 2
+gUnknown_Debug_083C47F0:: @ 0x83C47F0
+ .4byte gUnknown_Debug_083C47B8, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47BF, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47C6, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47CD, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47D4, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47DB, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47E2, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C47E9, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C4830:: @ 0x83C4830
+ .string "Trick Master$"
+
+gUnknown_Debug_083C483D:: @ 0x83C483D
+ .string "Hidden MASTER$"
+
+gUnknown_Debug_083C484B:: @ 0x83C484B
+ .string "Inside the HOUSE$"
+
+gUnknown_Debug_083C485C:: @ 0x83C485C
+ .string "Pass a reward$"
+
+gUnknown_Debug_083C486A:: @ 0x83C486A
+ .string "Rig a trick$"
+
+gUnknown_Debug_083C4876:: @ 0x83C4876
+ .string "MASTER is gone$"
+
+ .align 2
+gUnknown_Debug_083C4888:: @ 0x83C4888
+ .4byte gUnknown_Debug_083C483D, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C484B, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C485C, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C486A, TomomichiDebugMenu_Config+1
+ .4byte gUnknown_Debug_083C4876, TomomichiDebugMenu_Config+1
+
+gUnknown_Debug_083C48B0:: @ 0x83C48B0
+ .string "PMNICKNAME$"
+
+gUnknown_Debug_083C48BB:: @ 0x83C48BB
+ .string "BREEDER$"
+ .endif
diff --git a/data/debug_menu_watanabe.s b/data/debug_menu_watanabe.s
new file mode 100644
index 000000000..58f9b21fd
--- /dev/null
+++ b/data/debug_menu_watanabe.s
@@ -0,0 +1,744 @@
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .if DEBUG
+
+gUnknown_Debug_083F7FD4:: @ 0x83F7FD4
+ .string "▶$"
+
+gUnknown_Debug_083F7FD6:: @ 0x83F7FD6
+ .string "ゆみあくひりつ$"
+
+gUnknown_Debug_083F7FDE:: @ 0x83F7FDE
+ .string "たかさ$"
+
+gUnknown_Debug_083F7FE2:: @ 0x83F7FE2
+ .string "Lキー▶しゅくしょう$"
+
+gUnknown_Debug_083F7FED:: @ 0x83F7FED
+ .string "Rキー▶かくだい$"
+
+gUnknown_Debug_083F7FF6:: @ 0x83F7FF6
+ .string "Uキー▶うえ いどう$"
+
+gUnknown_Debug_083F8001:: @ 0x83F8001
+ .string "Dキー▶した いどう$"
+
+gUnknown_Debug_083F800C:: @ 0x83F800C
+ .string "Aボタン▶そうさきりかえ$"
+
+gUnknown_Debug_083F8019:: @ 0x83F8019
+ .string "Bボタン▶やめる$"
+
+gUnknown_Debug_083F8022:: @ 0x83F8022
+ .string "スタート:$"
+
+gUnknown_Debug_083F8028:: @ 0x83F8028
+ .string ":セレクト$"
+
+gUnknown_Debug_083F802E:: @ 0x83F802E
+ .string "やせいたいせん$"
+
+gUnknown_Debug_083F8036:: @ 0x83F8036
+ .string "1VS1たいせん$"
+
+gUnknown_Debug_083F803F:: @ 0x83F803F
+ .string "2VS2たいせん$"
+
+gUnknown_Debug_083F8048:: @ 0x83F8048
+ .string "{COLOR BLUE}1VS1つうしんたいせん$"
+
+gUnknown_Debug_083F8058:: @ 0x83F8058
+ .string "{COLOR BLUE}2VS2つうしんたいせん$"
+
+gUnknown_Debug_083F8068:: @ 0x83F8068
+ .4byte gUnknown_Debug_083F802E, 0x100
+ .4byte gUnknown_Debug_083F8036, 0x108
+ .4byte gUnknown_Debug_083F803F, 0x209
+ .4byte gUnknown_Debug_083F8048, 0x10A
+ .4byte gUnknown_Debug_083F8058, 0x20B
+
+gUnknown_Debug_083F8090:: @ 0x83F8090
+ .string "きほんタイプ$"
+
+gUnknown_Debug_083F8097:: @ 0x83F8097
+ .string "AIタイプ2$"
+
+gUnknown_Debug_083F809E:: @ 0x83F809E
+ .string "AIタイプ3$"
+
+gUnknown_Debug_083F80A5:: @ 0x83F80A5
+ .string "AIタイプ4$"
+
+gUnknown_Debug_083F80AC:: @ 0x83F80AC
+ .string "AIタイプ5$"
+
+gUnknown_Debug_083F80B3:: @ 0x83F80B3
+ .string "AIタイプ6$"
+
+gUnknown_Debug_083F80BA:: @ 0x83F80BA
+ .string "AIタイプ7$"
+
+gUnknown_Debug_083F80C1:: @ 0x83F80C1
+ .string "AIタイプ8$"
+
+gUnknown_Debug_083F80C8:: @ 0x83F80C8
+ .string "AIタイプ9$"
+
+gUnknown_Debug_083F80CF:: @ 0x83F80CF
+ .string "AIタイプ10$"
+
+ .align 2
+gUnknown_Debug_083F80D8:: @ 0x83F80D8
+ .4byte gUnknown_Debug_083F8090, 0x1
+ .4byte gUnknown_Debug_083F8097, 0x2
+ .4byte gUnknown_Debug_083F809E, 0x4
+ .4byte gUnknown_Debug_083F80A5, 0x8
+ .4byte gUnknown_Debug_083F80AC, 0x10
+ .4byte gUnknown_Debug_083F80B3, 0x20
+ .4byte gUnknown_Debug_083F80BA, 0x40
+ .4byte gUnknown_Debug_083F80C1, 0x80
+ .4byte gUnknown_Debug_083F80C8, 0x100
+ .4byte gUnknown_Debug_083F80CF, 0x200
+
+gUnknown_Debug_083F8128:: @ 0x83F8128
+ .string "くさ$"
+
+gUnknown_Debug_083F812B:: @ 0x83F812B
+ .string "ながい くさ$"
+
+gUnknown_Debug_083F8132:: @ 0x83F8132
+ .string "すな$"
+
+gUnknown_Debug_083F8135:: @ 0x83F8135
+ .string "みず$"
+
+gUnknown_Debug_083F8138:: @ 0x83F8138
+ .string "うみ$"
+
+gUnknown_Debug_083F813B:: @ 0x83F813B
+ .string "いけ$"
+
+gUnknown_Debug_083F813E:: @ 0x83F813E
+ .string "いわ$"
+
+gUnknown_Debug_083F8141:: @ 0x83F8141
+ .string "どうくつ$"
+
+gUnknown_Debug_083F8146:: @ 0x83F8146
+ .string "そのた$"
+
+ .align 2
+gUnknown_Debug_083F814C:: @ 0x83F814C
+ .4byte gUnknown_Debug_083F8128, 0x0
+ .4byte gUnknown_Debug_083F812B, 0x1
+ .4byte gUnknown_Debug_083F8132, 0x2
+ .4byte gUnknown_Debug_083F8135, 0x3
+ .4byte gUnknown_Debug_083F8138, 0x4
+ .4byte gUnknown_Debug_083F813B, 0x5
+ .4byte gUnknown_Debug_083F813E, 0x6
+ .4byte gUnknown_Debug_083F8141, 0x7
+ .4byte gUnknown_Debug_083F8146, 0x8
+
+gUnknown_Debug_083F8194:: @ 0x83F8194
+ .string "ポケモンを えらんでね$"
+
+gUnknown_Debug_083F81A0:: @ 0x83F81A0
+ .string "{COLOR RED}START:つぎへ$"
+
+gUnknown_Debug_083F81AD:: @ 0x83F81AD
+ .string "{COLOR RED}じぶんの ポケモン$"
+
+gUnknown_Debug_083F81BA:: @ 0x83F81BA
+ .string "{COLOR RED}あいての ポケモン$"
+
+gUnknown_Debug_083F81C7:: @ 0x83F81C7
+ .string "たいせんモードを えらんでね$"
+
+gUnknown_Debug_083F81D6:: @ 0x83F81D6
+ .string "{COLOR RED}バトルモード せんたく$"
+
+gUnknown_Debug_083F81E5:: @ 0x83F81E5
+ .string "{COLOR RED}トレーナーAI せんたく$"
+
+gUnknown_Debug_083F81F5:: @ 0x83F81F5
+ .string "{COLOR RED}START:かいし$"
+
+gUnknown_Debug_083F8202:: @ 0x83F8202
+ .string "{COLOR RED}バトルちけい せんたく$"
+
+gUnknown_Debug_083F8211:: @ 0x83F8211
+ .string "じぶんの せいべつを えらんでね$"
+
+gUnknown_Debug_083F8222:: @ 0x83F8222
+ .string "{COLOR RED}せいべつ せんたく$"
+
+gUnknown_Debug_083F822F:: @ 0x83F822F
+ .string "おとこ$"
+
+gUnknown_Debug_083F8233:: @ 0x83F8233
+ .string "おんな$"
+Str_83F8237:
+ .string "Kind$"
+
+ .align 2
+_83F823C:
+ .4byte 1
+ .byte 0x82, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8248:
+ .string "Level$"
+
+ .align 2
+_83F8250:
+ .4byte 1
+ .byte 0x64, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F825C:
+ .string "EXP Points$"
+
+ .align 2
+_83F8268:
+ .4byte 1
+ .byte 0x80, 0x84, 0x1E, 0x00, 0x00, 0x07, 0x00, 0x00
+
+Str_83F8274:
+ .string "ID$"
+
+ .align 2
+_83F8278:
+ .4byte 0
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0A, 0x00, 0x00
+
+Str_83F8284:
+ .string "Rnd Numbers$"
+
+ .align 2
+_83F8290:
+ .4byte 0
+ .byte 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x0A, 0x00, 0x00
+
+Str_83F829C:
+ .string "Sex$"
+
+ .align 2
+_83F82A0:
+ .4byte 0
+ .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
+
+Str_83F82AC:
+ .string "Character$"
+
+ .align 2
+_83F82B8:
+ .4byte 0
+ .byte 0x18, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
+
+Str_83F82C4:
+ .string "Move1$"
+
+ .align 2
+_83F82CC:
+ .4byte 0
+ .byte 0x62, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F82D8:
+ .string "Move2$"
+
+ .align 2
+_83F82E0:
+ .4byte 0
+ .byte 0x62, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F82EC:
+ .string "Move3$"
+
+ .align 2
+_83F82F4:
+ .4byte 0
+ .byte 0x62, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8300:
+ .string "Move4$"
+
+ .align 2
+_83F8308:
+ .4byte 0
+ .byte 0x62, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8314:
+ .string "Hold$"
+
+ .align 2
+_83F831C:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8328:
+ .string "SP. Ability$"
+
+ .align 2
+_83F8334:
+ .4byte 0
+ .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
+
+Str_83F8340:
+ .string "HPrnd$"
+
+ .align 2
+_83F8348:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F8354:
+ .string "HPexp$"
+
+ .align 2
+_83F835C:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8368:
+ .string "ATKrnd$"
+
+ .align 2
+_83F8370:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F837C:
+ .string "ATKexp$"
+
+ .align 2
+_83F8384:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8390:
+ .string "DEFrnd$"
+
+ .align 2
+_83F8398:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F83A4:
+ .string "DEFexp$"
+
+ .align 2
+_83F83AC:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F83B8:
+ .string "SPDrnd$"
+
+ .align 2
+_83F83C0:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F83CC:
+ .string "SPDexp$"
+
+ .align 2
+_83F83D4:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F83E0:
+ .string "SP. ATK$"
+ .string "rnd$"
+
+ .align 2
+_83F83EC:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F83F8:
+ .string "SP. ATK$"
+ .string "exp$"
+
+ .align 2
+_83F8404:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8410:
+ .string "SP. DEF$"
+ .string "rnd$"
+
+ .align 2
+_83F841C:
+ .4byte 0
+ .byte 0x1F, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00
+
+Str_83F8428:
+ .string "SP. DEF$"
+ .string "exp$"
+
+ .align 2
+_83F8434:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8440:
+ .string "Cool$"
+
+ .align 2
+_83F8448:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8454:
+ .string "Beauty$"
+
+ .align 2
+_83F845C:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8468:
+ .string "Cute$"
+
+ .align 2
+_83F8470:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F847C:
+ .string "Smart$"
+
+ .align 2
+_83F8484:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F8490:
+ .string "Tough$"
+
+ .align 2
+_83F8498:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F84A4:
+ .string "Sheen$"
+
+ .align 2
+_83F84AC:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F84B8:
+ .string "Tameness$"
+
+ .align 2
+_83F84C4:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F84D0:
+ .string "{PK}RUS$"
+
+ .align 2
+_83F84D8:
+ .4byte 0
+ .byte 0xFF, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00
+
+Str_83F84E4:
+ .string "EGG$"
+ .string "$"
+
+ .align 2
+_83F84EC:
+ .4byte 0
+ .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
+
+Str_83F84F8:
+ .string "Status$"
+
+ .align 2
+_83F8500:
+ .4byte 0
+ .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00
+
+
+gUnknown_Debug_083F850A:: @ 0x83F850A
+ .string "{COLOR RED}HP  $"
+
+gUnknown_Debug_083F8514:: @ 0x83F8514
+ .string "{COLOR RED}ATK $"
+
+gUnknown_Debug_083F851C:: @ 0x83F851C
+ .string "{COLOR RED}DEF $"
+
+gUnknown_Debug_083F8524:: @ 0x83F8524
+ .string "{COLOR RED}SPEED$"
+
+gUnknown_Debug_083F852D:: @ 0x83F852D
+ .string "{COLOR RED}SP。ATK$"
+
+gUnknown_Debug_083F8537:: @ 0x83F8537
+ .string "{COLOR RED}SP。DEF$"
+
+gUnknown_Debug_083F8541:: @ 0x83F8541
+ .string "なし$"
+
+gUnknown_Debug_083F8544:: @ 0x83F8544
+ .string "♂$"
+
+gUnknown_Debug_083F8546:: @ 0x83F8546
+ .string "♀$"
+
+gUnknown_Debug_083F8548:: @ 0x83F8548
+ .string "ー$"
+
+gUnknown_Debug_083F854A:: @ 0x83F854A
+ .string "ON$"
+
+gUnknown_Debug_083F854D:: @ 0x83F854D
+ .string "OFF$"
+
+ .align 2
+gUnknown_Debug_083F8554:: @ 0x83F8554
+ .4byte Str_83F8237, _83F823C
+ .4byte Str_83F8248, _83F8250
+ .4byte Str_83F825C, _83F8268
+ .4byte Str_83F8274, _83F8278
+ .4byte Str_83F8284, _83F8290
+ .4byte Str_83F829C, _83F82A0
+ .4byte Str_83F82AC, _83F82B8
+ .4byte Str_83F82C4, _83F82CC
+ .4byte Str_83F82D8, _83F82E0
+ .4byte Str_83F82EC, _83F82F4
+ .4byte Str_83F8300, _83F8308
+ .4byte Str_83F8314, _83F831C
+ .4byte Str_83F8328, _83F8334
+ .4byte Str_83F8340, _83F8348
+ .4byte Str_83F8354, _83F835C
+ .4byte Str_83F8368, _83F8370
+ .4byte Str_83F837C, _83F8384
+ .4byte Str_83F8390, _83F8398
+ .4byte Str_83F83A4, _83F83AC
+ .4byte Str_83F83B8, _83F83C0
+ .4byte Str_83F83CC, _83F83D4
+ .4byte Str_83F83E0, _83F83EC
+ .4byte Str_83F83F8, _83F8404
+ .4byte Str_83F8410, _83F841C
+ .4byte Str_83F8428, _83F8434
+ .4byte Str_83F8440, _83F8448
+ .4byte Str_83F8454, _83F845C
+ .4byte Str_83F8468, _83F8470
+ .4byte Str_83F847C, _83F8484
+ .4byte Str_83F8490, _83F8498
+ .4byte Str_83F84A4, _83F84AC
+ .4byte Str_83F84B8, _83F84C4
+ .4byte Str_83F84D0, _83F84D8
+ .4byte Str_83F84E4, _83F84EC
+ .4byte Str_83F84F8, _83F8500
+
+gUnknown_Debug_083F866C:: @ 0x83F866C
+ .string " あいうえおか$"
+
+gUnknown_Debug_083F8674:: @ 0x83F8674
+ .string "めまみ$"
+
+gUnknown_Debug_083F8678:: @ 0x83F8678
+ .string "きくけこさし$"
+
+gUnknown_Debug_083F867F:: @ 0x83F867F
+ .string "すせそたちつ\n"
+ .string "$"
+
+gUnknown_Debug_083F8687:: @ 0x83F8687
+ .string "てとなにぬね{STRING 255}のはひふへほ$"
+
+ .align 2
+gUnknown_Debug_083F8698:: @ 0x83F8698
+ .4byte gUnknown_Debug_083F866C, 0x5
+ .4byte gUnknown_Debug_083F8674, 0x3
+ .4byte gUnknown_Debug_083F8678, 0x6
+ .4byte gUnknown_Debug_083F867F, 0x6
+ .4byte gUnknown_Debug_083F8687, 0x6
+ .4byte 0x83F868F, 0x6
+
+gUnknown_Debug_083F86C8:: @ 0x83F86C8
+ .string "ーーー$"
+
+gUnknown_Debug_083F86CC:: @ 0x83F86CC
+ .string "SLP$"
+
+gUnknown_Debug_083F86D0:: @ 0x83F86D0
+ .string "PSN$"
+
+gUnknown_Debug_083F86D4:: @ 0x83F86D4
+ .string "BRN$"
+
+gUnknown_Debug_083F86D8:: @ 0x83F86D8
+ .string "FRZ$"
+
+gUnknown_Debug_083F86DC:: @ 0x83F86DC
+ .string "PAR$"
+
+gUnknown_Debug_083F86E0:: @ 0x83F86E0
+ .string "PSN2$"
+
+ .align 2
+gUnknown_Debug_083F86E8:: @ 0x83F86E8
+ .4byte gUnknown_Debug_083F86C8, 0x0
+ .4byte gUnknown_Debug_083F86CC, 0x1
+ .4byte gUnknown_Debug_083F86D0, 0x8
+ .4byte gUnknown_Debug_083F86D4, 0x10
+ .4byte gUnknown_Debug_083F86D8, 0x20
+ .4byte gUnknown_Debug_083F86DC, 0x40
+ .4byte gUnknown_Debug_083F86E0, 0x80
+
+gUnknown_Debug_083F8720:: @ 0x83F8720
+ .string "PKMNワLIST$"
+
+gUnknown_Debug_083F872A:: @ 0x83F872A
+ .string "PKMNワBOX$"
+
+gUnknown_Debug_083F8733:: @ 0x83F8733
+ .string "Create POKひMON   LR:Shift  START:Add$"
+
+gUnknown_Debug_083F8758:: @ 0x83F8758
+ .string "たまご$"
+
+gUnknown_Debug_083F875C:: @ 0x83F875C
+ .string "DebugーG$"
+
+gUnknown_Debug_083F8764::
+ .string " $"
+ .byte 0, 0
+
+gUnknown_Debug_083F8768::
+ .4byte 0x00000001
+ .4byte 0x0000000a
+ .4byte 0x00000064
+ .4byte 0x000003e8
+ .4byte 0x00002710
+ .4byte 0x000186a0
+ .4byte 0x000f4240
+ .4byte 0x00989680
+ .4byte 0x05f5e100
+ .4byte 0x3b9aca00
+
+gUnknown_Debug_083F8790::
+ .2byte 0x0000
+ .2byte 0x0002
+ .2byte 0x0004
+ .2byte 0x0006
+ .2byte 0x0008
+ .2byte 0x000a
+ .2byte 0x000c
+ .2byte 0x000e
+ .2byte 0x0010
+ .2byte 0x0012
+ .2byte 0x0014
+ .2byte 0x0016
+ .2byte 0x0018
+ .2byte 0x001a
+ .2byte 0x001c
+ .2byte 0x001e
+ .2byte 0x001f
+ .2byte 0x001e
+ .2byte 0x001c
+ .2byte 0x001a
+ .2byte 0x0018
+ .2byte 0x0016
+ .2byte 0x0014
+ .2byte 0x0012
+ .2byte 0x0010
+ .2byte 0x000e
+ .2byte 0x000c
+ .2byte 0x000a
+ .2byte 0x0008
+ .2byte 0x0006
+ .2byte 0x0004
+ .2byte 0x0002
+
+gUnknown_Debug_083F87D0:: @ 0x83F87D0
+ .string "{COLOR RED}L{ESCAPE}ロ$"
+
+gUnknown_Debug_083F87D8:: @ 0x83F87D8
+ .string "{COLOR RED}{ESCAPE}ワR$"
+
+gUnknown_Debug_083F87E0:: @ 0x83F87E0
+ .string "かいはつナンバー$"
+
+gUnknown_Debug_083F87E9:: @ 0x83F87E9
+ .string "グラフィックナンバー$"
+
+gUnknown_Debug_083F87F4:: @ 0x83F87F4
+ .string "{COLOR RED}A:カラーせってい$"
+
+gUnknown_Debug_083F8801:: @ 0x83F8801
+ .string "{COLOR RED}A:けってい B:キャンセル$"
+
+gUnknown_Debug_083F8813:: @ 0x83F8813
+ .string ":$"
+
+gUnknown_Debug_083F8815::
+ .byte 0x00
+ .byte 0x10
+ .byte 0x20
+ .byte 0x20
+ .byte 0x20
+ .byte 0x21
+ .byte 0x20
+ .byte 0x20
+ .byte 0x20
+ .byte 0x21
+ .byte 0x20
+ .byte 0x20
+ .byte 0x20
+ .byte 0x21
+ .byte 0x20
+ .byte 0x20
+ .byte 0x20
+ .byte 0x21
+
+ .align 2
+stru_83F8828::
+ obj_tiles byte_83F88EC, 0x800, 0x1000
+ null_obj_tiles
+
+stru_83F8838::
+ obj_pal word_83F888C, 0x1000
+ null_obj_pal
+
+gOamData_83F8848:
+ .2byte 0x00a0
+ .2byte 0x0000
+ .2byte 0x0000
+
+ .align 2
+gSpriteAnim_83F8850:
+ obj_image_anim_frame 38, 30
+ obj_image_anim_end
+
+gSpriteAnim_83F8858:
+ obj_image_anim_frame 39, 30
+ obj_image_anim_end
+
+gSpriteAnim_83F8860:
+ obj_image_anim_frame 40, 30
+ obj_image_anim_end
+
+gSpriteAnimTable_83F8868::
+ .4byte gSpriteAnim_83F8850, gSpriteAnim_83F8858, gSpriteAnim_83F8860
+
+gSpriteTemplate_83F8874::
+ spr_template 0x1000, 0x1000, gOamData_83F8848, gSpriteAnimTable_83F8868, 0, gDummySpriteAffineAnimTable, debug_80C7584
+
+word_83F888C::
+ .incbin "graphics/debug/sprite_browser.gbapal"
+
+byte_83F88EC::
+ .incbin "graphics/debug/sprite_browser.4bpp"
+
+ .endif
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 3b25ceab4..1839c3547 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -3269,6 +3269,7 @@ PacifidlogTown_House2_EventScript_1A14DC:: @ 81A14DC
Route101_EventScript_1A14DC:: @ 81A14DC
return
+ .include "data/scripts/debug.inc"
.include "data/scripts/berry_tree.inc"
.include "data/text/berry_tree.inc"
diff --git a/data/graphics.s b/data/graphics.s
index 6cc1c2db7..6d678ede9 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -18,8 +18,11 @@ gUnknown_08D00524:: @ 8D00524
.include "data/graphics/pokemon/circled_question_mark_graphics.inc"
@ 8D019E4
+gUnusedOldCharmap_Gfx_lz::
.incbin "graphics/unused/old_charmap.4bpp.lz" @ japanese table and bunch of stuff
+gUnusedOldCharmap_Tilemap_lz::
.incbin "graphics/unused/old_charmap.bin.lz"
+gUnusedOldCharmap_Pal_lz::
.incbin "graphics/unused/old_charmap.gbapal.lz"
.align 2
diff --git a/data/pokemon_storage_system.s b/data/pokemon_storage_system.s
index a3b7494dc..ddb672e8e 100644
--- a/data/pokemon_storage_system.s
+++ b/data/pokemon_storage_system.s
@@ -4,685 +4,7 @@
.section .rodata
.align 2
-gUnknown_083B600C:: @ 83B600C
- .4byte PCText_WithdrawPoke, PCText_MovePokeToParty
- .4byte PCText_DepositPoke, PCText_StorePokeInBox
- .4byte PCText_MovePoke, PCText_OrganizeBoxesParty
- .4byte PCText_SeeYa, PCText_ReturnToPrevMenu
- .align 2
-gSpriteAnim_83B602C:: @ 83B602C
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83B6034:: @ 83B6034
- obj_image_anim_frame 4, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83B603C:: @ 83B603C
- obj_image_anim_frame 6, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83B6044:: @ 83B6044
- obj_image_anim_frame 10, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83B604C:: @ 83B604C
- .4byte gSpriteAnim_83B602C
- .4byte gSpriteAnim_83B6034
- .4byte gSpriteAnim_83B603C
- .4byte gSpriteAnim_83B6044
-
- .align 2
-gSpriteAffineAnim_83B605C:: @ 83B605C
- obj_rot_scal_anim_frame 0xE0, 0xE0, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83B606C:: @ 83B606C
- .4byte gSpriteAffineAnim_83B605C
-
- .align 2
-gBoxSelectionPopupPalette:: @ 83B6070
- .incbin "graphics/pokemon_storage/box_selection_popup.gbapal"
-
- .align 2
-gBoxSelectionPopupCenterTiles:: @ 83B6090
- .incbin "graphics/pokemon_storage/box_selection_popup_center.4bpp"
-
- .align 2
-gBoxSelectionPopupSidesTiles:: @ 83B6890
- .incbin "graphics/pokemon_storage/box_selection_popup_sides.4bpp"
-
- .align 2
-gPokemonStorageScrollingBGPalette:: @ 83B6A10
- .incbin "graphics/pokemon_storage/scrolling_bg.gbapal"
-
- .align 2
-gPokemonStorageScrollingBGTile:: @ 83B6A30
- .incbin "graphics/pokemon_storage/scrolling_bg.4bpp"
-
- .align 2
-gPokemonStorageScrollingBGTilemap:: @ 83B6A50
- .incbin "graphics/pokemon_storage/scrolling_bg_map.bin.lz"
-
-@ unused tilemap?
- .2byte 0x1281
- .2byte 0x1282
- .2byte 0x1283
- .2byte 0x1284
- .2byte 0x1285
- .2byte 0x1286
- .2byte 0x1287
- .2byte 0x1288
- .2byte 0x128C
- .2byte 0x128D
- .2byte 0x128E
- .2byte 0x128F
- .2byte 0x1290
- .2byte 0x1291
- .2byte 0x1292
- .2byte 0x1293
- .2byte 0x0281
- .2byte 0x0282
- .2byte 0x0283
- .2byte 0x0284
- .2byte 0x0285
- .2byte 0x0286
- .2byte 0x0287
- .2byte 0x0288
- .2byte 0x028C
- .2byte 0x028D
- .2byte 0x028E
- .2byte 0x028F
- .2byte 0x0290
- .2byte 0x0291
- .2byte 0x0292
- .2byte 0x0293
- .2byte 0x12AD
- .2byte 0x12AE
- .2byte 0x12A8
- .2byte 0x12A8
-
- .align 2
-WaveformPalette: @ 83B6B94
- .incbin "graphics/pokemon_storage/waveform.gbapal"
-
- .align 2
-WaveformTiles: @ 83B6BB4
- .incbin "graphics/pokemon_storage/waveform.4bpp"
-
- .align 2
-gUnknown_083B6D74:: @ 83B6D74
- .incbin "graphics/pokemon_storage/83B6D74.gbapal"
-
- .align 2
-gUnknown_083B6D94:: @ 83B6D94
- .incbin "graphics/pokemon_storage/83B6D94.gbapal"
-
- .align 2
-gUnknown_083B6DB4:: @ 83B6DB4
- .4byte gSharedMem
-
- .align 2
-gUnknown_083B6DB8:: @ 83B6DB8
- .4byte gTileBuffer
-
- .align 2
-gWaveformSpritePalette:: @ 83B6DBC
- obj_pal WaveformPalette, 56013
-
- .align 2
-gWaveformSpriteSheet:: @ 83B6DC4
- obj_tiles WaveformTiles, 0x1C0, 5
-
- .align 2
-gUnknown_083B6DCC:: @ 83B6DCC
- obj_tiles gSharedMem + 0x2784, 0x800, 2
-
- .align 2
-gUnknown_083B6DD4:: @ 83B6DD4
- obj_pal gSharedMem + 0x2704, 56007
-
- .align 2
-gSpriteTemplate_83B6DDC:: @ 83B6DDC
- spr_template 2, 56007, gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_083B6DF4:: @ 83B6DF4
- .4byte PCText_ExitBox, 0
- .4byte PCText_WhatYouDo, 0
- .4byte PCText_PickATheme, 0
- .4byte PCText_PickAWallpaper, 0
- .4byte PCText_IsSelected, 1
- .4byte PCText_JumpToWhichBox, 0
- .4byte PCText_DepositInWhichBox, 0
- .4byte PCText_WasDeposited, 1
- .4byte PCText_BoxIsFull, 0
- .4byte PCText_ReleasePoke, 0
- .4byte PCText_WasReleased, 4
- .4byte PCText_ByeBye, 6
- .4byte PCText_MarkPoke, 0
- .4byte PCText_LastPoke, 0
- .4byte PCText_PartyFull, 0
- .4byte PCText_HoldingPoke, 0
- .4byte PCText_WhichOneWillTake, 0
- .4byte PCText_CantReleaseEgg, 0
- .4byte PCText_ContinueBox, 0
- .4byte PCText_CameBack, 1
- .4byte PCText_Worried, 0
- .4byte PCText_Surprise, 0
- .4byte PCText_PleaseRemoveMail, 0
-
- .align 2
-gOamData_83B6EAC:: @ 83B6EAC
- .2byte 0x0000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gOamData_83B6EB4:: @ 83B6EB4
- .2byte 0x4000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_83B6EBC:: @ 83B6EBC
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83B6EC4:: @ 83B6EC4
- obj_image_anim_frame 2, 8
- obj_image_anim_frame 4, 8
- obj_image_anim_frame 6, 8
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnim_83B6ED4:: @ 83B6ED4
- obj_image_anim_frame 8, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83B6EDC:: @ 83B6EDC
- obj_image_anim_frame 10, 8
- obj_image_anim_frame 4, 8
- obj_image_anim_frame 12, 8
- obj_image_anim_jump 0
-
- .align 2
-gSpriteAnimTable_83B6EEC:: @ 83B6EEC
- .4byte gSpriteAnim_83B6EBC
- .4byte gSpriteAnim_83B6EC4
- .4byte gSpriteAnim_83B6ED4
- .4byte gSpriteAnim_83B6EDC
-
- .align 2
-gSpriteTemplate_83B6EFC:: @ 83B6EFC
- spr_template 5, 56013, gOamData_83B6EB4, gSpriteAnimTable_83B6EEC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83B6F14:: @ 83B6F14
- spr_template 15, 56000, gOamData_83B6F2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gOamData_83B6F2C:: @ 83B6F2C
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0000
-
- .align 2
-gSpriteAffineAnim_83B6F34:: @ 83B6F34
- obj_rot_scal_anim_frame 0xFFFE, 0xFFFE, 0, 120
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_83B6F44:: @ 83B6F44
- obj_rot_scal_anim_frame 0x10, 0x10, 0, 0
- obj_rot_scal_anim_frame 0x10, 0x10, 0, 15
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_83B6F5C:: @ 83B6F5C
- .4byte gSpriteAffineAnim_83B6F34
- .4byte gSpriteAffineAnim_83B6F44
-
- .align 2
-gWallpaperPalettes_Forest: @ 83B6F64
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/forest_frame.gbapal"
- .incbin "graphics/pokemon_storage/forest_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Forest: @ 83B6FC4
- .incbin "graphics/pokemon_storage/forest.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Forest: @ 83B7394
- .incbin "graphics/pokemon_storage/forest.bin.lz"
-
- .align 2
-gWallpaperPalettes_City: @ 83B7470
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/city_frame.gbapal"
- .incbin "graphics/pokemon_storage/city_bg.gbapal"
-
- .align 2
-gWallpaperTiles_City: @ 83B74D0
- .incbin "graphics/pokemon_storage/city.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_City: @ 83B76D8
- .incbin "graphics/pokemon_storage/city.bin.lz"
-
- .align 2
-gWallpaperPalettes_Desert: @ 83B7788
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/desert_frame.gbapal"
- .incbin "graphics/pokemon_storage/desert_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Desert: @ 83B77E8
- .incbin "graphics/pokemon_storage/desert.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Desert: @ 83B7AD4
- .incbin "graphics/pokemon_storage/desert.bin.lz"
-
- .align 2
-gWallpaperPalettes_Savanna: @ 83B7BB8
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/savanna_frame.gbapal"
- .incbin "graphics/pokemon_storage/savanna_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Savanna: @ 83B7C18
- .incbin "graphics/pokemon_storage/savanna.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Savanna: @ 83B7E38
- .incbin "graphics/pokemon_storage/savanna.bin.lz"
-
- .align 2
-gWallpaperPalettes_Crag: @ 83B7F04
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/crag_frame.gbapal"
- .incbin "graphics/pokemon_storage/crag_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Crag: @ 83B7F64
- .incbin "graphics/pokemon_storage/crag.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Crag: @ 83B82B4
- .incbin "graphics/pokemon_storage/crag.bin.lz"
-
- .align 2
-gWallpaperPalettes_Volcano: @ 83B838C
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/volcano_frame.gbapal"
- .incbin "graphics/pokemon_storage/volcano_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Volcano: @ 83B83EC
- .incbin "graphics/pokemon_storage/volcano.4bpp.lz"
-
- .space 4
-
- .align 2
-gWallpaperTilemap_Volcano: @ 83B8720
- .incbin "graphics/pokemon_storage/volcano.bin.lz"
-
- .align 2
-gWallpaperPalettes_Snow: @ 83B87F8
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/snow_frame.gbapal"
- .incbin "graphics/pokemon_storage/snow_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Snow: @ 83B8858
- .incbin "graphics/pokemon_storage/snow.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Snow: @ 83B8B10
- .incbin "graphics/pokemon_storage/snow.bin.lz"
-
- .align 2
-gWallpaperPalettes_Cave: @ 83B8BDC
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/cave_frame.gbapal"
- .incbin "graphics/pokemon_storage/cave_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Cave: @ 83B8C3C
- .incbin "graphics/pokemon_storage/cave.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Cave: @ 83B8F80
- .incbin "graphics/pokemon_storage/cave.bin.lz"
-
- .align 2
-gWallpaperPalettes_Beach: @ 83B905C
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/beach_frame.gbapal"
- .incbin "graphics/pokemon_storage/beach_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Beach: @ 83B90BC
- .incbin "graphics/pokemon_storage/beach.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Beach: @ 83B9440
- .incbin "graphics/pokemon_storage/beach.bin.lz"
-
- .align 2
-gWallpaperPalettes_Seafloor: @ 83B9528
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/seafloor_frame.gbapal"
- .incbin "graphics/pokemon_storage/seafloor_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Seafloor: @ 83B9588
- .incbin "graphics/pokemon_storage/seafloor.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Seafloor: @ 83B983C
- .incbin "graphics/pokemon_storage/seafloor.bin.lz"
-
- .align 2
-gWallpaperPalettes_River: @ 83B9918
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/river_frame.gbapal"
- .incbin "graphics/pokemon_storage/river_bg.gbapal"
-
- .align 2
-gWallpaperTiles_River: @ 83B9978
- .incbin "graphics/pokemon_storage/river.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_River: @ 83B9C0C
- .incbin "graphics/pokemon_storage/river.bin.lz"
-
- .align 2
-gWallpaperPalettes_Sky: @ 83B9CF8
- .incbin "graphics/pokemon_storage/box_bg1.gbapal"
- .incbin "graphics/pokemon_storage/sky_frame.gbapal"
- .incbin "graphics/pokemon_storage/sky_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Sky: @ 83B9D58
- .incbin "graphics/pokemon_storage/sky.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Sky: @ 83B9FF0
- .incbin "graphics/pokemon_storage/sky.bin.lz"
-
- .align 2
-gWallpaperPalettes_Polkadot: @ 83BA0D0
- .incbin "graphics/pokemon_storage/box_bg2.gbapal"
- .incbin "graphics/pokemon_storage/polkadot_frame.gbapal"
- .incbin "graphics/pokemon_storage/polkadot_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Polkadot: @ 83BA130
- .incbin "graphics/pokemon_storage/polkadot.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Polkadot: @ 83BA32C
- .incbin "graphics/pokemon_storage/polkadot.bin.lz"
-
- .align 2
-gWallpaperPalettes_Pokecenter: @ 83BA3E4
- .incbin "graphics/pokemon_storage/box_bg2.gbapal"
- .incbin "graphics/pokemon_storage/pokecenter_frame.gbapal"
- .incbin "graphics/pokemon_storage/pokecenter_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Pokecenter: @ 83BA444
- .incbin "graphics/pokemon_storage/pokecenter.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Pokecenter: @ 83BA7E8
- .incbin "graphics/pokemon_storage/pokecenter.bin.lz"
-
- .align 2
-gWallpaperPalettes_Machine: @ 83BA8FC
- .incbin "graphics/pokemon_storage/box_bg3.gbapal"
- .incbin "graphics/pokemon_storage/machine_frame.gbapal"
- .incbin "graphics/pokemon_storage/machine_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Machine: @ 83BA95C
- .incbin "graphics/pokemon_storage/machine.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Machine: @ 83BAC4C
- .incbin "graphics/pokemon_storage/machine.bin.lz"
-
- .align 2
-gWallpaperPalettes_Plain: @ 83BAD18
- .incbin "graphics/pokemon_storage/box_bg4.gbapal"
- .incbin "graphics/pokemon_storage/plain_frame.gbapal"
- .incbin "graphics/pokemon_storage/plain_bg.gbapal"
-
- .align 2
-gWallpaperTiles_Plain: @ 83BAD78
- .incbin "graphics/pokemon_storage/plain.4bpp.lz"
-
- .align 2
-gWallpaperTilemap_Plain: @ 83BAE74
- .incbin "graphics/pokemon_storage/plain.bin.lz"
-
-@ 12×18 tilemap
- .incbin "graphics/unused/tilemap_3BAEF8.bin"
-
- .align 1
-gUnknown_083BB0A8:: @ 83BB0A8
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
- .2byte 0x1CE7, 0x7FFF
-
- .align 2
-gWallpaperTable:: @ 83BB0E8
- @ Forest
- .4byte gWallpaperTiles_Forest
- .4byte 0x3D0
- .4byte gWallpaperTilemap_Forest
- .4byte gWallpaperPalettes_Forest
-
- @ City
- .4byte gWallpaperTiles_City
- .4byte 0x208
- .4byte gWallpaperTilemap_City
- .4byte gWallpaperPalettes_City
-
- @ Desert
- .4byte gWallpaperTiles_Desert
- .4byte 0x2EC
- .4byte gWallpaperTilemap_Desert
- .4byte gWallpaperPalettes_Desert
-
- @ Savanna
- .4byte gWallpaperTiles_Savanna
- .4byte 0x220
- .4byte gWallpaperTilemap_Savanna
- .4byte gWallpaperPalettes_Savanna
-
- @ Crag
- .4byte gWallpaperTiles_Crag
- .4byte 0x350
- .4byte gWallpaperTilemap_Crag
- .4byte gWallpaperPalettes_Crag
-
- @ Volcano
- .4byte gWallpaperTiles_Volcano
- .4byte 0x334
- .4byte gWallpaperTilemap_Volcano
- .4byte gWallpaperPalettes_Volcano
-
- @ Snow
- .4byte gWallpaperTiles_Snow
- .4byte 0x2B8
- .4byte gWallpaperTilemap_Snow
- .4byte gWallpaperPalettes_Snow
-
- @ Cave
- .4byte gWallpaperTiles_Cave
- .4byte 0x344
- .4byte gWallpaperTilemap_Cave
- .4byte gWallpaperPalettes_Cave
-
- @ Beach
- .4byte gWallpaperTiles_Beach
- .4byte 0x384
- .4byte gWallpaperTilemap_Beach
- .4byte gWallpaperPalettes_Beach
-
- @ Seafloor
- .4byte gWallpaperTiles_Seafloor
- .4byte 0x2B4
- .4byte gWallpaperTilemap_Seafloor
- .4byte gWallpaperPalettes_Seafloor
-
- @ River
- .4byte gWallpaperTiles_River
- .4byte 0x294
- .4byte gWallpaperTilemap_River
- .4byte gWallpaperPalettes_River
-
- @ Sky
- .4byte gWallpaperTiles_Sky
- .4byte 0x298
- .4byte gWallpaperTilemap_Sky
- .4byte gWallpaperPalettes_Sky
-
- @ Polkadot
- .4byte gWallpaperTiles_Polkadot
- .4byte 0x1FC
- .4byte gWallpaperTilemap_Polkadot
- .4byte gWallpaperPalettes_Polkadot
-
- @ Pokecenter
- .4byte gWallpaperTiles_Pokecenter
- .4byte 0x3A4
- .4byte gWallpaperTilemap_Pokecenter
- .4byte gWallpaperPalettes_Pokecenter
-
- @ Machine
- .4byte gWallpaperTiles_Machine
- .4byte 0x2F0
- .4byte gWallpaperTilemap_Machine
- .4byte gWallpaperPalettes_Machine
-
- @ Plain
- .4byte gWallpaperTiles_Plain
- .4byte 0xFC
- .4byte gWallpaperTilemap_Plain
- .4byte gWallpaperPalettes_Plain
-
-PCPal_Arrow:
- .incbin "graphics/pokemon_storage/arrow.gbapal"
-PCGfx_Arrow:
- .incbin "graphics/pokemon_storage/arrow.4bpp"
-
- .align 2
-gUnknown_083BB288:: @ 83BB288
- obj_tiles PCGfx_Arrow, 128, 0x0006
-
- .align 2
-gUnknown_083BB290:: @ 83BB290
- obj_pal PCPal_Arrow, 0xDACF
-
- .align 2
-gOamData_83BB298:: @ 83BB298
- .2byte 0x4000
- .2byte 0x8000
- .2byte 0x0800
-
- .align 2
-gSpriteAnim_83BB2A0:: @ 83BB2A0
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83BB2A8:: @ 83BB2A8
- obj_image_anim_frame 8, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83BB2B0:: @ 83BB2B0
- .4byte gSpriteAnim_83BB2A0
- .4byte gSpriteAnim_83BB2A8
-
- .align 2
-gSpriteTemplate_83BB2B8:: @ 83BB2B8
- spr_template 3, 56008, gOamData_83BB298, gSpriteAnimTable_83BB2B0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gOamData_83BB2D0:: @ 83BB2D0
- .2byte 0x8000
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gSpriteAnim_83BB2D8:: @ 83BB2D8
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_83BB2E0:: @ 83BB2E0
- obj_image_anim_frame 2, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83BB2E8:: @ 83BB2E8
- .4byte gSpriteAnim_83BB2D8
- .4byte gSpriteAnim_83BB2E0
-
- .align 2
-gSpriteTemplate_83BB2F0:: @ 83BB2F0
- spr_template 6, 56015, gOamData_83BB2D0, gSpriteAnimTable_83BB2E8, NULL, gDummySpriteAffineAnimTable, sub_809A8C8
-
- .align 2
-HandCursorPalette: @ 83BB308
- .incbin "graphics/pokemon_storage/hand_cursor_pal.bin"
-
- .align 2
-HandCursorAltPalette: @ 83BB328
- .incbin "graphics/pokemon_storage/hand_cursor_alt_pal.bin"
-
- .align 2
-HandCursorTiles: @ 83BB348
- .incbin "graphics/pokemon_storage/hand_cursor.4bpp"
-
- .align 2
-HandCursorShadowTiles: @ 83BBB48
- .incbin "graphics/pokemon_storage/hand_cursor_shadow.4bpp"
-
- .align 2
-gUnknown_083BBBC8:: @ 83BBBC8
- .4byte sub_809B150
- .4byte sub_809B1D8
- .4byte sub_809B24C
-
- .align 2
gUnknown_083BBBD4:: @ 83BBBD4
.4byte sub_809C464, 0
.4byte sub_809C664, 1
@@ -750,6 +72,11 @@ gSpriteTemplate_83BBC70:: @ 83BBC70
gSpriteTemplate_83BBC88:: @ 83BBC88
spr_template 1, 56006, gOamData_83BBC34, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_809CB74
+.if DEBUG
+gUnknown_Debug_0x83E6268:: @ 0x83E6268
+ .string "セットする$"
+.endif
+
.align 2
gUnknown_083BBCA0:: @ 83BBCA0
.4byte PCText_Cancel2
@@ -784,3 +111,6 @@ gUnknown_083BBCA0:: @ 83BBCA0
.4byte PCText_PokeCenter
.4byte PCText_Machine
.4byte PCText_Plain
+.if DEBUG
+ .4byte gUnknown_Debug_0x83E6268
+.endif
diff --git a/data/roulette.s b/data/roulette.s
index d19508fc3..160ec3b29 100644
--- a/data/roulette.s
+++ b/data/roulette.s
@@ -15,28 +15,35 @@ gUnknown_083F88BC:: @ 83F88BC
gUnknown_083F8A60:: @ 83F8A60
.incbin "graphics/roulette/wheel_map.bin.lz"
+ .macro struct_unk083f8c00 var00, var01_0, var01_4, var02, var03, var04, var05, var06, var07, var08, var0c, var10, var12
+ .byte \var00, \var01_0 | (\var01_4 << 4), \var02, \var03, \var04, \var05, \var06, \var07
+ .long \var08, \var0c
+ .short \var10, \var12
+ .endm
+
.align 2
gUnknown_083F8C00:: @ 83F8C00
- .byte 0xFF,0x00,0x00,0x07,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
- .byte 0x0C,0x14,0x00,0x11,0x07,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x42,0x08,0x01,0x00,0x00,0xE0,0x00,0x00
- .byte 0x0D,0x24,0x00,0x14,0x07,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x84,0x10,0x02,0x00,0x00,0xE0,0x00,0x00
- .byte 0x0E,0x34,0x00,0x17,0x07,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x21,0x04,0x00,0x00,0xE0,0x00,0x00
- .byte 0x0F,0x44,0x00,0x1A,0x07,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x42,0x08,0x00,0x00,0xE0,0x00,0x00
- .byte 0x10,0x03,0x01,0x0E,0x0A,0x00,0x0C,0x00,0x20,0x00,0x00,0x00,0xE0,0x03,0x00,0x00,0x49,0x02,0x00,0x00
- .byte 0x00,0x1C,0x01,0x11,0x0A,0x03,0x03,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x01,0x20,0x00,0x00
- .byte 0x09,0x2C,0x01,0x14,0x0A,0x03,0x03,0x00,0x80,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x22,0x00,0x00
- .byte 0x06,0x3C,0x01,0x17,0x0A,0x03,0x03,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x40,0x20,0x00,0x00
- .byte 0x03,0x4C,0x01,0x1A,0x0A,0x03,0x03,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x08,0x20,0x00,0x00
- .byte 0x11,0x03,0x02,0x0E,0x0D,0x03,0x0F,0x00,0x00,0x04,0x00,0x00,0x00,0x7C,0x00,0x00,0x92,0x04,0x00,0x00
- .byte 0x04,0x1C,0x02,0x11,0x0D,0x06,0x06,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x10,0x20,0x00,0x00
- .byte 0x01,0x2C,0x02,0x14,0x0D,0x06,0x06,0x00,0x00,0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x02,0x20,0x00,0x00
- .byte 0x0A,0x3C,0x02,0x17,0x0D,0x06,0x06,0x00,0x00,0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x24,0x00,0x00
- .byte 0x07,0x4C,0x02,0x1A,0x0D,0x06,0x06,0x00,0x00,0x40,0x00,0x00,0x00,0x40,0x00,0x00,0x80,0x20,0x00,0x00
- .byte 0x12,0x03,0x03,0x0E,0x10,0x06,0x12,0x00,0x00,0x80,0x00,0x00,0x00,0x80,0x0F,0x00,0x24,0x09,0x00,0x00
- .byte 0x08,0x1C,0x03,0x11,0x10,0x09,0x09,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x21,0x00,0x00
- .byte 0x05,0x2C,0x03,0x14,0x10,0x09,0x09,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x20,0x20,0x00,0x00
- .byte 0x02,0x3C,0x03,0x17,0x10,0x09,0x09,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x04,0x20,0x00,0x00
- .byte 0x0B,0x4C,0x03,0x1A,0x10,0x09,0x09,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x28,0x00,0x00
+// array count = 20
+ struct_unk083f8c00 0xFF, 0x0, 0x0, 0x00, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00000000, 0x00000000, 0x0000, 0x0000
+ struct_unk083f8c00 0x0C, 0x4, 0x1, 0x00, 0x11, 0x07, 0x00, 0x00, 0x00, 0x00000002, 0x00010842, 0xE000, 0x0000
+ struct_unk083f8c00 0x0D, 0x4, 0x2, 0x00, 0x14, 0x07, 0x00, 0x00, 0x00, 0x00000004, 0x00021084, 0xE000, 0x0000
+ struct_unk083f8c00 0x0E, 0x4, 0x3, 0x00, 0x17, 0x07, 0x00, 0x00, 0x00, 0x00000008, 0x00042108, 0xE000, 0x0000
+ struct_unk083f8c00 0x0F, 0x4, 0x4, 0x00, 0x1A, 0x07, 0x00, 0x00, 0x00, 0x00000010, 0x00084210, 0xE000, 0x0000
+ struct_unk083f8c00 0x10, 0x3, 0x0, 0x01, 0x0E, 0x0A, 0x00, 0x0C, 0x00, 0x00000020, 0x000003E0, 0x0249, 0x0000
+ struct_unk083f8c00 0x00, 0xC, 0x1, 0x01, 0x11, 0x0A, 0x03, 0x03, 0x00, 0x00000040, 0x00000040, 0x2001, 0x0000
+ struct_unk083f8c00 0x09, 0xC, 0x2, 0x01, 0x14, 0x0A, 0x03, 0x03, 0x00, 0x00000080, 0x00000080, 0x2200, 0x0000
+ struct_unk083f8c00 0x06, 0xC, 0x3, 0x01, 0x17, 0x0A, 0x03, 0x03, 0x00, 0x00000100, 0x00000100, 0x2040, 0x0000
+ struct_unk083f8c00 0x03, 0xC, 0x4, 0x01, 0x1A, 0x0A, 0x03, 0x03, 0x00, 0x00000200, 0x00000200, 0x2008, 0x0000
+ struct_unk083f8c00 0x11, 0x3, 0x0, 0x02, 0x0E, 0x0D, 0x03, 0x0F, 0x00, 0x00000400, 0x00007C00, 0x0492, 0x0000
+ struct_unk083f8c00 0x04, 0xC, 0x1, 0x02, 0x11, 0x0D, 0x06, 0x06, 0x00, 0x00000800, 0x00000800, 0x2010, 0x0000
+ struct_unk083f8c00 0x01, 0xC, 0x2, 0x02, 0x14, 0x0D, 0x06, 0x06, 0x00, 0x00001000, 0x00001000, 0x2002, 0x0000
+ struct_unk083f8c00 0x0A, 0xC, 0x3, 0x02, 0x17, 0x0D, 0x06, 0x06, 0x00, 0x00002000, 0x00002000, 0x2400, 0x0000
+ struct_unk083f8c00 0x07, 0xC, 0x4, 0x02, 0x1A, 0x0D, 0x06, 0x06, 0x00, 0x00004000, 0x00004000, 0x2080, 0x0000
+ struct_unk083f8c00 0x12, 0x3, 0x0, 0x03, 0x0E, 0x10, 0x06, 0x12, 0x00, 0x00008000, 0x000F8000, 0x0924, 0x0000
+ struct_unk083f8c00 0x08, 0xC, 0x1, 0x03, 0x11, 0x10, 0x09, 0x09, 0x00, 0x00010000, 0x00010000, 0x2100, 0x0000
+ struct_unk083f8c00 0x05, 0xC, 0x2, 0x03, 0x14, 0x10, 0x09, 0x09, 0x00, 0x00020000, 0x00020000, 0x2020, 0x0000
+ struct_unk083f8c00 0x02, 0xC, 0x3, 0x03, 0x17, 0x10, 0x09, 0x09, 0x00, 0x00040000, 0x00040000, 0x2004, 0x0000
+ struct_unk083f8c00 0x0B, 0xC, 0x4, 0x03, 0x1A, 0x10, 0x09, 0x09, 0x00, 0x00080000, 0x00080000, 0x2800, 0x0000
.align 2
gUnknown_083F8D90:: @ 83F8D90
@@ -80,6 +87,9 @@ gUnknown_083F8E34:: @ 83F8E34
.align 1
gUnknown_083F8E9C:: @ 83F8E9C
+// {0x53ff, 0x0101, 0x05, 0x1e, 0xff, 0x0e, 0x02, 0x00}
+// {0x7ffb, 0x0106, 0x05, 0x1e, 0xff, 0x0e, 0x02, 0x00}
+// {0x7f7f, 0x010b, 0x05, 0x1e, 0xff, 0x0e, 0x02, 0x00}
.2byte 0x53FF
.2byte 0x0101
.2byte 0x1E05
@@ -103,6 +113,8 @@ gUnknown_083F8EBC:: @ 83F8EBC
.4byte sub_811577C
.4byte sub_81157AC
+// These objects are initialied in the functions in which they are used.
+
.align 1
gUnknown_083F8EC4:: @ 83F8EC4
.2byte 0x2898
@@ -133,6 +145,15 @@ gUnknown_083F8EE8:: @ 83F8EE8
gUnknown_083F8EF4:: @ 83F8EF4
.byte 0, 3, 4, 6, 12
+// This might indicate a file boundary
+
+.if DEBUG
+@ Could also be after English-only graphics
+gUnknown_Debug_0842510D:: @ 0x842510D
+ .string "Set COIN and Press START\n"
+ .string "Aーp1 Bーm1 R:Lー×10$"
+.endif
+
.ifdef ENGLISH
.align 2
RouletteSpritePalette_01:
diff --git a/data/scripts/debug.inc b/data/scripts/debug.inc
new file mode 100644
index 000000000..bc7805f72
--- /dev/null
+++ b/data/scripts/debug.inc
@@ -0,0 +1,536 @@
+.if DEBUG
+
+DebugScript_081C1CFE:: @ 81C1CFE
+ setflag 0x804
+ call EverGrandeCity_HallOfFame_EventScript_19FC13
+ end
+
+DebugScript_081C1D07:: @ 81C1D07
+ checkitem ITEM_COIN_CASE, 1
+ compare 0x800d, 1
+ goto_if_eq DebugScript_081C1D1D
+ giveitem ITEM_COIN_CASE, 1
+ end
+
+DebugScript_081C1D1D:: @ 81C1D1D
+ end
+
+DebugScript_081C1D1E:: @ 81C1D1E
+ goto Route103_EventScript_14ED46
+
+DebugScript_081C1D23:: @ 81C1D23
+ end
+
+DebugScript_081C1D24:: @ 81C1D24
+ setvar 0x40ba, 1
+ end
+
+DebugScript_081C1D2A:: @ 81C1D2A
+ giveitem ITEM_SS_TICKET, 1
+ goto DebugScript_081C1CFE
+
+DebugScript_081C1D34:: @ 81C1D34
+ end
+
+DebugScript_081C1D35:: @ 81C1D35
+ getpartysize
+ compare 0x800d, 6
+ goto_if_eq DebugScript_081C1D45
+ giveegg SPECIES_KYOGRE
+ end
+
+DebugScript_081C1D45:: @ 81C1D45
+ end
+
+DebugScript_081C1D46:: @ 81C1D46
+ giveitem ITEM_POTION, 99
+ giveitem ITEM_ANTIDOTE, 99
+ giveitem ITEM_BURN_HEAL, 99
+ giveitem ITEM_ICE_HEAL, 99
+ giveitem ITEM_AWAKENING, 99
+ giveitem ITEM_PARALYZE_HEAL, 99
+ giveitem ITEM_FULL_RESTORE, 99
+ giveitem ITEM_MAX_POTION, 99
+ giveitem ITEM_HYPER_POTION, 99
+ giveitem ITEM_SUPER_POTION, 99
+ giveitem ITEM_FULL_HEAL, 99
+ giveitem ITEM_REVIVE, 99
+ giveitem ITEM_MAX_REVIVE, 99
+ giveitem ITEM_FRESH_WATER, 99
+ giveitem ITEM_SODA_POP, 99
+ giveitem ITEM_LEMONADE, 99
+ giveitem ITEM_MOOMOO_MILK, 99
+ giveitem ITEM_ENERGY_POWDER, 99
+ giveitem ITEM_ENERGY_ROOT, 99
+ giveitem ITEM_HEAL_POWDER, 99
+ giveitem ITEM_ORANGE_MAIL, 92
+ giveitem ITEM_RETRO_MAIL, 94
+ giveitem ITEM_POTION, 89
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_ULTRA_BALL, 99
+ giveitem ITEM_GREAT_BALL, 99
+ giveitem ITEM_POKE_BALL, 99
+ giveitem ITEM_NET_BALL, 99
+ giveitem ITEM_DIVE_BALL, 99
+ giveitem ITEM_NEST_BALL, 99
+ giveitem ITEM_REPEAT_BALL, 99
+ giveitem ITEM_TIMER_BALL, 99
+ giveitem ITEM_LUXURY_BALL, 99
+ giveitem ITEM_PREMIER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_MASTER_BALL, 99
+ giveitem ITEM_GREAT_BALL, 79
+ giveitem ITEM_ULTRA_BALL, 84
+ giveitem ITEM_POKE_BALL, 89
+ giveitem ITEM_MASTER_BALL, 74
+ giveitem ITEM_TM01_FOCUS_PUNCH, 99
+ giveitem ITEM_TM02_DRAGON_CLAW, 99
+ giveitem ITEM_TM03_WATER_PULSE, 99
+ giveitem ITEM_TM04_CALM_MIND, 99
+ giveitem ITEM_TM05_ROAR, 99
+ giveitem ITEM_TM06_TOXIC, 99
+ giveitem ITEM_TM07_HAIL, 99
+ giveitem ITEM_TM08_BULK_UP, 99
+ giveitem ITEM_TM09_BULLET_SEED, 99
+ giveitem ITEM_TM10_HIDDEN_POWER, 99
+ giveitem ITEM_TM11_SUNNY_DAY, 99
+ giveitem ITEM_TM12_TAUNT, 99
+ giveitem ITEM_TM13_ICE_BEAM, 99
+ giveitem ITEM_TM14_BLIZZARD, 99
+ giveitem ITEM_TM15_HYPER_BEAM, 99
+ giveitem ITEM_TM16_LIGHT_SCREEN, 99
+ giveitem ITEM_TM17_PROTECT, 99
+ giveitem ITEM_TM18_RAIN_DANCE, 99
+ giveitem ITEM_TM19_GIGA_DRAIN, 99
+ giveitem ITEM_TM20_SAFEGUARD, 99
+ giveitem ITEM_TM21_FRUSTRATION, 99
+ giveitem ITEM_TM22_SOLARBEAM, 99
+ giveitem ITEM_TM23_IRON_TAIL, 99
+ giveitem ITEM_TM24_THUNDERBOLT, 99
+ giveitem ITEM_TM25_THUNDER, 99
+ giveitem ITEM_TM26_EARTHQUAKE, 99
+ giveitem ITEM_TM27_RETURN, 99
+ giveitem ITEM_TM28_DIG, 99
+ giveitem ITEM_TM29_PSYCHIC, 99
+ giveitem ITEM_TM30_SHADOW_BALL, 99
+ giveitem ITEM_TM31_BRICK_BREAK, 99
+ giveitem ITEM_TM32_DOUBLE_TEAM, 99
+ giveitem ITEM_TM33_REFLECT, 99
+ giveitem ITEM_TM34_SHOCK_WAVE, 99
+ giveitem ITEM_TM35_FLAMETHROWER, 99
+ giveitem ITEM_TM36_SLUDGE_BOMB, 99
+ giveitem ITEM_TM37_SANDSTORM, 99
+ giveitem ITEM_TM38_FIRE_BLAST, 99
+ giveitem ITEM_TM39_ROCK_TOMB, 99
+ giveitem ITEM_TM40_AERIAL_ACE, 99
+ giveitem ITEM_TM41_TORMENT, 99
+ giveitem ITEM_TM42_FACADE, 99
+ giveitem ITEM_TM43_SECRET_POWER, 99
+ giveitem ITEM_TM44_REST, 99
+ giveitem ITEM_TM45_ATTRACT, 99
+ giveitem ITEM_TM46_THIEF, 99
+ giveitem ITEM_TM47_STEEL_WING, 99
+ giveitem ITEM_TM48_SKILL_SWAP, 99
+ giveitem ITEM_TM49_SNATCH, 99
+ giveitem ITEM_TM50_OVERHEAT, 99
+ giveitem ITEM_CHERI_BERRY, 200
+ giveitem ITEM_CHERI_BERRY, 200
+ giveitem ITEM_CHERI_BERRY, 200
+ giveitem ITEM_CHERI_BERRY, 200
+ giveitem ITEM_CHERI_BERRY, 199
+ giveitem ITEM_CHESTO_BERRY, 200
+ giveitem ITEM_CHESTO_BERRY, 200
+ giveitem ITEM_CHESTO_BERRY, 200
+ giveitem ITEM_CHESTO_BERRY, 200
+ giveitem ITEM_CHESTO_BERRY, 199
+ giveitem ITEM_PECHA_BERRY, 200
+ giveitem ITEM_PECHA_BERRY, 200
+ giveitem ITEM_PECHA_BERRY, 200
+ giveitem ITEM_PECHA_BERRY, 200
+ giveitem ITEM_PECHA_BERRY, 199
+ giveitem ITEM_RAWST_BERRY, 200
+ giveitem ITEM_RAWST_BERRY, 200
+ giveitem ITEM_RAWST_BERRY, 200
+ giveitem ITEM_RAWST_BERRY, 200
+ giveitem ITEM_RAWST_BERRY, 199
+ giveitem ITEM_ASPEAR_BERRY, 200
+ giveitem ITEM_ASPEAR_BERRY, 200
+ giveitem ITEM_ASPEAR_BERRY, 200
+ giveitem ITEM_ASPEAR_BERRY, 200
+ giveitem ITEM_ASPEAR_BERRY, 199
+ giveitem ITEM_LEPPA_BERRY, 200
+ giveitem ITEM_LEPPA_BERRY, 200
+ giveitem ITEM_LEPPA_BERRY, 200
+ giveitem ITEM_LEPPA_BERRY, 200
+ giveitem ITEM_LEPPA_BERRY, 199
+ giveitem ITEM_ORAN_BERRY, 200
+ giveitem ITEM_ORAN_BERRY, 200
+ giveitem ITEM_ORAN_BERRY, 200
+ giveitem ITEM_ORAN_BERRY, 200
+ giveitem ITEM_ORAN_BERRY, 199
+ giveitem ITEM_PERSIM_BERRY, 200
+ giveitem ITEM_PERSIM_BERRY, 200
+ giveitem ITEM_PERSIM_BERRY, 200
+ giveitem ITEM_PERSIM_BERRY, 200
+ giveitem ITEM_PERSIM_BERRY, 199
+ giveitem ITEM_LUM_BERRY, 200
+ giveitem ITEM_LUM_BERRY, 200
+ giveitem ITEM_LUM_BERRY, 200
+ giveitem ITEM_LUM_BERRY, 200
+ giveitem ITEM_LUM_BERRY, 199
+ giveitem ITEM_SITRUS_BERRY, 200
+ giveitem ITEM_SITRUS_BERRY, 200
+ giveitem ITEM_SITRUS_BERRY, 200
+ giveitem ITEM_SITRUS_BERRY, 200
+ giveitem ITEM_SITRUS_BERRY, 199
+ giveitem ITEM_FIGY_BERRY, 200
+ giveitem ITEM_FIGY_BERRY, 200
+ giveitem ITEM_FIGY_BERRY, 200
+ giveitem ITEM_FIGY_BERRY, 200
+ giveitem ITEM_FIGY_BERRY, 199
+ giveitem ITEM_WIKI_BERRY, 200
+ giveitem ITEM_WIKI_BERRY, 200
+ giveitem ITEM_WIKI_BERRY, 200
+ giveitem ITEM_WIKI_BERRY, 200
+ giveitem ITEM_WIKI_BERRY, 199
+ giveitem ITEM_MAGO_BERRY, 200
+ giveitem ITEM_MAGO_BERRY, 200
+ giveitem ITEM_MAGO_BERRY, 200
+ giveitem ITEM_MAGO_BERRY, 200
+ giveitem ITEM_MAGO_BERRY, 199
+ giveitem ITEM_AGUAV_BERRY, 200
+ giveitem ITEM_AGUAV_BERRY, 200
+ giveitem ITEM_AGUAV_BERRY, 200
+ giveitem ITEM_AGUAV_BERRY, 200
+ giveitem ITEM_AGUAV_BERRY, 199
+ giveitem ITEM_IAPAPA_BERRY, 200
+ giveitem ITEM_IAPAPA_BERRY, 200
+ giveitem ITEM_IAPAPA_BERRY, 200
+ giveitem ITEM_IAPAPA_BERRY, 200
+ giveitem ITEM_IAPAPA_BERRY, 199
+ giveitem ITEM_RAZZ_BERRY, 200
+ giveitem ITEM_RAZZ_BERRY, 200
+ giveitem ITEM_RAZZ_BERRY, 200
+ giveitem ITEM_RAZZ_BERRY, 200
+ giveitem ITEM_RAZZ_BERRY, 199
+ giveitem ITEM_BLUK_BERRY, 200
+ giveitem ITEM_BLUK_BERRY, 200
+ giveitem ITEM_BLUK_BERRY, 200
+ giveitem ITEM_BLUK_BERRY, 200
+ giveitem ITEM_BLUK_BERRY, 199
+ giveitem ITEM_NANAB_BERRY, 200
+ giveitem ITEM_NANAB_BERRY, 200
+ giveitem ITEM_NANAB_BERRY, 200
+ giveitem ITEM_NANAB_BERRY, 200
+ giveitem ITEM_NANAB_BERRY, 199
+ giveitem ITEM_WEPEAR_BERRY, 200
+ giveitem ITEM_WEPEAR_BERRY, 200
+ giveitem ITEM_WEPEAR_BERRY, 200
+ giveitem ITEM_WEPEAR_BERRY, 200
+ giveitem ITEM_WEPEAR_BERRY, 199
+ giveitem ITEM_PINAP_BERRY, 200
+ giveitem ITEM_PINAP_BERRY, 200
+ giveitem ITEM_PINAP_BERRY, 200
+ giveitem ITEM_PINAP_BERRY, 200
+ giveitem ITEM_PINAP_BERRY, 199
+ giveitem ITEM_POMEG_BERRY, 200
+ giveitem ITEM_POMEG_BERRY, 200
+ giveitem ITEM_POMEG_BERRY, 200
+ giveitem ITEM_POMEG_BERRY, 200
+ giveitem ITEM_POMEG_BERRY, 199
+ giveitem ITEM_KELPSY_BERRY, 200
+ giveitem ITEM_KELPSY_BERRY, 200
+ giveitem ITEM_KELPSY_BERRY, 200
+ giveitem ITEM_KELPSY_BERRY, 200
+ giveitem ITEM_KELPSY_BERRY, 199
+ giveitem ITEM_QUALOT_BERRY, 200
+ giveitem ITEM_QUALOT_BERRY, 200
+ giveitem ITEM_QUALOT_BERRY, 200
+ giveitem ITEM_QUALOT_BERRY, 200
+ giveitem ITEM_QUALOT_BERRY, 199
+ giveitem ITEM_HONDEW_BERRY, 200
+ giveitem ITEM_HONDEW_BERRY, 200
+ giveitem ITEM_HONDEW_BERRY, 200
+ giveitem ITEM_HONDEW_BERRY, 200
+ giveitem ITEM_HONDEW_BERRY, 199
+ giveitem ITEM_GREPA_BERRY, 200
+ giveitem ITEM_GREPA_BERRY, 200
+ giveitem ITEM_GREPA_BERRY, 200
+ giveitem ITEM_GREPA_BERRY, 200
+ giveitem ITEM_GREPA_BERRY, 199
+ giveitem ITEM_TAMATO_BERRY, 200
+ giveitem ITEM_TAMATO_BERRY, 200
+ giveitem ITEM_TAMATO_BERRY, 200
+ giveitem ITEM_TAMATO_BERRY, 200
+ giveitem ITEM_TAMATO_BERRY, 199
+ giveitem ITEM_CORNN_BERRY, 200
+ giveitem ITEM_CORNN_BERRY, 200
+ giveitem ITEM_CORNN_BERRY, 200
+ giveitem ITEM_CORNN_BERRY, 200
+ giveitem ITEM_CORNN_BERRY, 199
+ giveitem ITEM_MAGOST_BERRY, 999
+ giveitem ITEM_RABUTA_BERRY, 999
+ giveitem ITEM_NOMEL_BERRY, 999
+ giveitem ITEM_SPELON_BERRY, 999
+ giveitem ITEM_PAMTRE_BERRY, 999
+ giveitem ITEM_WATMEL_BERRY, 999
+ giveitem ITEM_DURIN_BERRY, 999
+ giveitem ITEM_BELUE_BERRY, 999
+ giveitem ITEM_LIECHI_BERRY, 999
+ giveitem ITEM_GANLON_BERRY, 999
+ giveitem ITEM_SALAC_BERRY, 999
+ giveitem ITEM_PETAYA_BERRY, 999
+ giveitem ITEM_APICOT_BERRY, 999
+ giveitem ITEM_LANSAT_BERRY, 999
+ giveitem ITEM_STARF_BERRY, 999
+ giveitem ITEM_ENIGMA_BERRY, 999
+ end
+
+DebugScript_081C221F:: @ 81C221F
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_DESK
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_SMALL_CHAIR
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_PLANT
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_RED_BRICK
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_JUMP_MAT
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_BALL_POSTER
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_DUSKULL_DOLL
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ givedecoration DECOR_KISS_CUSHION
+ end
+
+DebugScript_081C23E2:: @ 81C23E2
+ givecoins 9999
+ end
+
+DebugScript_081C23E6:: @ 81C23E6
+ setflag 0x081
+ setflag 0x071
+ warp MAP_SOOTOPOLIS_CITY, 0xFF, 31, 33
+ waitstate
+ end
+
+DebugScript_081C23F6:: @ 81C23F6
+ takemoney 999999, 0x00
+ end
+
+DebugScript_081C23FD:: @ 81C23FD
+ getpartysize
+ compare 0x800d, 1
+ goto_if_eq DebugScript_081C2436
+ compare 0x800d, 2
+ goto_if_eq DebugScript_081C2445
+ compare 0x800d, 3
+ goto_if_eq DebugScript_081C2454
+ compare 0x800d, 4
+ goto_if_eq DebugScript_081C2463
+ compare 0x800d, 5
+ goto_if_eq DebugScript_081C2472
+ end
+
+DebugScript_081C2436:: @ 81C2436
+ givemon SPECIES_BARBOACH, 99, 0, 0, 0, 0
+DebugScript_081C2445:
+ givemon SPECIES_BARBOACH, 99, 0, 0, 0, 0
+DebugScript_081C2454:
+ givemon SPECIES_BARBOACH, 99, 0, 0, 0, 0
+DebugScript_081C2463:
+ givemon SPECIES_BARBOACH, 99, 0, 0, 0, 0
+DebugScript_081C2472:
+ givemon SPECIES_BARBOACH, 99, 0, 0, 0, 0
+ end
+
+DebugScript_081C2482:: @ 81C2482
+ getpartysize
+ compare 0x800d, 1
+ goto_if_eq DebugScript_081C24BB
+ compare 0x800d, 2
+ goto_if_eq DebugScript_081C24CA
+ compare 0x800d, 3
+ goto_if_eq DebugScript_081C24D9
+ compare 0x800d, 4
+ goto_if_eq DebugScript_081C24E8
+ compare 0x800d, 5
+ goto_if_eq DebugScript_081C24F7
+ end
+
+DebugScript_081C24BB:: @ 81C24BB
+ givemon SPECIES_SHROOMISH, 99, 0, 0, 0, 0
+DebugScript_081C24CA:
+ givemon SPECIES_SHROOMISH, 99, 0, 0, 0, 0
+DebugScript_081C24D9:
+ givemon SPECIES_SHROOMISH, 99, 0, 0, 0, 0
+DebugScript_081C24E8:
+ givemon SPECIES_SHROOMISH, 99, 0, 0, 0, 0
+DebugScript_081C24F7:
+ givemon SPECIES_SHROOMISH, 99, 0, 0, 0, 0
+ end
+
+DebugScript_081C2507:: @ 81C2507
+ getpartysize
+ compare 0x800d, 6
+ goto_if_eq DebugScript_081C2517
+ giveegg SPECIES_BARBOACH
+ end
+
+DebugScript_081C2517:: @ 81C2517
+ end
+
+DebugScript_081C2518:: @ 81C2518
+ getpartysize
+ compare 0x800d, 6
+ goto_if_eq DebugScript_081C2528
+ giveegg SPECIES_SHROOMISH
+ end
+
+DebugScript_081C2528:: @ 81C2528
+ end
+
+.endif
diff --git a/data/start_menu_debug.s b/data/start_menu_debug.s
new file mode 100644
index 000000000..dc722bf33
--- /dev/null
+++ b/data/start_menu_debug.s
@@ -0,0 +1,495 @@
+ .if DEBUG
+
+#include "constants/moves.h"
+ .include "include/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+Str_839BD90:: @ 0x839BD90
+ .string "ジュンイチ$"
+
+Str_839BD96:: @ 0x839BD96
+ .string "ダイゴロウ$"
+
+Str_839BD9C:: @ 0x839BD9C
+ .string "テツジ$"
+
+Str_839BDA0:: @ 0x839BDA0
+ .string "バレンシア$"
+
+Str_839BDA6:: @ 0x839BDA6
+ .string "ハルコマチ$"
+
+Str_839BDAC:: @ 0x839BDAC
+ .string "RAYMOND$"
+
+Str_839BDB4:: @ 0x839BDB4
+ .string "TIFFANY$"
+
+Str_839BDBC:: @ 0x839BDBC
+ .string "くまxちえ$"
+
+ .align 2
+gUnknown_Debug_839BDC4:: @ 0x839BDC4
+ .4byte Str_839BD90, 0x0
+ .4byte Str_839BD96, 0x0
+ .4byte Str_839BDA0, 0x1
+ .4byte Str_839BDA6, 0x1
+ .4byte Str_839BDAC, 0x80
+ .4byte Str_839BDB4, 0x81
+ .4byte Str_839BD9C, 0x0
+ .4byte Str_839BDBC, 0x1
+
+Str_839BE04:: @ 0x839BE04
+ .string "ID$"
+
+Str_839BE07:: @ 0x839BE07
+ .string "X$"
+
+Str_839BE09:: @ 0x839BE09
+ .string " Y$"
+
+Str_839BE0C:: @ 0x839BE0C
+ .string " H$"
+
+Str_839BE0F:: @ 0x839BE0F
+ .string "HP$"
+
+Str_839BE12:: @ 0x839BE12
+ .string "PAR$"
+
+Str_839BE16:: @ 0x839BE16
+ .string "SLP$"
+
+Str_839BE1A:: @ 0x839BE1A
+ .string "PSN$"
+
+Str_839BE1E:: @ 0x839BE1E
+ .string "ウマイ$"
+
+ .align 2
+gUnknown_Debug_839BE24:: @ 0x839BE24
+ .4byte Str_839BE0F, DebugMenu_8077434+1
+ .4byte Str_839BE12, DebugMenu_8077434+1
+ .4byte Str_839BE16, DebugMenu_8077434+1
+ .4byte Str_839BE1A, DebugMenu_8077434+1
+ .4byte Str_839BE1E, DebugMenu_8077434+1
+
+Str_839BE4C:: @ 0x839BE4C
+ .string "OFF$"
+
+Str_839BE50:: @ 0x839BE50
+ .string "ON$"
+
+Str_839BE53:: @ 0x839BE53
+ .string "BG0\n"
+ .string "BG1\n"
+ .string "BG2\n"
+ .string "BG3\n"
+ .string "$"
+
+Str_839BE64:: @ 0x839BE64
+ .string "ON$"
+
+Str_839BE67:: @ 0x839BE67
+ .string "OFF$"
+
+Str_839BE6B:: @ 0x839BE6B
+ .string "さいせんかのうトレーナー:{STR_VAR_1}\n"
+ .string "さいせんじょうたいトレーナー:{STR_VAR_2}$"
+
+Str_839BE8D:: @ 0x839BE8D
+ .string "いる$"
+
+Str_839BE90:: @ 0x839BE90
+ .string "いない$"
+
+Str_839BE94:: @ 0x839BE94
+ .string "Max num of steps$"
+
+Str_839BEA5:: @ 0x839BEA5
+ .string "Clear num of steps$"
+
+Str_839BEB8:: @ 0x839BEB8
+ .string "See trainers$"
+
+Str_839BEC5:: @ 0x839BEC5
+ .string "Flag all clear$"
+
+Str_839BED4:: @ 0x839BED4
+ .string "Flag all set$"
+
+ .align 2
+gUnknown_Debug_839BEE4:: @ 0x839BEE4
+ .4byte Str_839BEB8, DebugMenu_8077974+1
+ .4byte Str_839BE94, DebugMenu_8077A20+1
+ .4byte Str_839BEA5, DebugMenu_8077A40+1
+ .4byte Str_839BED4, DebugMenu_8077934+1
+ .4byte Str_839BEC5, DebugMenu_8077954+1
+
+Str_839BF0C:: @ 0x839BF0C
+ .string "のこり {STR_VAR_1}ほ$"
+
+Str_839BF14:: @ 0x839BF14
+ .string "{STR_VAR_1}\n"
+ .string "のこり {STR_VAR_2}ほ$"
+
+Str_839BF1F:: @ 0x839BF1F
+ .string "めのまえには\n"
+ .string "キューブが ありません!$"
+
+Str_839BF33:: @ 0x839BF33
+ .string "ほすうをのこり1にする$"
+
+Str_839BF3F:: @ 0x839BF3F
+ .string "ボールをのこり1にする$"
+
+Str_839BF4B:: @ 0x839BF4B
+ .string "キューブおきば$"
+
+Str_839BF53:: @ 0x839BF53
+ .string "ボールをのこり30に$"
+
+Str_839BF5E:: @ 0x839BF5E
+ .string "ほすうをのこり500に$"
+
+ .align 2
+gUnknown_Debug_839BF6C:: @ 0x839BF6C
+ .4byte Str_839BF4B, DebugMenu_8077B00+1
+ .4byte Str_839BF5E, DebugMenu_8077ACC+1
+ .4byte Str_839BF33, DebugMenu_8077AE8+1
+ .4byte Str_839BF53, DebugMenu_8077A9C+1
+ .4byte Str_839BF3F, DebugMenu_8077AB4+1
+
+gUnknown_Debug_839BF94:: @ 0x839BF94
+ .4byte gMoveNames + 13 * MOVE_CUT, DebugMenu_8077BB4+1
+ .4byte gMoveNames + 13 * MOVE_FLASH, DebugMenu_8077BC0+1
+ .4byte gMoveNames + 13 * MOVE_ROCK_SMASH, DebugMenu_8077BCC+1
+ .4byte gMoveNames + 13 * MOVE_STRENGTH, DebugMenu_8077BD8+1
+ .4byte gMoveNames + 13 * MOVE_SURF, debug_sub_80B0770+1
+ .4byte gMoveNames + 13 * MOVE_FLY, debug_sub_80B07B0+1
+ .4byte gMoveNames + 13 * MOVE_WATERFALL, DebugMenu_8077BE4+1
+ .4byte gMoveNames + 13 * MOVE_DIVE, debug_sub_80B0800+1
+ .4byte gMoveNames + 13 * MOVE_SECRET_POWER, DebugMenu_8077BF4+1
+
+Str_839BFDC:: @ 0x839BFDC
+ .string " じかん ふん びょう$"
+
+gUnknown_Debug_839BFE8::
+ .byte 0x63, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00
+
+Str_839C008: @ 0x839C008
+gDebug0x839C008::
+ .string "Which item?$"
+
+Str_839C014:: @ 0x839C014
+ .string "How many?$"
+
+Str_839C01E:: @ 0x839C01E
+ .string "にがおえ ばんごう\n"
+ .string "ポケモンナンバー\n"
+ .string "ポケモンめい\n"
+ .string "ブリーダーめい\n"
+ .string "しゅるい\n"
+ .string "こせいらんすう$"
+
+Str_839C04D:: @ 0x839C04D
+ .string "データなし$"
+
+Str_839C053:: @ 0x839C053
+ .string "Miracle Island emerged\n"
+ .string "Random numbers:{STR_VAR_1}$"
+
+Str_839C07C:: @ 0x839C07C
+ .string "{STR_VAR_1}:{STR_VAR_2}\n"
+ .string "{STR_VAR_3}$"
+
+Str_839C085:: @ 0x839C085
+ .string "みしよう データ$"
+
+Str_839C08E:: @ 0x839C08E
+ .string "Confirmation$"
+
+Str_839C09B:: @ 0x839C09B
+ .string "Max-1 set$"
+
+Str_839C0A5:: @ 0x839C0A5
+ .string "Zero clear$"
+
+Str_839C0B0:: @ 0x839C0B0
+ .string "レポート$"
+
+Str_839C0B5:: @ 0x839C0B5
+ .string "クリア じかん$"
+
+Str_839C0BD:: @ 0x839C0BD
+ .string "りゅうこう さくせい$"
+
+Str_839C0C8:: @ 0x839C0C8
+ .string "きのみを うえたかいすう$"
+
+Str_839C0D5:: @ 0x839C0D5
+ .string "じてんしゃこうかん$"
+
+Str_839C0DF:: @ 0x839C0DF
+ .string "ほすう$"
+
+Str_839C0E3:: @ 0x839C0E3
+ .string "インタビュー$"
+
+Str_839C0EA:: @ 0x839C0EA
+ .string "バトル$"
+
+Str_839C0EE:: @ 0x839C0EE
+ .string "やせいバトル$"
+
+Str_839C0F5:: @ 0x839C0F5
+ .string "トレーナーバトル$"
+
+Str_839C0FE:: @ 0x839C0FE
+ .string "でんどういり$"
+
+Str_839C105:: @ 0x839C105
+ .string "ポケモンほかく$"
+
+Str_839C10D:: @ 0x839C10D
+ .string "つった かいすう$"
+
+Str_839C116:: @ 0x839C116
+ .string "タマゴかえった$"
+
+Str_839C11E:: @ 0x839C11E
+ .string "しんかした$"
+
+Str_839C124:: @ 0x839C124
+ .string "ポケセン かいふく$"
+
+Str_839C12E:: @ 0x839C12E
+ .string "じたく かいふく$"
+
+Str_839C137:: @ 0x839C137
+ .string "サファリ りよう$"
+
+Str_839C140:: @ 0x839C140
+ .string "ひでん:いあいぎり$"
+
+Str_839C14A:: @ 0x839C14A
+ .string "ひでん:いわくだき$"
+
+Str_839C154:: @ 0x839C154
+ .string "きち ひっこし$"
+
+Str_839C15C:: @ 0x839C15C
+ .string "つうしんこうかん$"
+
+Str_839C165:: @ 0x839C165
+ .string "つうしんたいせん$"
+
+Str_839C16E:: @ 0x839C16E
+ .string "つうしん かち$"
+
+Str_839C176:: @ 0x839C176
+ .string "つうしん まけ$"
+
+Str_839C17E:: @ 0x839C17E
+ .string "つうしん ひきわけ$"
+
+Str_839C188:: @ 0x839C188
+ .string "わざ:はねる$"
+
+Str_839C18F:: @ 0x839C18F
+ .string "わざ:わるあがき$"
+
+Str_839C198:: @ 0x839C198
+ .string "スロットおおあたりかいすう$"
+
+Str_839C1A6:: @ 0x839C1A6
+ .string "ルーレット れんしょう$"
+
+Str_839C1B2:: @ 0x839C1B2
+ .string "バトルタワー$"
+
+Str_839C1B9:: @ 0x839C1B9
+ .string "バトルタワーかち$"
+
+Str_839C1C2:: @ 0x839C1C2
+ .string "バトルタワーれんしょう$"
+
+Str_839C1CE:: @ 0x839C1CE
+ .string "ポロックさくせい$"
+
+Str_839C1D7:: @ 0x839C1D7
+ .string "つうしんでポロックつくった$"
+
+Str_839C1E5:: @ 0x839C1E5
+ .string "つうしんコンテストかち$"
+
+Str_839C1F1:: @ 0x839C1F1
+ .string "CPUコンテストさんか$"
+
+Str_839C1FD:: @ 0x839C1FD
+ .string "CPUコンテストかち$"
+
+Str_839C208:: @ 0x839C208
+ .string "かいもの$"
+
+Str_839C20D:: @ 0x839C20D
+ .string "ダウジングマシン$"
+
+Str_839C216:: @ 0x839C216
+ .string "あめふり$"
+
+Str_839C21B:: @ 0x839C21B
+ .string "ずかんをみた$"
+
+Str_839C222:: @ 0x839C222
+ .string "リボン もらった$"
+
+Str_839C22B:: @ 0x839C22B
+ .string "だんさ とびおり$"
+
+Str_839C234:: @ 0x839C234
+ .string "TVを みた$"
+
+Str_839C23B:: @ 0x839C23B
+ .string "とけいを みた$"
+
+Str_839C243:: @ 0x839C243
+ .string "くじが あたった$"
+
+Str_839C24C:: @ 0x839C24C
+ .string "ポケモンあずけた$"
+
+Str_839C255:: @ 0x839C255
+ .string "ロープウェイりよう$"
+
+Str_839C25F:: @ 0x839C25F
+ .string "おんせん はいった$"
+
+ .align 2
+gUnknown_Debug_839C26C:: @ 0x839C26C
+ .4byte 0xFFFFFF, Str_839C0B0
+ .4byte 0x3E73B3B, Str_839C0B5
+ .4byte 0xFFFFFF, Str_839C0BD
+ .4byte 0xFFFFFF, Str_839C0C8
+ .4byte 0xFFFFFF, Str_839C0D5
+ .4byte 0xFFFFFF, Str_839C0DF
+ .4byte 0xFFFFFF, Str_839C0E3
+ .4byte 0xFFFFFF, Str_839C0EA
+ .4byte 0xFFFFFF, Str_839C0EE
+ .4byte 0xFFFFFF, Str_839C0F5
+ .4byte 0x3E7, Str_839C0FE
+ .4byte 0xFFFFFF, Str_839C105
+ .4byte 0xFFFFFF, Str_839C10D
+ .4byte 0xFFFFFF, Str_839C116
+ .4byte 0xFFFFFF, Str_839C11E
+ .4byte 0xFFFFFF, Str_839C124
+ .4byte 0xFFFFFF, Str_839C12E
+ .4byte 0xFFFFFF, Str_839C137
+ .4byte 0xFFFFFF, Str_839C140
+ .4byte 0xFFFFFF, Str_839C14A
+ .4byte 0xFFFFFF, Str_839C154
+ .4byte 0xFFFFFF, Str_839C15C
+ .4byte 0xFFFFFF, Str_839C165
+ .4byte 0x270F, Str_839C16E
+ .4byte 0x270F, Str_839C176
+ .4byte 0x270F, Str_839C17E
+ .4byte 0xFFFFFF, Str_839C188
+ .4byte 0xFFFFFF, Str_839C18F
+ .4byte 0xFFFFFF, Str_839C198
+ .4byte 0xFFFFFF, Str_839C1A6
+ .4byte 0xFFFFFF, Str_839C1B2
+ .4byte 0x0, Str_839C1B9
+ .4byte 0x0, Str_839C1C2
+ .4byte 0xFFFFFF, Str_839C1CE
+ .4byte 0xFFFFFF, Str_839C1D7
+ .4byte 0xFFFFFF, Str_839C1E5
+ .4byte 0xFFFFFF, Str_839C1F1
+ .4byte 0xFFFFFF, Str_839C1FD
+ .4byte 0xFFFFFF, Str_839C208
+ .4byte 0xFFFFFF, Str_839C20D
+ .4byte 0xFFFFFF, Str_839C216
+ .4byte 0xFFFFFF, Str_839C21B
+ .4byte 0xFFFFFF, Str_839C222
+ .4byte 0xFFFFFF, Str_839C22B
+ .4byte 0xFFFFFF, Str_839C234
+ .4byte 0xFFFFFF, Str_839C23B
+ .4byte 0xFFFFFF, Str_839C243
+ .4byte 0xFFFFFF, Str_839C24C
+ .4byte 0xFFFFFF, Str_839C255
+ .4byte 0xFFFFFF, Str_839C25F
+
+gUnknown_Debug_839C3FC:: @ 0x839C3FC
+ .4byte Str_839C08E, DebugMenu_8078774+1
+ .4byte Str_839C09B, DebugMenu_8078788+1
+ .4byte Str_839C0A5, DebugMenu_807879C+1
+
+Str_839C414:: @ 0x839C414
+ .string "ATTR:{STR_VAR_1} HEIGHT:{STR_VAR_3}\n"
+ .string "CODE:{STR_VAR_2}$"
+
+Str_839C42E:: @ 0x839C42E
+ .string "レベル  ステージ$"
+
+Str_839C438:: @ 0x839C438
+ .string "ポロック グループ{STR_VAR_1}$"
+
+gUnknown_Debug_839C444::
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00
+ .byte 0x0c, 0x03, 0x03, 0x03, 0x03, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+
+Str_839C574:: @ 0x839C574
+gDebug0x839C574::
+ .string "write to flash$"
+
+Str_839C583:: @ 0x839C583
+ .string "read from flash$"
+
+ .align 2
+gUnknown_Debug_839C594:: @ 0x839C594
+ .4byte gDebug0x839C574, DebugMenu_8078C80+1
+ .4byte Str_839C583, DebugMenu_8078D30+1
+
+Str_839C5A4:: @ 0x839C5A4
+ .string "Press A, begin to write\n"
+ .string "Press B, cancel$"
+
+Str_839C5CC:: @ 0x839C5CC
+ .string "かきこみ せいこう$"
+
+Str_839C5D6:: @ 0x839C5D6
+ .string "よみこみせいこう$"
+
+Str_839C5DF:: @ 0x839C5DF
+ .string "かきこみ しっぱい$"
+
+Str_839C5E9:: @ 0x839C5E9
+ .string "よみこみ しっぱい$"
+
+ .align 1
+gUnknown_Debug_839C5F4::
+ .byte 0x00, 0x00, 0xe7, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x06, 0x02, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x09, 0x03, 0x00, 0x00
+
+Str_839C60C:: @ 0x839C60C
+gDebug0x839C60C::
+ .string "Set FLASH ERR$"
+
+Str_839C61A:: @ 0x839C61A
+ .string "abcde; abcde: ABCDE; ABCDE:\p"
+ .string "Tableaux des verbes du 2{SUPER_E} groupe.\p"
+ .string "La1{SUPER_RE} chose à apprendre c’est de lire.\p"
+ .string "Tableaux des verbes du 1{SUPER_ER} groupe.\p"
+ .string "“あいうえおかきくけコさしすせそたちつてとな”\n"
+ .string "<にぬネのはひふへほマみむめもやゆよらりるれろわャッ>\p"
+ .string "をんゃゅょアイウエオカキクケサシスルレロワ,$"
+
+ .endif
diff --git a/data/unk_debug_menu_3.s b/data/unk_debug_menu_3.s
new file mode 100644
index 000000000..100821c9b
--- /dev/null
+++ b/data/unk_debug_menu_3.s
@@ -0,0 +1,105 @@
+ .section .rodata
+
+ .align 2
+
+Str_842E238:: @ 0x842E238
+ .string "タマゴ$"
+
+.if DEBUG
+
+Str_842E23C:: @ 0x842E23C
+ .string "ガイブ$"
+
+Str_842E240:: @ 0x842E240
+ .string "ENGLISH$"
+
+Str_842E248:: @ 0x842E248
+ .string "TOURNAMENT$"
+
+Str_842E253:: @ 0x842E253
+ .string " そら  カードイー$"
+
+Str_842E25E:: @ 0x842E25E
+ .string "ポケコッコ$"
+
+Str_842E264:: @ 0x842E264
+ .string "ticket$"
+
+Str_842E26B:: @ 0x842E26B
+ .string "{PKMN}$"
+
+Str_842E26E:: @ 0x842E26E
+ .string "wrong {PKMN}$"
+
+Str_842E277:: @ 0x842E277
+ .string "ribbon$"
+
+Str_842E27E:: @ 0x842E27E
+ .string "DEX$"
+
+Str_842E282:: @ 0x842E282
+ .string "message$"
+
+Str_842E28A:: @ 0x842E28A
+ .string "egg$"
+
+Str_842E28E:: @ 0x842E28E
+ .string "RAM seed$"
+
+Str_842E297:: @ 0x842E297
+ .string "trainer$"
+
+Str_842E29F:: @ 0x842E29F
+ .string "clock$"
+
+Str_842E2A5:: @ 0x842E2A5
+ .string "item$"
+
+Str_842E2AA:: @ 0x842E2AA
+ .string "goods$"
+
+Str_842E2B0:: @ 0x842E2B0
+ .string "potion$"
+
+Str_842E2B7:: @ 0x842E2B7
+ .string "ball$"
+
+Str_842E2BC:: @ 0x842E2BC
+ .string "cheri berry$"
+
+Str_842E2C8:: @ 0x842E2C8
+ .string "TM01$"
+
+ .align 2
+gUnknown_Debug_842E2D0::
+ .4byte Str_842E264, debug_sub_813C404+1
+ .4byte Str_842E26B, debug_sub_813C810+1
+ .4byte Str_842E26E, debug_sub_813C888+1
+ .4byte Str_842E277, debug_sub_813C430+1
+ .4byte Str_842E27E, debug_sub_813C488+1
+ .4byte Str_842E282, debug_sub_813C45C+1
+ .4byte Str_842E28A, debug_sub_813C740+1
+ .4byte Str_842E28E, debug_sub_813C5B4+1
+ .4byte Str_842E297, debug_sub_813C93C+1
+ .4byte Str_842E29F, debug_sub_813C4B4+1
+ .4byte Str_842E2A5, debug_sub_813C4D4+1
+ .4byte Str_842E2AA, debug_sub_813C500+1
+ .4byte Str_842E2B0, debug_sub_813C580+1
+ .4byte Str_842E2B7, debug_sub_813C58C+1
+ .4byte Str_842E2BC, debug_sub_813C598+1
+ .4byte Str_842E2C8, debug_sub_813C5A4+1
+
+gUnknown_Debug_842E350::
+ .4byte 0x10
+ .4byte gUnknown_Debug_845DAE1
+ .4byte gUnknown_Debug_845DDB2
+ .4byte gUnknown_Debug_845E306
+ .4byte gUnknown_Debug_845E3E0
+ .4byte gUnknown_Debug_845E3E0
+ .4byte gUnknown_Debug_845E402
+ .4byte gUnknown_Debug_845E402
+ .4byte gUnknown_Debug_845E422
+ .4byte gUnknown_Debug_845E422
+ .4byte gUnknown_Debug_845E443
+
+.endif
diff --git a/de_after.sh b/de_after.sh
index 8c39f765a..92f940d8d 100755
--- a/de_after.sh
+++ b/de_after.sh
@@ -1 +1,2 @@
-git checkout override.mk asm/ data/ graphics
+git checkout override.mk data/ graphics
+rm data/ingame_trades.inc
diff --git a/graphics/debug/sprite_browser.pal b/graphics/debug/sprite_browser.pal
new file mode 100644
index 000000000..ba4a6027c
--- /dev/null
+++ b/graphics/debug/sprite_browser.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+115 139 65
+255 0 0
+255 123 0
+255 255 0
+123 255 0
+0 255 0
+0 255 131
+0 255 255
+0 123 255
+0 0 255
+123 0 255
+255 0 255
+255 0 123
+0 0 0
+123 123 123
+255 255 255
+115 139 65
+255 0 0
+255 123 0
+255 255 0
+123 255 0
+0 255 0
+0 255 131
+0 255 255
+0 123 255
+0 0 255
+123 0 255
+255 0 255
+255 0 123
+0 0 0
+123 123 123
+255 255 255
+115 139 65
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
+49 49 49
diff --git a/graphics/debug/sprite_browser.png b/graphics/debug/sprite_browser.png
new file mode 100644
index 000000000..b93ace2cd
--- /dev/null
+++ b/graphics/debug/sprite_browser.png
Binary files differ
diff --git a/include/battle.h b/include/battle.h
index 7d8878018..789167197 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -778,6 +778,8 @@ void sub_8012324(void);
void SwapTurnOrder(u8, u8);
u8 GetWhoStrikesFirst(u8, u8, u8);
+void debug_sub_8010800(void);
+
// asm/battle_3.o
u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check);
u8 UpdateTurnCounters(void);
diff --git a/include/battle_anim.h b/include/battle_anim.h
index a94e6d13c..ce9bb13de 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -9,14 +9,6 @@
#define REG_BG2CNT_BITFIELD REG_BGnCNT_BITFIELD(2)
#define REG_BG3CNT_BITFIELD REG_BGnCNT_BITFIELD(3)
-enum
-{
- ANIM_BANK_ATTACKER,
- ANIM_BANK_TARGET,
- ANIM_BANK_ATK_PARTNER,
- ANIM_BANK_DEF_PARTNER,
-};
-
struct BattleAnimBackground
{
void *image;
@@ -51,7 +43,7 @@ extern struct DisableStruct *gAnimDisableStructPtr;
void DoMoveAnim(u16 move);
void LaunchBattleAnimation(const u8 *const moveAnims[], u16 b, u8 c);
bool8 IsAnimBankSpriteVisible(u8 a);
-void sub_8076034(u8, u8);
+void MoveBattlerSpriteToBG(u8, u8);
bool8 IsContest(void);
void ClearBattleAnimationVars(void);
void DestroyAnimSprite(struct Sprite *sprite);
@@ -63,5 +55,6 @@ void sub_80763FC(u16 a, u16 *b, u32 c, u8 d);
s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan);
s16 sub_8077104(s16 newPan, int oldPan);
void DestroyAnimSoundTask(u8 taskId);
+void sub_8076464(u8 a);
#endif
diff --git a/include/battle_tower.h b/include/battle_tower.h
index a3e1ff28c..fe9d4ae6e 100644
--- a/include/battle_tower.h
+++ b/include/battle_tower.h
@@ -98,5 +98,6 @@ void SetEReaderTrainerName(u8*);
u8 GetEReaderTrainerPicIndex(void);
u8 GetEReaderTrainerClassNameIndex(void);
void ValidateEReaderTrainer(void);
+void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer);
#endif // GUARD_BATTLE_TOWER_H
diff --git a/include/cable_club.h b/include/cable_club.h
index a2fe46b30..2f509c9fc 100644
--- a/include/cable_club.h
+++ b/include/cable_club.h
@@ -20,5 +20,8 @@ void sub_8083B90(void);
void sub_8083BDC(void);
bool32 sub_8083BF4(u8 linkPlayerIndex);
void sub_8083C50(u8 taskId);
+#if DEBUG
+void debug_sub_808B838(u8);
+#endif
#endif // GUARD_CABLE_CLUB_H
diff --git a/include/clock.h b/include/clock.h
index 4e6560c91..5772145d3 100644
--- a/include/clock.h
+++ b/include/clock.h
@@ -3,6 +3,7 @@
// TODO: time of day and seconds in a day defines
+void InitTimeBasedEvents(void);
void DoTimeBasedEvents(void);
#endif
diff --git a/include/constants/battle_anim.h b/include/constants/battle_anim.h
new file mode 100644
index 000000000..c173a8730
--- /dev/null
+++ b/include/constants/battle_anim.h
@@ -0,0 +1,9 @@
+#ifndef GUARD_BATTLEANIM_CONSTANTS_H
+#define GUARD_BATTLEANIM_CONSTANTS_H
+
+#define ANIM_BANK_ATTACKER 0
+#define ANIM_BANK_TARGET 1
+#define ANIM_BANK_ATK_PARTNER 2
+#define ANIM_BANK_DEF_PARTNER 3
+
+#endif
diff --git a/include/constants/decorations.h b/include/constants/decorations.h
index 2e3558721..c361ccdf1 100644
--- a/include/constants/decorations.h
+++ b/include/constants/decorations.h
@@ -123,4 +123,6 @@
#define DECOR_REGICE_DOLL 119
#define DECOR_REGISTEEL_DOLL 120
+#define DECOR_COUNT 121
+
#endif // GUARD_CONSTANTS_DECORATIONS_H
diff --git a/include/constants/items.h b/include/constants/items.h
index 9b88db1da..a52c72599 100644
--- a/include/constants/items.h
+++ b/include/constants/items.h
@@ -363,42 +363,12 @@
#define ITEM_15B 347
#define ITEM_15C 348
-// FireRed/LeafGreen
-#define ITEM_OAKS_PARCEL 349
-#define ITEM_POKE_FLUTE 350
-#define ITEM_SECRET_KEY 351
-#define ITEM_BIKE_VOUCHER 352
-#define ITEM_GOLD_TEETH 353
-#define ITEM_OLD_AMBER 354
-#define ITEM_CARD_KEY 355
-#define ITEM_LIFT_KEY 356
-#define ITEM_HELIX_FOSSIL 357
-#define ITEM_DOME_FOSSIL 358
-#define ITEM_SILPH_SCOPE 359
-#define ITEM_BICYCLE 360
-#define ITEM_TOWN_MAP 361
-#define ITEM_VS_SEEKER 362
-#define ITEM_FAME_CHECKER 363
-#define ITEM_TM_CASE 364
-#define ITEM_BERRY_POUCH 365
-#define ITEM_TEACHY_TV 366
-#define ITEM_TRI_PASS 367
-#define ITEM_RAINBOW_PASS 368
-#define ITEM_TEA 369
-#define ITEM_MYSTIC_TICKET 370
-#define ITEM_AURORA_TICKET 371
-#define ITEM_POWDER_JAR 372
-#define ITEM_RUBY 373
-#define ITEM_SAPPHIRE 374
-
-// Emerald
-#define ITEM_MAGMA_EMBLEM 375
-#define ITEM_OLD_SEA_MAP 376
-
#define NUM_TECHNICAL_MACHINES 50
#define NUM_HIDDEN_MACHINES 8
// Check if the item is one that can be used on a Pokemon.
#define IS_POKEMON_ITEM(item) ((item) >= ITEM_POTION && (item) <= ITEM_0B2)
+#define IS_ITEM_MAIL(item) ((item) >= ITEM_ORANGE_MAIL && (item) <= ITEM_RETRO_MAIL)
+
#endif // GUARD_CONSTANTS_ITEMS_H
diff --git a/include/contest.h b/include/contest.h
index f0e4c0b0d..308fb9525 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -43,17 +43,13 @@ struct ContestPokemon
/*0x02*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
/*0x0D*/ u8 trainerName[8];
/*0x15*/ u8 trainerGfxId;
- /*0x16*/ u8 unk16;
- /*0x17*/ u8 filler17;
/*0x18*/ u32 flags;
- /*0x1C*/ u8 unk1C_0:2;
- u8 unk1C_2:1;
- u8 unk1C_3:1;
- u8 unk1C_4:1;
- u8 unk1C_5:1;
- u8 unk1C_6:1;
- u8 unk1C_7:1;
- u8 filler1D;
+ /*0x1C*/ u8 whichRank:2;
+ u8 aiPool_Cool:1;
+ u8 aiPool_Beauty:1;
+ u8 aiPool_Cute:1;
+ u8 aiPool_Smart:1;
+ u8 aiPool_Tough:1;
/*0x1E*/ u16 moves[4]; // moves
/*0x26*/ u8 cool; // cool
/*0x27*/ u8 beauty; // beauty
@@ -61,8 +57,7 @@ struct ContestPokemon
/*0x29*/ u8 smart; // smart
/*0x2A*/ u8 tough; // tough
/*0x2B*/ u8 sheen; // sheen
- /*0x2C*/ u8 unk2C;
- /*0x2D*/ u8 unk2D[11];
+ /*0x2C*/ u8 unk2C[12];
/*0x38*/ u32 personality; // personality
/*0x3C*/ u32 otId; // otId
}; // wow
diff --git a/include/credits.h b/include/credits.h
new file mode 100644
index 000000000..dabe24048
--- /dev/null
+++ b/include/credits.h
@@ -0,0 +1,11 @@
+#ifndef GUARD_credits_H
+#define GUARD_credits_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+void sub_81439D0(void);
+
+#endif //GUARD_credits_H
diff --git a/include/debug.h b/include/debug.h
index f3ad8c401..2136dbfb8 100644
--- a/include/debug.h
+++ b/include/debug.h
@@ -1,7 +1,17 @@
#ifndef GUARD_DEBUG_H
#define GUARD_DEBUG_H
+// start_menu_debug
+void DebugMenu_8077048(void);
+
// matsuda_debug_menu
void sub_80AAF30(void);
+void Crash(const u8 *text);
+
+// tomomichi_debug_menu
+void debug_nullsub_66(void);
+
+// sound_check_menu
+void CB2_StartSoundCheckMenu(void);
#endif // GUARD_DEBUG_H
diff --git a/include/decoration.h b/include/decoration.h
index c38bd1bcb..d7f26bd05 100644
--- a/include/decoration.h
+++ b/include/decoration.h
@@ -127,17 +127,12 @@ extern u8 gUnknown_020388F5;
extern u8 gUnknown_020388F6;
extern u8 gUnknown_020388D6[16];
extern u8 gUnknown_020388E6[12];
-extern u16 gSpecialVar_0x8004;
-extern u16 gSpecialVar_0x8005;
-extern u16 gSpecialVar_0x8006;
-extern u16 gSpecialVar_0x8007;
extern u16 gUnknown_020391A4;
extern u16 gUnknown_020391A6;
extern u8 gUnknown_020391A8;
extern u8 gUnknown_020391A9;
extern u8 gUnknown_020391AA;
extern u8 gUnknown_02039234;
-extern void (*gFieldCallback)(void);
extern const struct YesNoFuncTable gUnknown_083EC96C[];
extern struct UnkStruct_020391B4 gUnknown_020391B4[16];
@@ -160,7 +155,6 @@ extern const struct YesNoFuncTable gUnknown_083ECAA0;
extern u8 sub_8134194(u8); // src/decoration_inventory
extern bool8 sub_81341D4(void); // src/decoration_inventory
extern void sub_8134104(u8); // src/decoration_inventory
-extern bool8 IsWeatherNotFadingIn(void);
extern void sub_8109DAC(u8); // src/trader
extern void ReshowPlayerPC(u8); // src/player_pc
void Task_SecretBasePC_Decoration(u8);
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 58750fa92..b86b166aa 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -117,6 +117,7 @@ struct Shared1000
// const pointer to shared1000. easy_chat might be two separate files.
extern struct Shared1000 *const gEasyChatStruct;
+void sub_80E60D8(void);
void sub_80E62A0(u8 arg0, u16 *arg1, void (*arg2)(void), u8 arg3);
u16 sub_80EB72C(u16 group);
void sub_80EB6FC(u16 *, u16);
diff --git a/include/field_map_obj.h b/include/event_object_movement.h
index cf3be36b2..495942656 100644
--- a/include/field_map_obj.h
+++ b/include/event_object_movement.h
@@ -1,5 +1,5 @@
-#ifndef GUARD_FIELD_MAP_OBJ_H
-#define GUARD_FIELD_MAP_OBJ_H
+#ifndef GUARD_EVENTOBJMV_H
+#define GUARD_EVENTOBJMV_H
#include "sprite.h"
@@ -436,5 +436,43 @@ void sub_8060320(u32, s16 *, s16 *, s16, s16);
u8 obj_unfreeze(struct Sprite *, s16, s16, u8);
u16 npc_paltag_by_palslot(u8);
void sub_8060470(s16 *, s16 *, s16, s16);
+bool8 FreezeMapObject(struct MapObject *);
+void FreezeMapObjects(void);
+void FreezeMapObjectsExceptOne(u8);
+void UnfreezeMapObjects(void);
+void sub_806487C(struct Sprite *sprite, bool8 invisible);
+void sub_8064990(u8, u8);
+void UnfreezeMapObject(struct MapObject *mapObject);
+void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3);
+void sub_806467C(struct Sprite *sprite, u8 direction);
+bool8 sub_806468C(struct Sprite *sprite);
+void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4);
+void DoShadowFieldEffect(struct MapObject *mapObject);
+u8 sub_8064704(struct Sprite *);
+u8 sub_806478C(struct Sprite *);
+void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3);
+void DoRippleFieldEffect(struct MapObject *mapObj, struct Sprite *sprite);
+bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y);
+bool8 AreZCoordsCompatible(u8 z1, u8 z2);
+void FieldObjectUpdateMetatileBehaviors(struct MapObject *);
+void GetGroundEffectFlags_Reflection(struct MapObject *, u32 *);
+void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *, u32 *);
+void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *, u32 *);
+void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *, u32 *);
+void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *, u32 *);
+void GetGroundEffectFlags_Tracks(struct MapObject *, u32 *);
+void GetGroundEffectFlags_SandPile(struct MapObject *, u32 *);
+void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *, u32 *);
+void GetGroundEffectFlags_Puddle(struct MapObject *, u32 *);
+void GetGroundEffectFlags_Ripple(struct MapObject *, u32 *);
+void GetGroundEffectFlags_ShortGrass(struct MapObject *, u32 *);
+void GetGroundEffectFlags_HotSprings(struct MapObject *, u32 *);
+void GetGroundEffectFlags_Seaweed(struct MapObject *, u32 *);
+void GetGroundEffectFlags_JumpLanding(struct MapObject *, u32 *);
+u8 FieldObjectCheckForReflectiveSurface(struct MapObject *);
+u8 GetLedgeJumpDirection(s16, s16, u8);
+u8 ZCoordToPriority(u8);
+void FieldObjectUpdateZCoord(struct MapObject *pObject);
+void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8);
-#endif // GUARD_FIELD_MAP_OBJ_H
+#endif // GUARD_EVENTOBJMV_H
diff --git a/include/ewram.h b/include/ewram.h
index 2f1c2d1ab..f1d9baa78 100644
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -13,7 +13,6 @@ extern u8 gSharedMem[];
#define ewram0_2 (*(struct Struct2000000 *)(gSharedMem + 0x0))
#define namingScreenData (*(struct NamingScreenData *)(gSharedMem + 0x0))
#define ewramBerryPic (gSharedMem + 0x0)
-#define ewram0_3 (*(struct UnknownStruct3 *)(gSharedMem + 0x0))
#define ewram0_4 (*(struct Unk2000000 *)(gSharedMem + 0x0))
#define ewram0_5 (*(struct UnkStruct *)(gSharedMem + 0x0))
#define eMatsudaDebugVar (gSharedMem[0x0])
@@ -28,6 +27,7 @@ extern u8 gSharedMem[];
#define ewram0_9(i) (u8 *)(ewram_addr + (i * 0x20))
#define ewram0_10 (*(struct UnknownPokenav0*)(gSharedMem + 0))
#define ewram0_11 (*(struct UnknownPokenav0_1*)(gSharedMem + 0))
+#define ePokemonStorageSystem (*(struct PokemonStorageSystemData *)(gSharedMem + 0))
#define ewram4 (*(struct UnknownStruct8 *)(gSharedMem + 0x4))
#define ewram520 ((struct UnknownStruct7 *)(gSharedMem + 0x00520))
#define ewram520_2 (u8 *)(ewram_addr + 0x520)
@@ -38,10 +38,6 @@ extern u8 gSharedMem[];
#define ewram01000 (*(struct Unk2001000 *)(gSharedMem + 0x1000))
#define ewramBerryPicTemp (gSharedMem + 0x1000)
#define EWRAM_1000 (*(struct Struct2001000 *)(gSharedMem + 0x1000))
-#define gUnk20011fa (u8 *)(&gSharedMem[0x11FA])
-#define gUnk2002694 (u8 *)(&gSharedMem[0x2694])
-#define gUnk20026A6 (u8 *)(&gSharedMem[0x26A6])
-#define gUnk20026e4 (u8 *)(&gSharedMem[0x26E4])
#define ewram4000 (gSharedMem + 0x4000)
#define gUnknown_02007000 (*(ewramStruct_02007000 *)(gSharedMem + 0x7000))
#define ARRAY_2007800 ((struct EasyChatPair *)(gSharedMem + 0x7800))
@@ -251,6 +247,7 @@ extern u8 gSharedMem[];
#define ewram1C000 (*(struct Unk201C000 *)(gSharedMem + 0x1C000))
#define ewram1c000 (*(struct Unk201C000 *)(gSharedMem + 0x1C000)) // FIXME, names too similar
#define eHallOfFameMons1 (struct HallofFameMons*)(&gSharedMem[0x1C000])
+#define eHOFPCScreenEffect (*(struct PCScreenEffectStruct *)(gSharedMem + 0x1c000))
#define EWRAM_1C800 (*(struct Unk201C800 *)(gSharedMem + 0x1C800))
#define ewram1D000 ((struct Pokemon *)(gSharedMem + 0x1D000))
#define ewram1D000_2 ((u16 *)(gSharedMem + 0x1D000))
diff --git a/include/field_control_avatar.h b/include/field_control_avatar.h
index 2d5693e40..49e9f23e3 100644
--- a/include/field_control_avatar.h
+++ b/include/field_control_avatar.h
@@ -36,5 +36,6 @@ bool8 sub_8068870(u16 a);
bool8 sub_8068894(void);
bool8 sub_8068A64(struct MapPosition *, u16);
u8 sub_8068F18(void);
+bool8 dive_warp(struct MapPosition *position, u16 b);
#endif
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index 4377367f7..cd0cb6eab 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -27,5 +27,6 @@ void sub_8080F48(void);
void sub_8080F58(void);
void sub_8080F68(void);
void sub_8080F9C(void);
+void debug_sub_80888D8(void);
#endif // GUARD_FIELD_FADETRANSITION_H
diff --git a/include/field_ground_effect.h b/include/field_ground_effect.h
deleted file mode 100644
index 19d43c916..000000000
--- a/include/field_ground_effect.h
+++ /dev/null
@@ -1,27 +0,0 @@
-#ifndef GUARD_FIELD_GROUND_EFFECT_H
-#define GUARD_FIELD_GROUND_EFFECT_H
-
-bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y);
-bool8 AreZCoordsCompatible(u8 z1, u8 z2);
-void FieldObjectUpdateMetatileBehaviors(struct MapObject *);
-void GetGroundEffectFlags_Reflection(struct MapObject *, u32 *);
-void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *, u32 *);
-void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *, u32 *);
-void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *, u32 *);
-void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *, u32 *);
-void GetGroundEffectFlags_Tracks(struct MapObject *, u32 *);
-void GetGroundEffectFlags_SandPile(struct MapObject *, u32 *);
-void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *, u32 *);
-void GetGroundEffectFlags_Puddle(struct MapObject *, u32 *);
-void GetGroundEffectFlags_Ripple(struct MapObject *, u32 *);
-void GetGroundEffectFlags_ShortGrass(struct MapObject *, u32 *);
-void GetGroundEffectFlags_HotSprings(struct MapObject *, u32 *);
-void GetGroundEffectFlags_Seaweed(struct MapObject *, u32 *);
-void GetGroundEffectFlags_JumpLanding(struct MapObject *, u32 *);
-u8 FieldObjectCheckForReflectiveSurface(struct MapObject *);
-u8 GetLedgeJumpDirection(s16, s16, u8);
-u8 ZCoordToPriority(u8);
-void FieldObjectUpdateZCoord(struct MapObject *pObject);
-void SetObjectSubpriorityByZCoord(u8, struct Sprite *, u8);
-
-#endif // GUARD_FIELD_GROUND_EFFECT_H
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
deleted file mode 100644
index f760bf153..000000000
--- a/include/field_map_obj_helpers.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef GUARD_FIELDMAPOBJHELP_H
-#define GUARD_FIELDMAPOBJHELP_H
-
-#include "sprite.h"
-
-bool8 FreezeMapObject(struct MapObject *);
-void FreezeMapObjects(void);
-void FreezeMapObjectsExceptOne(u8);
-void UnfreezeMapObjects(void);
-void sub_806487C(struct Sprite *sprite, bool8 invisible);
-void sub_8064990(u8, u8);
-void UnfreezeMapObject(struct MapObject *mapObject);
-void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3);
-void sub_806467C(struct Sprite *sprite, u8 direction);
-bool8 sub_806468C(struct Sprite *sprite);
-void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4);
-void DoShadowFieldEffect(struct MapObject *mapObject);
-u8 sub_8064704(struct Sprite *);
-u8 sub_806478C(struct Sprite *);
-void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3);
-void DoRippleFieldEffect(struct MapObject *mapObj, struct Sprite *sprite);
-
-#endif
diff --git a/include/field_specials.h b/include/field_specials.h
index 52325879c..a8e8d3da7 100644
--- a/include/field_specials.h
+++ b/include/field_specials.h
@@ -26,5 +26,6 @@ void SetShoalItemFlag(u16);
u8 GetLeadMonIndex(void);
void ResetFanClub(void);
u8 sub_810FB10(u8 a0);
+void sub_810FEFC(void);
#endif // GUARD_FIELD_SPECIALS_H
diff --git a/include/fieldmap.h b/include/fieldmap.h
index 67b85fa62..5aa9eb360 100644
--- a/include/fieldmap.h
+++ b/include/fieldmap.h
@@ -1,6 +1,6 @@
#ifndef GUARD_FIELDMAP2_H
#define GUARD_FIELDMAP2_H
-#include "field_map_obj.h"
+#include "event_object_movement.h"
extern struct BackupMapData gUnknown_03004870;
struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection);
diff --git a/include/gba/macro.h b/include/gba/macro.h
index d39d10738..ab42c9da3 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -105,7 +105,7 @@
#define DmaClearLarge(dmaNum, dest, size, block, bit) \
{ \
- const void *_dest = dest; \
+ void *_dest = dest; \
u32 _size = size; \
while (1) \
{ \
diff --git a/include/global.berry.h b/include/global.berry.h
index 21a0dd500..8f185c8f9 100644
--- a/include/global.berry.h
+++ b/include/global.berry.h
@@ -3,7 +3,7 @@
struct Berry
{
- /*0x00*/ const u8 name[7];
+ /*0x00*/ u8 name[7];
/*0x07*/ u8 firmness;
/*0x08*/ u16 size;
/*0x0A*/ u8 maxYield;
diff --git a/include/global.h b/include/global.h
index d0af4a4d1..faa4ace68 100644
--- a/include/global.h
+++ b/include/global.h
@@ -65,6 +65,15 @@ enum
#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
+// Credits to Made (dolphin emoji)
+#define S16TOPOSFLOAT(val) \
+({ \
+ s16 v = (val); \
+ float f = (float)v; \
+ if(v < 0) f += 65536.0f; \
+ f; \
+})
+
enum
{
VERSION_SAPPHIRE = 1,
@@ -623,7 +632,7 @@ struct SaveBlock1 /* 0x02025734 */
/*0x24*/ struct WarpData warp4;
/*0x2C*/ u16 savedMusic;
/*0x2E*/ u8 weather;
- /*0x2F*/ u8 filler_2F;
+ /*0x2F*/ u8 weatherCycleStage;
/*0x30*/ u8 flashLevel; // flash level on current map, 0 being normal and 4 being the darkest
/*0x32*/ u16 mapDataId;
/*0x34*/ u16 mapView[0x100];
@@ -725,46 +734,37 @@ struct Pokedex
struct BattleTowerTrainer
{
- u8 trainerClass;
- u8 name[8];
- u8 teamFlags;
- struct {
- u16 easyChat[6];
- } greeting;
+ /*0x00*/ u8 trainerClass;
+ /*0x01*/ u8 name[8];
+ /*0x09*/ u8 teamFlags;
+ u8 filler0A[2];
+ /*0x0C*/ u16 greeting[6];
};
struct BattleTowerRecord // record mixing
{
- /*0x00*/u8 battleTowerLevelType; // 0 = level 50, 1 = level 100
- /*0x01*/u8 trainerClass;
- /*0x02*/u16 winStreak;
- /*0x04*/u8 name[8];
- /*0x0C*/u8 trainerId[4];
- /*0x10*/struct {
- u16 easyChat[6];
- } greeting;
- /*0x1C*/struct UnknownPokemonStruct party[3];
- /*0xA0*/u32 checksum;
+ /*0x00*/ u8 battleTowerLevelType; // 0 = level 50, 1 = level 100
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u16 winStreak;
+ /*0x04*/ u8 name[8];
+ /*0x0C*/ u8 trainerId[4];
+ /*0x10*/ u16 greeting[6];
+ /*0x1C*/ struct UnknownPokemonStruct party[3];
+ /*0xA0*/ u32 checksum;
};
struct BattleTowerEReaderTrainer
{
- /*0x00*/u8 unk0;
- /*0x01*/u8 trainerClass;
- /*0x02*/u16 winStreak;
- /*0x04*/u8 name[8];
- /*0x0C*/u8 trainerId[4];
- /*0x10*/struct {
- u16 easyChat[6];
- } greeting;
- /*0x1C*/struct {
- u16 easyChat[6];
- } farewellPlayerLost;
- /*0x28*/struct {
- u16 easyChat[6];
- } farewellPlayerWon;
- /*0x34*/struct UnknownPokemonStruct party[3];
- /*0xB8*/u32 checksum;
+ /*0x00*/ u8 unk0;
+ /*0x01*/ u8 trainerClass;
+ /*0x02*/ u16 winStreak;
+ /*0x04*/ u8 name[8];
+ /*0x0C*/ u8 trainerId[4];
+ /*0x10*/ u16 greeting[6];
+ /*0x1C*/ u16 farewellPlayerLost[6];
+ /*0x28*/ u16 farewellPlayerWon[6];
+ /*0x34*/ struct UnknownPokemonStruct party[3];
+ /*0xB8*/ u32 checksum;
};
struct BattleTowerData
@@ -822,7 +822,7 @@ struct MapPosition
{
s16 x;
s16 y;
- u8 height;
+ s8 height;
};
struct UnkStruct_8054FF8
@@ -841,8 +841,6 @@ struct HallOfFame
u8 filler[0x1F00];
};
-extern struct HallOfFame gHallOfFame;
extern struct SaveBlock2 gSaveBlock2;
-extern u8 ewram[];
#endif // GUARD_GLOBAL_H
diff --git a/include/graphics.h b/include/graphics.h
index 243d40fb9..bdb2b160e 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2739,7 +2739,15 @@ extern const u16 gCableCar_Pal[];
extern const u16 gCableCarBG_Pal[];
extern const u8 gCableCarBG_Gfx[];
-// data/graphics.s
+extern const u8 gPSSMenuHeader_Gfx[];
+extern const u8 gPSSMenuHeader_Tilemap[];
+extern const u16 gPSSMenu1_Pal[];
+extern const u16 gPSSMenu2_Pal[];
+extern const u8 gPSSMenuMisc_Gfx[];
+extern const u8 gPSSMenuMisc_Tilemap[];
+extern const u16 gPSSMenu3_Pal[];
+extern const u16 gPSSMenu4_Pal[];
+
extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_000;
extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_001;
extern struct CompressedSpriteSheet gBattleAnimSpriteSheet_002;
diff --git a/include/hof_pc.h b/include/hof_pc.h
new file mode 100644
index 000000000..c6df4e9a1
--- /dev/null
+++ b/include/hof_pc.h
@@ -0,0 +1,12 @@
+#ifndef GUARD_hof_pc_H
+#define GUARD_hof_pc_H
+
+// Exported type declarations
+
+// Exported RAM declarations
+
+// Exported ROM declarations
+
+void ReturnFromHallOfFamePC(void);
+
+#endif //GUARD_hof_pc_H
diff --git a/include/item.h b/include/item.h
index 8f6cc883b..57aebf88e 100644
--- a/include/item.h
+++ b/include/item.h
@@ -1,27 +1,8 @@
#ifndef GUARD_ITEM_H
#define GUARD_ITEM_H
-
typedef void (*ItemUseFunc)(u8);
-struct Item
-{
- u8 name[14];
- u16 itemId;
- u16 price;
- u8 holdEffect;
- u8 holdEffectParam;
- const u8 *description;
- u8 importance;
- u8 unk19;
- u8 pocket;
- u8 type;
- ItemUseFunc fieldUseFunc;
- u8 battleUsage;
- ItemUseFunc battleUseFunc;
- u8 secondaryId;
-};
-
struct BagPocket
{
struct ItemSlot *itemSlots;
@@ -30,8 +11,6 @@ struct BagPocket
#define NUM_BAG_POCKETS 5
-extern const struct BagPocket gBagPockets[NUM_BAG_POCKETS];
-
void CopyItemName(u16 itemId, u8 *string);
bool8 IsBagPocketNonEmpty(u8 pocket);
bool8 CheckBagHasItem(u16 itemId, u16 count);
@@ -45,7 +24,7 @@ bool8 CheckPCHasItem(u16 itemId, u16 count);
bool8 AddPCItem(u16 itemId, u16 count);
void RemovePCItem(u8 index, u16 count);
void SwapRegisteredBike(void);
-const struct Item *ItemId_GetItem(u16 itemId);
+const u8 *ItemId_GetName(u16 itemId);
u16 ItemId_GetId(u16 itemId);
u16 ItemId_GetPrice(u16 itemId);
u8 ItemId_GetHoldEffect(u16 itemId);
diff --git a/include/link.h b/include/link.h
index 6581fdbba..ca6c368ff 100644
--- a/include/link.h
+++ b/include/link.h
@@ -131,10 +131,11 @@ extern const struct BlockRequest sBlockRequestLookupTable[5];
extern struct Link gLink;
extern u16 gRecvCmds[CMD_LENGTH][MAX_LINK_PLAYERS];
+// TODO: Why is gBlockSendBuffer a u8 array, while gBlockRecvBuffer is a u16 array?
extern u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE];
+extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
extern u16 gLinkType;
extern u32 gLinkStatus;
-extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2];
extern u16 gSendCmd[CMD_LENGTH];
extern u8 gShouldAdvanceLinkState;
#if GERMAN
@@ -145,6 +146,9 @@ extern struct LinkPlayer gLinkPlayers[];
extern u16 word_3002910[];
extern bool8 gReceivedRemoteLinkPlayers;
extern bool8 gLinkOpen;
+extern bool8 gLinkPlayerPending[MAX_LINK_PLAYERS];
+void (*gLinkCallback)(void);
+extern u8 gUnknown_Debug_30030E0;
void Task_DestroySelf(u8);
void sub_8007270(u8);
@@ -194,5 +198,11 @@ u32 LinkMain1(u8 *, u16 *, u16[CMD_LENGTH][MAX_LINK_PLAYERS]);
void LinkVSync(void);
void Timer3Intr(void);
void SerialCB(void);
+void LinkTestScreen(void);
+void debug_sub_8008218(u16 *buffer, u32 arg1, u16 *arg2, u32 arg3);
+void debug_sub_8008264(u32 value, int left, int top, int r3, int sp0);
+u32 sub_8007E40(void);
+void PrintHex(u32, u8, u8, u8);
+void InitLinkTestBG_Unused(u8, u8, u8, u8);
#endif // GUARD_LINK_H
diff --git a/include/macros/battle_anim.inc b/include/macros/battle_anim.inc
index 4ff845032..bf409a848 100644
--- a/include/macros/battle_anim.inc
+++ b/include/macros/battle_anim.inc
@@ -1,14 +1,14 @@
- .macro loadsprite id
+ .macro loadspritegfx id
.byte 0x00
.2byte \id
.endm
- .macro unloadsprite id
+ .macro unloadspritegfx id
.byte 0x01
.2byte \id
.endm
- .macro sprite template, priority, argv:vararg
+ .macro createsprite template, priority, argv:vararg
.byte 0x02
.4byte \template
.byte \priority
@@ -18,7 +18,7 @@
.Lsprite_\@_2:
.endm
- .macro createtask addr, priority, argv:vararg
+ .macro createvisualtask addr, priority, argv:vararg
.byte 0x03
.4byte \addr
.byte \priority
@@ -28,12 +28,12 @@
.Lcreatetask_\@_2:
.endm
- .macro pause delay
+ .macro delay amount
.byte 0x04
- .byte \delay
+ .byte \amount
.endm
- .macro wait
+ .macro waitforvisualfinish
.byte 0x05
.endm
@@ -78,29 +78,29 @@
.4byte \addr
.endm
- .macro ret
+ .macro return
.byte 0x0F
.endm
- .macro setvar var_num, value
+ .macro setarg arg_num, value
.byte 0x10
- .byte \var_num
+ .byte \arg_num
.2byte \value
.endm
- .macro ifelse addr1, addr2
+ .macro choosetwoturnanim addr1, addr2
.byte 0x11
.4byte \addr1
.4byte \addr2
.endm
- .macro jumpif cond, addr
+ .macro jumpifmoveturn cond, addr
.byte 0x12
.byte \cond
.4byte \addr
.endm
- .macro jump addr
+ .macro goto addr
.byte 0x13
.4byte \addr
.endm
@@ -127,7 +127,7 @@
.byte \id
.endm
- .macro panse_19 id, pan
+ .macro playsewithpan id, pan
.byte 0x19
.2byte \id
.byte \pan
@@ -147,7 +147,7 @@
.byte \delay
.endm
- .macro panse_1C id, pan, delay, count
+ .macro loopsewithpan id, pan, delay, count
.byte 0x1C
.2byte \id
.byte \pan
@@ -155,7 +155,7 @@
.byte \count
.endm
- .macro panse_1D id, pan, count
+ .macro waitplaysewithpan id, pan, count
.byte 0x1D
.2byte \id
.byte \pan
@@ -167,7 +167,7 @@
.2byte \bldcnt
.endm
- .macro createtask_1F addr, argv:vararg
+ .macro createsoundtask addr, argv:vararg
.byte 0x1F
.4byte \addr
.byte (.Lcreatetask_1F_\@_2 - .Lcreatetask_1F_\@_1) / 2
@@ -180,29 +180,29 @@
.byte 0x20
.endm
- .macro jumpvareq var_num, value, addr
+ .macro jumpargeq arg_num, value, addr
.byte 0x21
- .byte \var_num
+ .byte \arg_num
.2byte \value
.4byte \addr
.endm
- .macro monbg_22 unk
+ .macro monbg_22 bank
.byte 0x22
- .byte \unk
+ .byte \bank
.endm
- .macro clearmonbg_23 unk
+ .macro clearmonbg_23 bank
.byte 0x23
- .byte \unk
+ .byte \bank
.endm
- .macro jumpunkcond addr
+ .macro jumpifcontest addr
.byte 0x24
.4byte \addr
.endm
- .macro fadetobg_25 a, b, c
+ .macro fadetobgfromset a, b, c
.byte 0x25
.byte \a
.byte \b
@@ -227,38 +227,38 @@
.byte \delay
.endm
- .macro monbgprio_28 unk
+ .macro monbgprio_28 bank
.byte 0x28
- .byte \unk
+ .byte \bank
.endm
.macro monbgprio_29
.byte 0x29
.endm
- .macro monbgprio_2A unk
+ .macro monbgprio_2A bank
.byte 0x2A
- .byte \unk
+ .byte \bank
.endm
- .macro invisible side
+ .macro invisible bank
.byte 0x2B
- .byte \side
+ .byte \bank
.endm
- .macro visible side
+ .macro visible bank
.byte 0x2C
- .byte \side
+ .byte \bank
.endm
- .macro doublebattle_2D unk
+ .macro doublebattle_2D bank
.byte 0x2D
- .byte \unk
+ .byte \bank
.endm
- .macro doublebattle_2E unk
+ .macro doublebattle_2E bank
.byte 0x2E
- .byte \unk
+ .byte \bank
.endm
.macro stopsound
diff --git a/include/main.h b/include/main.h
index ff9bb89c7..78403225e 100644
--- a/include/main.h
+++ b/include/main.h
@@ -51,6 +51,8 @@ extern bool8 gLinkVSyncDisabled;
extern const u8 gGameVersion;
extern const u8 gGameLanguage;
+extern u16 gKeyRepeatStartDelay;
+
void AgbMain(void);
void SetMainCallback2(MainCallback callback);
void InitKeys(void);
diff --git a/include/mon_markings.h b/include/mon_markings.h
new file mode 100644
index 000000000..d06264865
--- /dev/null
+++ b/include/mon_markings.h
@@ -0,0 +1,31 @@
+#ifndef POKERUBY_MON_MARKINGS_H
+#define POKERUBY_MON_MARKINGS_H
+
+struct PokemonMarkMenu
+{
+ /*0x0000*/ u16 baseTileTag;
+ /*0x0002*/ u16 basePaletteTag;
+ /*0x0004*/ u8 markings; // bit flags
+ /*0x0005*/ s8 cursorPos;
+ /*0x0006*/ bool8 markingsArray[4];
+ /*0x000A*/ u8 cursorBaseY;
+ /*0x000B*/ bool8 spriteSheetLoadRequired;
+ /*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window
+ /*0x0014*/ struct Sprite *menuMarkingSprites[4];
+ /*0x0024*/ struct Sprite *menuTextSprite;
+ /*0x0028*/ const u8 *frameTiles;
+ /*0x002C*/ const u16 *framePalette;
+ /*0x0030*/ u8 menuWindowSpriteTiles[0x1000];
+ /*0x1030*/ u8 filler1030[0x80];
+ /*0x10B0*/ u8 tileLoadState;
+}; // 10b4
+
+void sub_80F727C(struct PokemonMarkMenu *ptr);
+void sub_80F7404(void);
+void sub_80F7418(u8 markings, s16 x, s16 y);
+void sub_80F7470(void);
+bool8 sub_80F7500(void);
+struct Sprite *sub_80F7940(u16 tileTag, u16 paletteTag, const u16 *palette);
+void sub_80F7A10(u8 markings, void *dest);
+
+#endif //POKERUBY_MON_MARKINGS_H
diff --git a/include/mystery_event_menu.h b/include/mystery_event_menu.h
index 8801789d9..c1f5fbb8f 100644
--- a/include/mystery_event_menu.h
+++ b/include/mystery_event_menu.h
@@ -2,5 +2,6 @@
#define GUARD_MYSTERY_EVENT_MENU_H
void CB2_InitMysteryEventMenu(void);
+void debug_sub_815D15C(void);
#endif // GUARD_MYSTERY_EVENT_MENU_H
diff --git a/include/new_game.h b/include/new_game.h
index 5be7f6265..c90606b5a 100644
--- a/include/new_game.h
+++ b/include/new_game.h
@@ -1,6 +1,8 @@
#ifndef GUARD_NEW_GAME_H
#define GUARD_NEW_GAME_H
+extern u8 gUnknown_020297ED;
+
void write_word_to_mem(u32 var, u8 *dataPtr);
void copy_word_to_mem(u8 *copyTo, u8 *copyFrom);
void InitPlayerTrainerId(void);
diff --git a/include/overworld.h b/include/overworld.h
index 0954f1b63..dc393cc63 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -24,6 +24,8 @@ struct UCoords32
extern const struct UCoords32 gUnknown_0821664C[];
extern void (*gFieldCallback)(void);
+extern u8 gFieldLinkPlayerCount;
+extern u8 gUnknown_03004860;
// sub_8052F5C
void Overworld_ResetStateAfterFly(void);
@@ -91,7 +93,7 @@ void sub_8053D14(u16);
// GetLocationMusic
// GetCurrLocationDefaultMusic
// GetWarpDestinationMusic
-// Overworld_ResetMapMusic
+void Overworld_ResetMapMusic(void);
void Overworld_PlaySpecialMapMusic(void);
void Overworld_SetSavedMusic(u16);
void Overworld_ClearSavedMusic(void);
@@ -185,11 +187,11 @@ u16 sub_8055438(u32);
// sub_80554B8
// sub_80554BC
// sub_80554E4
-// sub_80554F8
+s32 sub_80554F8(void);
// unref_sub_8055568
-// sub_8055574
+u16 sub_8055574(void);
u16 sub_8055588(void);
-// sub_805559C
+u16 sub_805559C(void);
void sub_80555B0(int linkPlayerId, int a2, struct UnkStruct_8054FF8 *a3);
bool32 sub_8055618(struct UnkStruct_8054FF8 *);
bool32 sub_8055630(struct UnkStruct_8054FF8 *);
@@ -235,4 +237,6 @@ void CreateLinkPlayerSprite(u8);
void SpriteCB_LinkPlayer(struct Sprite *);
void sub_805465C(void);
+void CB2_InitTestMenu(void);
+
#endif // GUARD_ROM4_H
diff --git a/include/pc_screen_effect.h b/include/pc_screen_effect.h
new file mode 100644
index 000000000..d3f6d22de
--- /dev/null
+++ b/include/pc_screen_effect.h
@@ -0,0 +1,21 @@
+#ifndef GUARD_PC_SCREEN_EFFECT_H
+#define GUARD_PC_SCREEN_EFFECT_H
+
+struct PCScreenEffectStruct
+{
+ /*0x00*/ u16 tileTag;
+ /*0x02*/ u16 paletteTag;
+ /*0x04*/ u16 unk04;
+ /*0x06*/ u16 unk06;
+ /*0x08*/ u16 unk08;
+ /*0x0A*/ u16 unk0A;
+ /*0x0C*/ s16 unk0C;
+ /*0x10*/ u32 selectedPalettes;
+};
+
+void sub_80C5CD4(struct PCScreenEffectStruct *unkStruct);
+bool8 sub_80C5DCC(void);
+void sub_80C5E38(struct PCScreenEffectStruct *unkStruct);
+bool8 sub_80C5F98(void);
+
+#endif //GUARD_PC_SCREEN_EFFECT_H
diff --git a/include/pokeblock.h b/include/pokeblock.h
index 6720653a0..a606a32ad 100644
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -3,12 +3,20 @@
enum
{
- PBLOCK_CLR_BLACK,
- PBLOCK_CLR_RED,
+ PBLOCK_CLR_RED = 1,
PBLOCK_CLR_BLUE,
PBLOCK_CLR_PINK,
PBLOCK_CLR_GREEN,
- PBLOCK_CLR_YELLOW
+ PBLOCK_CLR_YELLOW,
+ PBLOCK_CLR_PURPLE,
+ PBLOCK_CLR_INDIGO,
+ PBLOCK_CLR_BROWN,
+ PBLOCK_CLR_LITEBLUE,
+ PBLOCK_CLR_OLIVE,
+ PBLOCK_CLR_GRAY,
+ PBLOCK_CLR_BLACK,
+ PBLOCK_CLR_WHITE,
+ PBLOCK_CLR_GOLD,
};
enum
@@ -34,6 +42,7 @@ s16 PokeblockGetGain(u8, const struct Pokeblock *);
u8 sub_810CB68(u8, u8*);
void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest);
void CB2_PreparePokeblockFeedScene(void);
+bool8 sub_810CA34(const struct Pokeblock *);
#include "main.h"
diff --git a/include/pokemon.h b/include/pokemon.h
index 6e3e15404..169045c0c 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -428,10 +428,10 @@ struct BattleMove
struct PokemonStorage
{
- /*0x00*/ u8 currentBox;
- /*0x01*/ struct BoxPokemon boxes[14][30];
- u8 boxNames[14][9];
- u8 unkArray[14];
+ /*0x0000*/ u8 currentBox;
+ /*0x0004*/ struct BoxPokemon boxes[14][30];
+ /*0x8344*/ u8 boxNames[14][9];
+ /*0x83c2*/ u8 wallpaper[14];
};
struct SpindaSpot
@@ -522,7 +522,7 @@ void sub_803ADE8(struct Pokemon *mon, struct UnknownPokemonStruct *src);
void sub_803AF78(struct Pokemon *mon, struct UnknownPokemonStruct *dest);
u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
void CalculateMonStats(struct Pokemon *mon);
-void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest);
+void ExpandBoxMon(const struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromMonExp(struct Pokemon *mon);
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
u16 GiveMoveToMon(struct Pokemon *mon, u16 move);
@@ -627,9 +627,8 @@ void RandomlyGivePartyPokerus(struct Pokemon *party);
void PartySpreadPokerus(struct Pokemon *party);
struct Sprite *sub_80F7920(u16, u16, const u16 *);
+void BoxMonRestorePP(struct BoxPokemon *);
bool8 HealStatusConditions(struct Pokemon *mon, u32 unused, u32 healMask, u8 battleId);
-
-
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 258735502..ad0e4b56b 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -1,6 +1,9 @@
#ifndef GUARD_POKEMON_ICON_H
#define GUARD_POKEMON_ICON_H
+extern const u8 * const gMonIconTable[];
+extern const u8 gMonIconPaletteIndices[];
+
u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality);
u8 UpdateMonIconFrame(struct Sprite *sprite);
u8 sub_809D3A4(u16 arg0, void (*)(struct Sprite *), int, u8 arg3, u32 arg4);
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 9fe3436ef..5319b7a2d 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -1,8 +1,302 @@
#ifndef GUARD_POKEMON_STORAGE_SYSTEM_H
#define GUARD_POKEMON_STORAGE_SYSTEM_H
+#include "pc_screen_effect.h"
+#include "mon_markings.h"
+
+enum {
+ PC_TEXT_EXIT_BOX,
+ PC_TEXT_WHAT_YOU_DO,
+ PC_TEXT_PICK_A_THEME,
+ PC_TEXT_PICK_A_WALLPAPER,
+ PC_TEXT_IS_SELECTED,
+ PC_TEXT_JUMP_TO_WHICH_BOX,
+ PC_TEXT_DEPOSIT_IN_WHICH_BOX,
+ PC_TEXT_WAS_DEPOSITED,
+ PC_TEXT_BOX_IS_FULL,
+ PC_TEXT_RELEASE_POKE,
+ PC_TEXT_WAS_RELEASED,
+ PC_TEXT_BYE_BYE,
+ PC_TEXT_MARK_POKE,
+ PC_TEXT_LAST_POKE,
+ PC_TEXT_PARTY_FULL,
+ PC_TEXT_HOLDING_POKE,
+ PC_TEXT_WHICH_ONE_WILL_TAKE,
+ PC_TEXT_CANT_RELEASE_EGG,
+ PC_TEXT_CONTINUE_BOX,
+ PC_TEXT_CAME_BACK,
+ PC_TEXT_WORRIED,
+ PC_TEXT_SURPRISE,
+ PC_TEXT_PLEASE_REMOVE_MAIL
+};
+
+enum {
+ PC_TEXT_FMT_NORMAL,
+ PC_TEXT_FMT_MON_NAME,
+ PC_TEXT_FMT_UNK_02,
+ PC_TEXT_FMT_UNK_03,
+ PC_TEXT_FMT_MON_NAME_2,
+ PC_TEXT_FMT_UNK_05,
+ PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK
+};
+
+struct StorageAction {
+ const u8 *text;
+ u8 format;
+};
+
+struct PSS_MenuStringPtrs {
+ const u8 *text;
+ const u8 *desc;
+};
+
+struct UnkStruct_2000028 {
+ void *unk_00;
+ void *unk_04;
+ u16 unk_08;
+ u16 unk_0a;
+ void (*unk_0c)(struct UnkStruct_2000028 *data);
+};
+
+struct UnkStruct_2000020 {
+ struct UnkStruct_2000028 *unk_00;
+ u8 unk_04;
+ u8 unk_05;
+};
+
+struct UnkPSSStruct_2002370 {
+ struct Sprite *unk_0000;
+ struct Sprite *unk_0004[4];
+ u32 unk_0014[3];
+ struct Sprite *unk_0020[2];
+ u8 filler_0028[0x214];
+ u8 curBox;
+ u8 unk_023d;
+ u8 unk_023e;
+ u16 unk_0240;
+ u16 unk_0242;
+}; // 0244
+
+struct PokemonStorageSystemData {
+ void (*unk_0000)(void);
+ u8 unk_0004;
+ u8 unk_0005;
+ u8 unk_0006;
+ u8 unk_0007;
+ u16 unk_0008;
+ u16 unk_000a;
+ struct PCScreenEffectStruct unk_000c;
+ struct UnkStruct_2000020 unk_0020;
+ struct UnkStruct_2000028 unk_0028[8];
+ u16 unk_00a8[0x400];
+ u16 unk_08a8;
+ u16 unk_08aa;
+ u8 unk_08ac;
+ u8 unk_08ad;
+ u8 unk_08ae;
+ u8 unk_08af;
+ u8 unk_08b0;
+ bool8 unk_08b1;
+ s16 unk_08b2;
+ u16 unk_08b4;
+ u16 unk_08b6;
+ u16 unk_08b8;
+ bool8 unk_08ba;
+ u8 unk_08bb;
+ u16 unk_08bc;
+ u16 unk_08be;
+ u16 unk_08c0;
+ u16 unk_08c2;
+ u16 unk_08c4;
+ u16 unk_08c6;
+ u16 unk_08c8;
+ u8 unk_08ca[0x400];
+ u8 unk_0cca;
+ u16 unk_0ccc[0x10];
+ u16 unk_0cec;
+ u16 unk_0cee;
+ struct Sprite *unk_0cf0[2];
+ struct Sprite *unk_0cf8[2];
+ struct Sprite *unk_0d00[2];
+ u32 unk_0d08;
+ u8 filler_0d0c[0x50];
+ u16 unk_0d5c;
+ s16 unk_0d5e;
+ s16 unk_0d60;
+ u16 unk_0d62[360];
+ u8 unk_1032;
+ struct Sprite *unk_1034;
+ struct Sprite *unk_1038[6]; // party
+ struct Sprite *unk_1050[30]; // box
+ struct Sprite **unk_10c8;
+ struct Sprite **unk_10cc;
+ u16 unk_10d0[40];
+ u16 unk_1120[40];
+ u8 unk_1170;
+ u8 unk_1171;
+ u16 unk_1172;
+ s16 unk_1174;
+ s16 unk_1176;
+ u16 unk_1178;
+ u8 unk_117a;
+ s8 unk_117b;
+ u8 unk_117c;
+ u8 unk_117d;
+ u8 filler_117e[0x42];
+ struct Sprite *unk_11c0;
+ struct Sprite *unk_11c4;
+ s32 unk_11c8;
+ s32 unk_11cc;
+ s32 unk_11d0;
+ s32 unk_11d4;
+ s16 unk_11d8;
+ s16 unk_11da;
+ u16 unk_11dc;
+ s8 unk_11de;
+ s8 unk_11df;
+ u8 unk_11e0;
+ u8 unk_11e1;
+ u8 unk_11e2;
+ u8 unk_11e3;
+ u8 filler_11e4[4];
+ const u8 *unk_11e8;
+ u32 unk_11ec;
+ u16 unk_11f0;
+ u16 unk_11f2;
+ u8 filler_11f4[2];
+ u8 unk_11f6;
+ u8 unk_11f7;
+ u8 unk_11f8;
+ u8 unk_11f9;
+ u8 unk_11fa[0x15];
+ u8 unk_120f[0x25];
+ u8 unk_1234[0x25];
+ u8 unk_1259[0x21];
+ u8 unk_127a[0x2a];
+ bool8 (*unk_12a4)(void);
+ u8 unk_12a8;
+ u8 unk_12a9;
+ struct Sprite *unk_12ac;
+ struct Sprite *unk_12b0[2];
+ u16 *unk_12b8;
+ struct PokemonMarkMenu unk_12bc;
+ struct UnkPSSStruct_2002370 unk_2370;
+ struct Pokemon unk_25b4;
+ struct Pokemon unk_2618;
+ u8 unk_267c;
+ u8 unk_267d;
+ u8 unk_267e;
+ u8 unk_267f;
+ s8 unk_2680;
+ s8 unk_2681;
+ s8 unk_2682;
+ s8 unk_2683;
+ u16 unk_2684;
+ u16 unk_2686[3];
+ u8 unk_268c;
+ u8 unk_268d;
+ u8 unk_268e;
+ union {
+ struct Pokemon *pokemon;
+ struct BoxPokemon *box;
+ } unk_2690;
+ u8 unk_2694[18];
+ u8 unk_26a6[62];
+ u8 unk_26e4[0x16];
+ u16 unk_26fa;
+ u16 *unk_26fc;
+ struct Sprite *unk_2700;
+ u16 unk_2704[0x10];
+ u8 filler_2724[0x60];
+ u8 unk_2784[0x800];
+ u8 filler_2f84[0x1800];
+ u8 unk_4784[0x800];
+};
+
+extern u16 gUnknown_02039760[0x600];
+extern struct UnkPSSStruct_2002370 *gUnknown_02038478;
+extern struct PokemonStorageSystemData *const gPokemonStorageSystemPtr;
+extern u8 *const gUnknown_083B6DB8;
+
+u8 StorageSystemGetPartySize(void);
+s16 GetIndexOfFirstEmptySpaceInBoxN(u8 boxId);
+u8 CountAlivePartyMonsExceptOne(u8 toSkip);
+u8 CountPokemonInBoxN(u8 boxId);
+void sub_8096264(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3);
+void sub_809634C(u8 curBox);
+u8 sub_8096368(void);
+void sub_809635C(void);
+void sub_8096310(void);
+void sub_80961A8(void);
+void task_intro_29(u8 whichMenu);
void ResetPokemonStorageSystem(void);
-void BoxMonRestorePP(struct BoxPokemon *);
-void party_compaction(void);
+void ResetPSSMonIconSprites(void);
+void SpawnBoxIconSprites(u8 boxId);
+u8 get_preferred_box(void);
+void sub_8098BF0(void);
+void sub_8098D20(u8 monId);
+bool8 sub_80990AC(void);
+void sub_8099200(bool8 a0);
+void sub_8099310(void);
+bool8 sub_8099374(void);
+void sub_8099480(void);
+void sub_80994A8(s16 a0);
+void sub_8099520(u8 a0);
+void sub_809954C(void);
+void sub_8099584(u8 a0, u8 a1);
+void sub_809960C(u8 a0, u8 a1);
+void sub_80996B0(u8 a0, u8 a1);
+bool8 sub_809971C(void);
+void sub_809981C(u8 mode, u8 idx);
+bool8 sub_80998D8(void);
+void sub_8099920(void);
+void sub_8099958(void);
+bool8 sub_8099990(void);
+struct Sprite *sub_809A9A0(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority);
+void sub_8099BF8(u8 a0);
+void sub_8099C70(u8 whichBox);
+bool8 sub_8099D34(void);
+void sub_8099DCC(u8 a0);
+bool8 sub_8099E08(void);
+void sub_809A860(bool8 a0);
+void sub_809AA24(void);
+void sub_809AA98(void);
+bool8 sub_809AC00(void);
+void sub_809B0C0(u8 a0);
+void sub_809B0D4(void);
+void sub_809B0E0(void);
+u8 sub_809B0F4(void);
+void sub_809B068(void);
+void sub_809B100(u8 a0);
+bool8 sub_809B130(void);
+void sub_809B440(void);
+bool8 sub_809B62C(u8);
+void sub_809B6BC(void);
+void sub_809B6DC(void);
+bool8 sub_809B734(void);
+void sub_809B760(void);
+void sub_809B7AC(void);
+void sub_809B7D4(void);
+s8 sub_809B960(void);
+void sub_809BB90(void);
+void sub_809BBC0(void);
+void sub_809BC18(void);
+void sub_809BD14(void);
+s16 party_compaction(void);
+void sub_809BDD8(u8 markings);
+bool8 sub_809BE80(void);
+bool8 sub_809BEBC(void);
+bool8 sub_809BF20(void);
+bool8 sub_809BF48(void);
+u8 sub_809CA40(void);
+void sub_809CDCC(void);
+void sub_809CDEC(u8 a0);
+void sub_809CE84(void);
+s16 sub_809CF30(void);
+void sub_809CFDC(struct UnkStruct_2000020 *a0, struct UnkStruct_2000028 *a1, u8 a2);
+void sub_809CFF0(void);
+void sub_809D034(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height);
+void sub_809D104(void *dest, u16 dLeft, u16 dTop, const void *src, u16 sLeft, u16 sTop, u16 width, u16 height);
+void sub_809D16C(void *dest, u16 dLeft, u16 dTop, u16 width, u16 height);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/region_map.h b/include/region_map.h
index 254307052..e7a357fe2 100644
--- a/include/region_map.h
+++ b/include/region_map.h
@@ -68,5 +68,6 @@ void CreateRegionMapPlayerIcon(u16, u16);
const u8 *GetMapSectionName(u8 *dest, u16 mapSectionId, u16 length);
const u8 *CopyMapName(u8 *dest, u16 b);
const u8 *CopyLocationName(u8 *dest, u16 b);
+void CB2_InitFlyRegionMap(void);
#endif // GUARD_REGION_MAP_H
diff --git a/include/reset_rtc_screen.h b/include/reset_rtc_screen.h
index 5807dec99..2de95534a 100644
--- a/include/reset_rtc_screen.h
+++ b/include/reset_rtc_screen.h
@@ -2,5 +2,6 @@
#define GUARD_RESET_RTC_SCREEN_H
void CB2_InitResetRtcScreen(void);
+void debug_sub_806F8F8(void);
#endif // GUARD_RESET_RTC_SCREEN_H
diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h
index 21ec88a90..1910b7cb2 100644
--- a/include/rom_8077ABC.h
+++ b/include/rom_8077ABC.h
@@ -12,12 +12,12 @@ struct Struct_sub_8078914 {
u8 GetBankPosition(u8, u8);
u8 sub_8077E44(u8 slot, u16 species, u8 a3);
-u8 GetAnimBankSpriteId(u8 side);
+u8 GetAnimBankSpriteId(u8 bank);
void StoreSpriteCallbackInData(struct Sprite *sprite, void(*callback)(struct Sprite *));
void sub_8078314(struct Sprite *sprite);
-void sub_8078364(struct Sprite *sprite);
-void sub_8078458(struct Sprite *sprite);
-void sub_80784A8(struct Sprite *sprite);
+void TranslateSpriteOverDuration(struct Sprite *sprite);
+void TranslateMonBGUntil(struct Sprite *sprite);
+void TranslateMonBGSubPixelUntil(struct Sprite *sprite);
u8 GetBankSide(u8);
u8 GetBankSide(u8);
u8 GetBankSide(u8 side);
@@ -34,11 +34,10 @@ u8 IsDoubleBattle(void);
bool8 IsDoubleBattle(void);
void sub_8078914();
u8 sub_80789BC();
-void sub_8078A5C(struct Sprite *sprite);
-void sub_8078A5C(struct Sprite *sprite);
-void obj_translate_based_on_private_1_2_3_4(struct Sprite *sprite);
-bool8 sub_8078B5C(struct Sprite *sprite);
-void sub_8078BB8(struct Sprite *sprite);
+void InitSpriteDataForLinearTranslation(struct Sprite *sprite);
+void InitAnimSpriteTranslationDeltas(struct Sprite *sprite);
+bool8 TranslateAnimSpriteByDeltas(struct Sprite *sprite);
+void TranslateAnimSpriteByDeltasUntil(struct Sprite *sprite);
void sub_8078D44(struct Sprite *sprite);
void obj_id_set_rotscale(u8 sprite, s16, s16, u16);
bool8 sub_8078E38();
@@ -48,8 +47,8 @@ void sub_8078F9C(u8 sprite);
void sub_8079518(struct Sprite *sprite);
void sub_8079534(struct Sprite *sprite);
void sub_80796F8(u8 task);
-void sub_80797EC(struct Task *task);
-void sub_8079814(u8 taskId);
+void AnimTask_BlendMonInAndOutSetup(struct Task *task);
+void AnimTask_BlendMonInAndOutStep(u8 taskId);
void sub_8079A64(u8 sprite);
u16 sub_8079B10(u8 sprite);
void sub_8079BF4(s16 *bottom, s16 *top, const void *ptr);
@@ -65,12 +64,12 @@ void sub_807A850(struct Task *task, u8 taskId);
void sub_807A8D4(struct Sprite *sprite);
void sub_807A960(struct Sprite *sprite);
void sub_8078A34(struct Sprite *sprite);
-void sub_80787B0(struct Sprite *sprite, u8);
+void InitAnimSpritePos(struct Sprite *sprite, u8);
void sub_8078764(struct Sprite *sprite, u8);
-void sub_8078B34(struct Sprite *sprite);
+void StartTranslateAnimSpriteByDeltas(struct Sprite *sprite);
void sub_8078D60(struct Sprite *sprite);
-void sub_80786EC(struct Sprite *sprite);
-void sub_80782D8(struct Sprite *sprite);
+void InitAnimSpriteTranslationOverDuration(struct Sprite *sprite);
+void WaitAnimForDuration(struct Sprite *sprite);
void sub_8078CC0(struct Sprite *sprite);
void sub_8078600(struct Sprite *sprite);
void sub_8078504(struct Sprite *sprite);
@@ -83,10 +82,10 @@ void sub_8078C00(struct Sprite *sprite);
void sub_8078114(struct Sprite *sprite);
void sub_8078174(struct Sprite *sprite);
void sub_80793C4(struct Sprite *sprite);
-void sub_807A3FC(u8 slot, u8 a2, s16 *a3, s16 *a4);
+void SetAverageBattlerPositions(u8 slot, u8 a2, s16 *a3, s16 *a4);
u8 sub_8079ED4(u8 slot);
-int sub_807A100(u8 slot, u8 a2);
-u16 sub_80790F0(s16 a, s16 b);
+s16 sub_807A100(u8 slot, u8 a2);
+u16 ArcTan2Neg(s16 a, s16 b);
void sub_8078FDC(struct Sprite *sprite, bool8 a2, s16 xScale, s16 yScale, u16 rotation);
void sub_807867C(struct Sprite *sprite, s16 a2);
u8 sub_8077EE4(u8 slot, u8 a2);
@@ -99,9 +98,13 @@ void sub_80798F4(struct Task *task, u8 a2, const void *a3);
bool8 sub_807992C(struct Task *task);
u8 sub_8077FC0(u8 slot);
void move_anim_8074EE0(struct Sprite *sprite);
-bool8 sub_8078718(struct Sprite *sprite);
+bool8 TranslateAnimSpriteLinearAndSine(struct Sprite *sprite);
bool8 sub_8078CE8(struct Sprite *sprite);
void oamt_add_pos2_onto_pos1(struct Sprite *sprite);
void sub_8078BD4(struct Sprite *sprite);
+void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite);
+void sub_80789D4(bool8 a1);
+void sub_8079AB8(u8 sprite, u8 sprite2);
+u8 sub_807A4A0(int bank, u8 sprite, int species);
#endif // GUARD_ROM_8077ABC_H
diff --git a/include/rtc.h b/include/rtc.h
index fdc5ad709..e117cf753 100644
--- a/include/rtc.h
+++ b/include/rtc.h
@@ -44,5 +44,6 @@ void RtcInitLocalTimeOffset(s32 hour, s32 minute);
void RtcCalcLocalTimeOffset(s32 days, s32 hours, s32 minutes, s32 seconds);
void CalcTimeDifference(struct Time *result, struct Time *t1, struct Time *t2);
u32 RtcGetMinuteCount(void);
+void debug_sub_8009894(u8 *);
#endif // GUARD_RTC_UTIL_H
diff --git a/include/shop.h b/include/shop.h
index 80602e26c..347d46d3c 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -28,7 +28,7 @@ enum
struct MartInfo
{
/* 0x0 */ void (* callback) (void);
- /* 0x4 */ u16 *itemList;
+ /* 0x4 */ const u16 *itemList;
/* 0x8 */ u8 itemCount; // how many unique items are there for sale?
/* 0x9 */ u8 cursor; // this shows the on-screen true index of the cursor and not the current item selected.
/* 0xA */ u8 numChoices; // how many options does the mart have? can be either 2 or 1 (BUY/SELL vs BUY)
diff --git a/include/slot_machine.h b/include/slot_machine.h
index f886d9239..456f2bed6 100644
--- a/include/slot_machine.h
+++ b/include/slot_machine.h
@@ -1,79 +1,9 @@
#ifndef GUARD_SLOT_MACHINE_H
#define GUARD_SLOT_MACHINE_H
-enum {
- SLOT_MACHINE_TAG_7_RED,
- SLOT_MACHINE_TAG_7_BLUE,
- SLOT_MACHINE_TAG_AZURILL,
- SLOT_MACHINE_TAG_LOTAD,
- SLOT_MACHINE_TAG_CHERRY,
- SLOT_MACHINE_TAG_POWER,
- SLOT_MACHINE_TAG_REPLAY
-};
-
-enum {
- SLOT_MACHINE_MATCHED_1CHERRY,
- SLOT_MACHINE_MATCHED_2CHERRY,
- SLOT_MACHINE_MATCHED_REPLAY,
- SLOT_MACHINE_MATCHED_LOTAD,
- SLOT_MACHINE_MATCHED_AZURILL,
- SLOT_MACHINE_MATCHED_POWER,
- SLOT_MACHINE_MATCHED_777_MIXED,
- SLOT_MACHINE_MATCHED_777_RED,
- SLOT_MACHINE_MATCHED_777_BLUE,
- SLOT_MACHINE_MATCHED_NONE
-};
-
-struct SlotMachineEwramStruct {
- /*0x00*/ u8 state;
- /*0x01*/ u8 unk01;
- /*0x02*/ u8 pikaPower;
- /*0x03*/ u8 unk03;
- /*0x04*/ u8 unk04;
- /*0x05*/ u8 unk05;
- /*0x06*/ u8 unk06;
- /*0x07*/ u8 unk07;
- /*0x08*/ u16 matchedSymbols;
- /*0x0A*/ u8 unk0A;
- /*0x0B*/ u8 unk0B;
- /*0x0C*/ s16 coins;
- /*0x0E*/ s16 payout;
- /*0x10*/ s16 unk10;
- /*0x12*/ s16 bet;
- /*0x14*/ s16 unk14;
- /*0x16*/ s16 unk16;
- /*0x18*/ s16 unk18;
- /*0x1A*/ s16 unk1A;
- /*0x1C*/ s16 unk1C[3];
- /*0x22*/ u16 unk22[3];
- /*0x28*/ s16 reelPositions[3];
- /*0x2E*/ s16 unk2E[3];
- /*0x34*/ s16 unk34[3];
- /*0x3A*/ u8 reelTasks[3];
- /*0x3D*/ u8 unk3D;
- /*0x3E*/ u8 unk3E;
- /*0x3F*/ u8 unk3F;
- /*0x40*/ u8 unk40;
- /*0x41*/ u8 unk41;
- /*0x42*/ u8 unk42;
- /*0x43*/ u8 unk43;
- /*0x44*/ u8 unk44[5];
- /*0x49*/ u8 unk49[2];
- /*0x49*/ u8 unk4B[3];
- /*0x4E*/ u8 unk4E[2];
- /*0x50*/ u8 unk50[2];
- /*0x52*/ u8 unk52[2];
- /*0x54*/ u8 unk54[4];
- /*0x58*/ u16 win0h;
- /*0x5a*/ u16 win0v;
- /*0x5c*/ u16 winIn;
- /*0x5e*/ u16 winOut;
- /*0x60*/ u16 backupMapMusic;
- /*0x64*/ MainCallback prevMainCb;
-};
-
void PlaySlotMachine(u8 arg0, MainCallback cb);
void sub_8104DA4(void);
u8 sub_8105BB4(u8 templateIdx, u8 cbAndCoordsIdx, s16 a2);
+void debug_sub_811609C(u8, void (*)(void));
#endif // GUARD_SLOT_MACHINE_H
diff --git a/include/sprite.h b/include/sprite.h
index b72c09989..3ad418356 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -235,6 +235,7 @@ extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
extern s16 gSpriteCoordOffsetX;
extern s16 gSpriteCoordOffsetY;
extern u8 gReservedSpritePaletteCount;
+extern u16 gReservedSpriteTileCount;
extern u8 gOamLimit;
diff --git a/include/start_menu.h b/include/start_menu.h
index d3f77dc99..5e513b9dc 100644
--- a/include/start_menu.h
+++ b/include/start_menu.h
@@ -1,6 +1,8 @@
#ifndef GUARD_STARTER_CHOOSE_H
#define GUARD_STARTER_CHOOSE_H
+extern u8 (*gMenuCallback)(void);
+
//Public functions
void CreateStartMenuTask(void (*func)(u8));
void sub_80712B4(u8 taskId);
diff --git a/include/strings.h b/include/strings.h
index fe9cfc6ba..91c5c5344 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -164,7 +164,7 @@ extern const u8 gOtherText_None[];
extern const u8 gOtherText_ThreeQuestions2[];
-extern const u8 gOtherText_FiveQuestionsAndSlash[];
+extern const u8 gOtherText_FiveQuestions[];
extern const u8 gOtherText_OneDash[];
extern const u8 gOtherText_TwoDashes[];
diff --git a/include/text.h b/include/text.h
index f0d039d45..71afd1d00 100644
--- a/include/text.h
+++ b/include/text.h
@@ -253,4 +253,6 @@ void Text_StripExtCtrlCodes(u8 *str);
s32 StringCompareWithoutExtCtrlCodes(const u8 *str1, const u8 *str2);
u8 sub_8004FD0(struct Window *win, u8 *dest, const u8 *src, u16 tileDataStartOffset, u8 left, u16 top, u8 width, u32 a8);
+extern const u16 gUnknownPalette_81E6692[];
+
#endif // GUARD_TEXT_H
diff --git a/include/trade.h b/include/trade.h
index 46f58a802..d6dee0bd9 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -51,6 +51,7 @@ extern const u32 gUnknown_0820CA98[];
extern const u16 gUnknown_0820F798[];
void sub_8047CD8(void);
+void sub_804B790(void);
void sub_804E174(void);
extern const u8 gOtherText_MaleSymbol3[2];
extern const u8 gOtherText_FemaleSymbol3[2];
diff --git a/include/trainer_card.h b/include/trainer_card.h
index 7ea1d9fc0..28cabbd09 100644
--- a/include/trainer_card.h
+++ b/include/trainer_card.h
@@ -32,6 +32,8 @@ void TrainerCard_ShowPlayerCard(void (*)(void));
void TrainerCard_ShowLinkCard(u8, void (*)(void));
void TrainerCard_GenerateCardForPlayer(struct TrainerCard *);
u8 sub_80934C4(u8 id);
+void debug_sub_80A0710(void (*)(void));
+void debug_sub_80A073C(void (*)(void));
extern struct TrainerCard gTrainerCards[4];
diff --git a/ld_script.txt b/ld_script.txt
index c2742b1ae..c421aa463 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -38,15 +38,15 @@ SECTIONS {
ALIGN(4)
{
src/crt0.o(.text);
- src/engine/main.o(.text);
- src/engine/sprite.o(.text);
- src/engine/text.o(.text);
- src/engine/string_util.o(.text);
- src/engine/link.o(.text);
- src/engine/rtc.o(.text);
- src/engine/main_menu.o(.text);
+ src/main.o(.text);
+ src/sprite.o(.text);
+ src/text.o(.text);
+ src/string_util.o(.text);
+ src/link.o(.text);
+ src/rtc.o(.text);
+ src/main_menu.o(.text);
src/rom3.o(.text);
- src/engine/decompress.o(.text);
+ src/decompress.o(.text);
asm/battle_1.o(.text);
src/rom_800D42C.o(.text);
asm/battle_1.o(.text_800DC24);
@@ -58,120 +58,131 @@ SECTIONS {
src/battle/battle_controller_opponent.o(.text);
asm/battle_9.o(.text);
src/battle/battle_controller_linkopponent.o(.text);
- src/pokemon/pokemon_1.o(.text);
+ src/pokemon_1.o(.text);
src/battle/calculate_base_damage.o(.text);
- src/pokemon/pokemon_2.o(.text);
- src/pokemon/pokemon_item_effect.o(.text);
- src/pokemon/pokemon_3.o(.text);
+ src/pokemon_2.o(.text);
+ src/pokemon_item_effect.o(.text);
+ src/pokemon_3.o(.text);
src/de_rom_8040FE0.o(.text);
- src/engine/trig.o(.text);
- src/engine/random.o(.text);
- src/engine/util.o(.text);
- src/engine/blend_palette.o(.text);
- src/field/daycare.o(.text);
- src/scene/egg_hatch.o(.text);
+ src/trig.o(.text);
+ src/random.o(.text);
+ src/util.o(.text);
+ src/blend_palette.o(.text);
+ src/daycare.o(.text);
+ src/egg_hatch.o(.text);
src/battle/battle_interface.o(.text);
src/battle/smokescreen.o(.text);
src/battle/pokeball.o(.text);
- src/engine/load_save.o(.text);
- src/engine/trade.o(.text);
- src/scene/berry_blender.o(.text);
- src/engine/play_time.o(.text);
- src/scene/new_game.o(.text);
- src/field/overworld.o(.text);
- src/field/fieldmap.o(.text);
- src/field/metatile_behavior.o(.text);
- src/field/field_camera.o(.text);
- src/field/field_door.o(.text);
- src/field/field_player_avatar.o(.text);
- src/field/field_map_obj.o(.text);
- src/field/field_ground_effect.o(.text);
- src/field/field_map_obj_helpers.o(.text);
- src/field/field_message_box.o(.text);
- src/field/map_obj_lock.o(.text);
- src/engine/text_window.o(.text);
- src/engine/script.o(.text);
- src/field/scrcmd.o(.text);
- src/field/field_control_avatar.o(.text);
- src/field/event_data.o(.text);
- src/field/coord_event_weather.o(.text);
- src/field/field_tasks.o(.text);
- src/engine/clock.o(.text);
- src/engine/reset_rtc_screen.o(.text);
- src/field/party_menu.o(.text);
- src/field/start_menu.o(.text);
- src/engine/menu.o(.text);
- src/engine/tileset_anim.o(.text);
- src/engine/palette.o(.text);
- src/engine/sound.o(.text);
+ src/load_save.o(.text);
+ src/trade.o(.text);
+ src/berry_blender.o(.text);
+ src/play_time.o(.text);
+ src/new_game.o(.text);
+ src/overworld.o(.text);
+ src/fieldmap.o(.text);
+ src/metatile_behavior.o(.text);
+ src/field_camera.o(.text);
+ src/field_door.o(.text);
+ src/field_player_avatar.o(.text);
+ src/event_object_movement.o(.text);
+ src/field_message_box.o(.text);
+ src/map_obj_lock.o(.text);
+ src/text_window.o(.text);
+ src/script.o(.text);
+ src/scrcmd.o(.text);
+ src/field_control_avatar.o(.text);
+ src/event_data.o(.text);
+ src/coord_event_weather.o(.text);
+ src/field_tasks.o(.text);
+ src/clock.o(.text);
+ src/reset_rtc_screen.o(.text);
+ src/party_menu.o(.text);
+ src/start_menu.o(.text);
+ src/debug/start_menu_debug.o(.text);
+ src/menu.o(.text);
+ src/tileset_anim.o(.text);
+ src/palette.o(.text);
+ src/sound.o(.text);
src/battle/battle_anim.o(.text);
src/rom_8077ABC.o(.text);
- src/engine/task.o(.text);
+ src/task.o(.text);
src/battle/reshow_battle_screen.o(.text);
src/battle/battle_anim_807B69C.o(.text);
- src/scene/title_screen.o(.text);
- src/field/field_weather.o(.text);
- src/field/field_weather_effects.o(.text);
- src/field/field_fadetransition.o(.text);
- src/field/field_screen_effect.o(.text);
+ src/title_screen.o(.text);
+ src/field_weather.o(.text);
+ src/field_weather_effects.o(.text);
+ src/field_fadetransition.o(.text);
+ src/field_screen_effect.o(.text);
src/battle/battle_setup.o(.text);
- src/engine/cable_club.o(.text);
+ src/cable_club.o(.text);
+ src/debug/tomomichi_debug_menu.o(.text);
+ asm/tomomichi_debug_menu.o(.text);
+ src/debug/nohara_debug_menu.o(.text);
+ asm/nohara_debug_menu.o(.text);
src/debug/mori_debug_menu.o(.text);
- src/field/trainer_see.o(.text);
- src/field/wild_encounter.o(.text);
- src/field/field_effect.o(.text);
+ asm/taya_debug_window.o(.text);
+ src/debug/taya_debug_window.o(.text);
+ src/trainer_see.o(.text);
+ src/wild_encounter.o(.text);
+ src/field_effect.o(.text);
src/scanline_effect.o(.text);
- src/pokemon/pokemon_menu.o(.text);
- src/engine/option_menu.o(.text);
- src/pokemon/pokedex.o(.text);
- src/engine/trainer_card.o(.text);
- src/engine/save_menu_util.o(.text);
+ src/pokemon_menu.o(.text);
+ src/option_menu.o(.text);
+ src/pokedex.o(.text);
+ src/trainer_card.o(.text);
+ src/save_menu_util.o(.text);
src/battle/battle_party_menu.o(.text);
- asm/unk_text_8095904.o(.text);
+ src/unk_text_8095904.o(.text);
+ src/pokemon_storage_system.o(.text);
+ src/pokemon_storage_system_2.o(.text);
+ src/pokemon_storage_system_3.o(.text);
+ src/pokemon_storage_system_4.o(.text);
+ src/pokemon_storage_system_5.o(.text);
asm/pokemon_storage_system.o(.text);
- src/pokemon/pokemon_storage_system.o(.text);
- asm/pokemon_storage_system.o(.text_8098A38);
- src/pokemon/pokemon_icon.o(.text);
- src/pokemon/pokemon_summary_screen.o(.text);
- src/field/script_movement.o(.text);
- src/field/fldeff_cut.o(.text);
- src/pokemon/mail_data.o(.text);
- src/field/map_name_popup.o(.text);
- src/field/item_menu.o(.text);
+ src/pokemon_icon.o(.text);
+ src/pokemon_summary_screen.o(.text);
+ src/script_movement.o(.text);
+ src/fldeff_cut.o(.text);
+ src/debug/kagaya_debug_menu.o(.text);
+ src/mail_data.o(.text);
+ src/map_name_popup.o(.text);
+ src/item_menu.o(.text);
src/battle/battle_anim_80A7E7C.o(.text);
- src/field/item.o(.text);
+ src/item.o(.text);
src/debug/matsuda_debug_menu.o(.text);
src/debug/crash.o(.text);
src/contest.o(.text);
- src/field/shop.o(.text);
- src/field/fldeff_escalator.o(.text);
- src/field/berry.o(.text);
- src/field/script_menu.o(.text);
- src/engine/naming_screen.o(.text);
- src/field/money.o(.text);
+ src/shop.o(.text);
+ src/fldeff_escalator.o(.text);
+ src/berry.o(.text);
+ src/debug/watanabe_debug_menu.o(.text);
+ asm/watanabe_debug_menu.o(.text);
+ src/script_menu.o(.text);
+ src/naming_screen.o(.text);
+ src/money.o(.text);
asm/contest_effect.o(.text);
- src/engine/record_mixing.o(.text);
+ src/record_mixing.o(.text);
src/debug/sound_check_menu.o(.text);
- src/field/secret_base.o(.text);
- src/field/tv.o(.text);
+ src/secret_base.o(.text);
+ src/tv.o(.text);
src/battle/contest_link_80C2020.o(.text);
asm/contest_link_80C2020.o(.text);
src/script_pokemon_util_80C4BF0.o(.text);
- src/field/field_poison.o(.text);
- src/pokemon/pokemon_size_record.o(.text);
- src/field/pc_screen_effect.o(.text);
+ src/field_poison.o(.text);
+ src/pokemon_size_record.o(.text);
+ src/pc_screen_effect.o(.text);
asm/pc_screen_effect.o(.text);
- src/field/fldeff_secretpower.o(.text);
- src/field/fldeff_secret_base_pc.o(.text);
- src/field/fldeff_decoration.o(.text);
- src/field/fldeff_poison.o(.text);
- src/field/fldeff_berrytree.o(.text);
- src/field/fldeff_recordmixing.o(.text);
- src/field/field_special_scene.o(.text);
- src/field/rotating_gate.o(.text);
- src/field/safari_zone.o(.text);
+ src/fldeff_secretpower.o(.text);
+ src/fldeff_secret_base_pc.o(.text);
+ src/fldeff_decoration.o(.text);
+ src/fldeff_poison.o(.text);
+ src/fldeff_berrytree.o(.text);
+ src/fldeff_recordmixing.o(.text);
+ src/field_special_scene.o(.text);
+ src/rotating_gate.o(.text);
+ src/safari_zone.o(.text);
src/battle/contest_link_80C857C.o(.text);
- src/field/item_use.o(.text);
+ src/item_use.o(.text);
src/battle/anim/powder.o(.text);
src/battle/anim/orbs.o(.text);
src/battle/anim/seed.o(.text);
@@ -291,106 +302,108 @@ SECTIONS {
src/battle/anim/shock.o(.text);
asm/current.o(.text);
asm/ice.o(.text);
- asm/fight.o(.text);
+ src/battle/anim/fight.o(.text);
src/battle/anim/poison.o(.text);
asm/flying.o(.text);
- asm/psychic.o(.text);
+ src/battle/anim/psychic.o(.text);
src/battle/anim/bug.o(.text);
- asm/rock.o(.text);
+ src/battle/anim/rock.o(.text);
asm/ghost.o(.text);
src/battle/anim/dragon.o(.text);
src/battle/anim/dark.o(.text);
- asm/dark.o(.text);
asm/ground.o(.text);
asm/normal.o(.text);
src/battle/anim/battle_intro.o(.text);
- src/field/bike.o(.text);
+ src/bike.o(.text);
src/easy_chat_1.o(.text);
src/easy_chat_2.o(.text);
src/pokenav_before.o(.text);
asm/pokenav.o(.text);
src/pokenav_after.o(.text);
asm/pokenav.o(.text_80F708C);
- src/pokemon/mon_markings.o(.text);
- src/field/mauville_man.o(.text);
- src/pokemon/mail.o(.text);
- src/field/menu_helpers.o(.text);
+ src/mon_markings.o(.text);
+ src/mauville_man.o(.text);
+ src/mail.o(.text);
+ src/menu_helpers.o(.text);
src/script_pokemon_util_80F99CC.o(.text);
- src/field/dewford_trend.o(.text);
- src/field/heal_location.o(.text);
- src/field/region_map.o(.text);
- src/scene/cute_sketch.o(.text);
+ src/dewford_trend.o(.text);
+ src/heal_location.o(.text);
+ src/region_map.o(.text);
+ src/cute_sketch.o(.text);
asm/cute_sketch.o(.text);
- src/field/decoration.o(.text);
- src/field/slot_machine.o(.text);
- src/scene/contest_painting.o(.text);
+ src/decoration.o(.text);
+ src/slot_machine.o(.text);
+ src/contest_painting.o(.text);
src/battle/battle_ai.o(.text);
- src/field/trader.o(.text);
- src/field/starter_choose.o(.text);
- src/field/wallclock.o(.text);
+ src/trader.o(.text);
+ src/starter_choose.o(.text);
+ src/wallclock.o(.text);
src/rom6.o(.text);
- src/field/pokeblock.o(.text);
- src/field/fldeff_flash.o(.text);
+ src/pokeblock.o(.text);
+ src/fldeff_flash.o(.text);
src/battle/post_battle_event_funcs.o(.text);
- src/engine/time_events.o(.text);
- src/field/birch_pc.o(.text);
- src/field/hof_pc.o(.text);
- src/field/field_specials.o(.text);
+ src/time_events.o(.text);
+ src/birch_pc.o(.text);
+ src/hof_pc.o(.text);
+ src/field_specials.o(.text);
src/battle/battle_records.o(.text);
asm/pokedex_area_screen.o(.text);
- src/scene/evolution_scene.o(.text);
+ src/evolution_scene.o(.text);
src/roulette.o(.text);
asm/pokedex_cry_screen.o(.text);
- src/pokemon/pokedex_cry_screen.o(.text);
+ src/pokedex_cry_screen.o(.text);
asm/pokedex_cry_screen.o(.text_811A4F8);
- src/field/coins.o(.text);
- src/field/landmark.o(.text);
- src/field/fldeff_strength.o(.text);
+ src/coins.o(.text);
+ src/landmark.o(.text);
+ src/fldeff_strength.o(.text);
src/battle/battle_transition.o(.text);
src/battle/battle_controller_linkpartner.o(.text);
src/battle/battle_message.o(.text);
- src/field/choose_party.o(.text);
- src/scene/cable_car.o(.text);
+ src/choose_party.o(.text);
+ src/cable_car.o(.text);
src/roulette_util.o(.text);
- src/engine/cable_car_util.o(.text);
+ src/cable_car_util.o(.text);
src/unused_8124F94.o(.text);
- src/engine/save.o(.text);
- src/engine/mystery_event_script.o(.text);
- src/field/field_effect_helpers.o(.text);
+ src/save.o(.text);
+ src/mystery_event_script.o(.text);
+ asm/unk_debug_menu_3.o(.text);
+ src/field_effect_helpers.o(.text);
src/contest_ai.o(.text);
src/unused_81258BC.o(.text);
src/battle/anim/sfx.o(.text);
src/battle/battle_controller_safari.o(.text);
- src/field/fldeff_sweetscent.o(.text);
+ src/fldeff_sweetscent.o(.text);
asm/battle_anim_812C144.o(.text);
- src/pokemon/learn_move.o(.text);
- src/field/fldeff_softboiled.o(.text);
- src/field/decoration_inventory.o(.text);
- src/field/roamer.o(.text);
- src/field/battle_tower.o(.text);
- src/field/use_pokeblock.o(.text);
+ src/learn_move.o(.text);
+ src/fldeff_softboiled.o(.text);
+ src/decoration_inventory.o(.text);
+ src/roamer.o(.text);
+ src/battle_tower.o(.text);
+ src/use_pokeblock.o(.text);
src/battle/battle_controller_wally.o(.text);
- src/field/player_pc.o(.text);
- src/scene/intro.o(.text);
- src/field/field_region_map.o(.text);
+ src/player_pc.o(.text);
+ src/intro.o(.text);
+ src/field_region_map.o(.text);
asm/battle_anim_813F0F4.o(.text);
- src/scene/hall_of_fame.o(.text);
- src/scene/credits.o(.text);
- src/field/lottery_corner.o(.text);
- src/field/diploma.o(.text);
- src/field/berry_tag_screen.o(.text);
- src/engine/mystery_event_menu.o(.text);
- src/engine/save_failed_screen.o(.text);
- src/field/braille_puzzles.o(.text);
- src/pokemon/pokeblock_feed.o(.text);
- src/engine/clear_save_data_menu.o(.text);
- src/scene/intro_credits_graphics.o(.text);
- src/scene/evolution_graphics.o(.text);
- src/field/bard_music.o(.text);
- src/field/fldeff_teleport.o(.text);
+ src/hall_of_fame.o(.text);
+ src/credits.o(.text);
+ src/lottery_corner.o(.text);
+ src/diploma.o(.text);
+ src/berry_tag_screen.o(.text);
+ src/mystery_event_menu.o(.text);
+ src/save_failed_screen.o(.text);
+ src/braille_puzzles.o(.text);
+ src/pokeblock_feed.o(.text);
+ src/clear_save_data_menu.o(.text);
+ src/debug/nakamura_debug_menu.o(.text);
+ asm/nakamura_debug_menu.o(.text);
+ src/intro_credits_graphics.o(.text);
+ src/evolution_graphics.o(.text);
+ src/bard_music.o(.text);
+ src/fldeff_teleport.o(.text);
src/debug/unknown_debug_menu.o(.text);
- src/engine/name_string_util.o(.text);
- src/engine/menu_cursor.o(.text);
+ src/name_string_util.o(.text);
+ src/menu_cursor.o(.text);
} =0
script_data :
@@ -474,14 +487,14 @@ SECTIONS {
.rodata :
ALIGN(4)
{
- src/engine/main.o(.rodata);
- src/engine/sprite.o(.rodata);
+ src/main.o(.rodata);
+ src/sprite.o(.rodata);
. += 0x8; /* Why the gap? */
- src/engine/text.o(.rodata);
- src/engine/string_util.o(.rodata);
- src/engine/link.o(.rodata);
- src/engine/rtc.o(.rodata);
- src/engine/main_menu.o(.rodata);
+ src/text.o(.rodata);
+ src/string_util.o(.rodata);
+ src/link.o(.rodata);
+ src/rtc.o(.rodata);
+ src/main_menu.o(.rodata);
data/mon_attrs.o(.rodata);
data/btl_attrs.o(.rodata);
src/battle/battle_4.o(.rodata);
@@ -492,44 +505,45 @@ SECTIONS {
src/battle/battle_controller_linkopponent.o(.rodata);
data/battle_moves.o(.rodata);
src/battle/battle_util.o(.rodata);
- src/pokemon/pokemon_1.o(.rodata);
- src/pokemon/pokemon_1.o(.data); /* gEvolutionTable needs to be non-const to match */
+ src/pokemon_1.o(.rodata);
+ src/pokemon_1.o(.data); /* gEvolutionTable needs to be non-const to match */
src/battle/calculate_base_damage.o(.rodata);
- src/pokemon/pokemon_2.o(.rodata);
- src/pokemon/pokemon_item_effect.o(.rodata);
- src/pokemon/pokemon_3.o(.rodata);
+ src/pokemon_2.o(.rodata);
+ src/pokemon_item_effect.o(.rodata);
+ src/pokemon_3.o(.rodata);
. = ALIGN(4);
- src/engine/trig.o(.rodata);
- src/engine/util.o(.rodata);
- src/field/daycare.o(.rodata);
- src/scene/egg_hatch.o(.rodata);
+ src/trig.o(.rodata);
+ src/util.o(.rodata);
+ src/daycare.o(.rodata);
+ src/egg_hatch.o(.rodata);
data/battle_interface.o(.rodata);
src/battle/pokeball.o(.rodata);
- src/engine/trade.o(.rodata);
- src/scene/berry_blender.o(.rodata);
- src/scene/new_game.o(.rodata);
- src/field/overworld.o(.rodata);
+ src/trade.o(.rodata);
+ src/berry_blender.o(.rodata);
+ src/new_game.o(.rodata);
+ src/overworld.o(.rodata);
data/tilesets.o(.rodata);
data/maps.o(.rodata);
- src/field/fieldmap.o(.rodata);
- src/field/metatile_behavior.o(.rodata);
- src/field/field_door.o(.rodata);
- src/field/field_player_avatar.o(.rodata);
- src/field/field_map_obj.o(.rodata);
- src/field/field_ground_effect.o(.rodata);
- src/field/field_map_obj_helpers.o(.rodata);
- src/engine/text_window.o(.rodata);
- src/engine/script.o(.rodata);
- src/field/scrcmd.o(.rodata);
- src/field/coord_event_weather.o(.rodata);
- src/field/field_tasks.o(.rodata);
- src/engine/reset_rtc_screen.o(.rodata);
- src/field/party_menu.o(.rodata);
- src/field/start_menu.o(.rodata);
- src/engine/menu.o(.rodata);
- src/engine/tileset_anim.o(.rodata);
- src/engine/palette.o(.rodata);
- src/engine/sound.o(.rodata);
+ src/fieldmap.o(.rodata);
+ src/metatile_behavior.o(.rodata);
+ src/field_door.o(.rodata);
+ src/field_player_avatar.o(.rodata);
+ src/event_object_movement.o(.rodata);
+ src/text_window.o(.rodata);
+ src/script.o(.rodata);
+ src/scrcmd.o(.rodata);
+ src/coord_event_weather.o(.rodata);
+ src/field_tasks.o(.rodata);
+ src/reset_rtc_screen.o(.rodata);
+ src/party_menu.o(.rodata);
+ src/start_menu.o(.rodata);
+ src/debug/start_menu_debug.o(.data);
+ src/debug/start_menu_debug.o(.rodata);
+ data/start_menu_debug.o(.rodata);
+ src/menu.o(.rodata);
+ src/tileset_anim.o(.rodata);
+ src/palette.o(.rodata);
+ src/sound.o(.rodata);
src/battle/battle_anim.o(.rodata);
src/rom_8077ABC.o(.rodata);
data/map_events.o(.rodata);
@@ -539,118 +553,133 @@ SECTIONS {
data/unused_paw.o(.rodata);
data/unused_hit.o(.rodata);
data/unused_orb2.o(.rodata);
- src/engine/task.o(.rodata);
+ src/task.o(.rodata);
src/battle/battle_anim_807B69C.o(.rodata);
- src/scene/title_screen.o(.rodata);
- src/field/field_weather.o(.rodata);
- src/field/field_weather_effects.o(.rodata);
- src/field/field_screen_effect.o(.rodata);
+ src/title_screen.o(.rodata);
+ src/field_weather.o(.rodata);
+ src/field_weather_effects.o(.rodata);
+ src/field_screen_effect.o(.rodata);
src/battle/battle_setup.o(.rodata);
- src/engine/cable_club.o(.rodata);
+ src/cable_club.o(.rodata);
+ data/debug_menu_tomomichi.o(.rodata);
+ data/debug_menu_nohara.o(.rodata);
src/debug/mori_debug_menu.o(.rodata);
- src/field/trainer_see.o(.rodata);
- src/field/wild_encounter.o(.rodata);
- src/field/field_effect.o(.rodata);
- src/pokemon/pokemon_menu.o(.rodata);
- src/engine/option_menu.o(.rodata);
- src/pokemon/pokedex.o(.rodata);
- src/engine/trainer_card.o(.rodata);
+ data/debug_menu_taya.o(.rodata);
+ src/trainer_see.o(.rodata);
+ src/wild_encounter.o(.rodata);
+ src/field_effect.o(.rodata);
+ src/pokemon_menu.o(.rodata);
+ src/option_menu.o(.rodata);
+ src/pokedex.o(.rodata);
+ src/trainer_card.o(.rodata);
src/battle/battle_party_menu.o(.rodata);
+ src/pokemon_storage_system.o(.rodata);
+ src/pokemon_storage_system_2.o(.rodata);
+ src/pokemon_storage_system_3.o(.rodata);
+ src/pokemon_storage_system_4.o(.rodata);
+ src/pokemon_storage_system_5.o(.rodata);
data/pokemon_storage_system.o(.rodata);
- src/pokemon/pokemon_icon.o(.rodata);
- src/pokemon/pokemon_summary_screen.o(.rodata);
- src/field/fldeff_cut.o(.rodata);
- src/field/item_menu.o(.rodata);
+ src/pokemon_icon.o(.rodata);
+ src/pokemon_summary_screen.o(.rodata);
+ src/fldeff_cut.o(.rodata);
+ src/debug/kagaya_debug_menu.o(.rodata);
+ src/item_menu.o(.rodata);
src/battle/battle_anim_80A7E7C.o(.rodata);
- src/field/item.o(.rodata);
+ src/item.o(.rodata);
src/debug/matsuda_debug_menu.o(.rodata);
data/contest.o(.rodata);
- src/field/shop.o(.rodata);
- src/field/fldeff_escalator.o(.rodata);
- src/field/berry.o(.rodata);
- src/field/script_menu.o(.rodata);
- src/engine/naming_screen.o(.rodata);
- src/field/money.o(.rodata);
+ src/shop.o(.rodata);
+ src/fldeff_escalator.o(.rodata);
+ src/berry.o(.rodata);
+ data/debug_menu_watanabe.o(.rodata);
+ src/script_menu.o(.rodata);
+ src/naming_screen.o(.rodata);
+ src/money.o(.rodata);
data/contest_effect.o(.rodata);
- src/engine/record_mixing.o(.data);
- src/engine/record_mixing.o(.rodata);
+ src/record_mixing.o(.data);
+ src/record_mixing.o(.rodata);
src/debug/sound_check_menu.o(.rodata);
- src/field/secret_base.o(.rodata);
- src/field/tv.o(.rodata);
+ src/secret_base.o(.rodata);
+ src/tv.o(.rodata);
src/battle/contest_link_80C2020.o(.rodata);
- src/pokemon/pokemon_size_record.o(.rodata);
- src/field/pc_screen_effect.o(.rodata);
+ src/pokemon_size_record.o(.rodata);
+ src/pc_screen_effect.o(.rodata);
data/pc_screen_effect.o(.rodata);
- src/field/fldeff_secretpower.o(.rodata);
- src/field/fldeff_decoration.o(.rodata);
- src/field/fldeff_recordmixing.o(.rodata);
- src/field/field_special_scene.o(.rodata);
- src/field/rotating_gate.o(.rodata);
- src/field/item_use.o(.rodata);
+ src/fldeff_secretpower.o(.rodata);
+ src/fldeff_decoration.o(.rodata);
+ src/fldeff_recordmixing.o(.rodata);
+ src/field_special_scene.o(.rodata);
+ src/rotating_gate.o(.rodata);
+ src/item_use.o(.rodata);
data/battle_anim_80CA710.o(.rodata);
src/battle/anim/battle_intro.o(.rodata);
- src/field/bike.o(.rodata);
+ src/bike.o(.rodata);
src/easy_chat_1.o(.rodata);
src/easy_chat_2.o(.rodata);
data/easy_chat.o(.rodata);
data/pokenav.o(.rodata);
- src/pokemon/mon_markings.o(.rodata);
- src/field/mauville_man.o(.rodata);
- src/pokemon/mail.o(.rodata);
- src/field/menu_helpers.o(.rodata);
- src/field/heal_location.o(.rodata);
- src/field/region_map.o(.rodata);
+ src/mon_markings.o(.rodata);
+ src/mauville_man.o(.rodata);
+ src/mail.o(.rodata);
+ src/menu_helpers.o(.rodata);
+ src/heal_location.o(.rodata);
+ src/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
- src/field/decoration.o(.rodata);
- src/field/slot_machine.o(.rodata);
- src/scene/contest_painting.o(.rodata);
+ src/decoration.o(.rodata);
+ src/slot_machine.o(.rodata);
+ src/contest_painting.o(.rodata);
src/battle/battle_ai.o(.rodata);
- src/field/trader.o(.rodata);
- src/field/starter_choose.o(.rodata);
- src/field/wallclock.o(.rodata);
- src/field/pokeblock.o(.rodata);
- src/field/fldeff_flash.o(.rodata);
- src/engine/time_events.o(.rodata);
- src/field/field_specials.o(.rodata);
+ src/trader.o(.rodata);
+ src/starter_choose.o(.rodata);
+ src/wallclock.o(.rodata);
+ src/pokeblock.o(.rodata);
+ src/fldeff_flash.o(.rodata);
+ src/time_events.o(.rodata);
+ src/field_specials.o(.rodata);
+ src/battle/battle_records.o(.rodata);
data/pokedex_area_screen.o(.rodata);
- src/scene/evolution_scene.o(.rodata);
+ src/evolution_scene.o(.rodata);
data/roulette.o(.rodata);
data/pokedex_cry_screen.o(.rodata);
- src/field/landmark.o(.rodata);
+ src/landmark.o(.rodata);
src/battle/battle_transition.o(.rodata);
src/battle/battle_controller_linkpartner.o(.rodata);
src/battle/battle_message.o(.rodata);
- src/field/choose_party.o(.rodata);
- src/scene/cable_car.o(.rodata);
- src/engine/save.o(.rodata);
- src/field/field_effect_helpers.o(.rodata);
+ src/choose_party.o(.rodata);
+ src/cable_car.o(.rodata);
+ src/save.o(.rodata);
+ data/unk_debug_menu_3.o(.rodata);
+ src/field_effect_helpers.o(.rodata);
src/contest_ai.o(.rodata);
src/battle/battle_controller_safari.o(.rodata);
data/battle_anim_812C144.o(.rodata);
- src/pokemon/learn_move.o(.rodata);
- src/field/decoration_inventory.o(.rodata);
- src/field/roamer.o(.rodata);
- src/field/battle_tower.o(.rodata);
- src/field/use_pokeblock.o(.rodata);
+ src/learn_move.o(.rodata);
+ src/decoration_inventory.o(.rodata);
+ src/roamer.o(.rodata);
+ src/battle_tower.o(.rodata);
+ src/use_pokeblock.o(.rodata);
src/battle/battle_controller_wally.o(.rodata);
- src/field/player_pc.o(.rodata);
- src/scene/intro.o(.rodata);
+ src/player_pc.o(.rodata);
+ src/intro.o(.rodata);
data/battle_anim_813F0F4.o(.rodata);
- src/scene/hall_of_fame.o(.rodata);
- src/scene/credits.o(.rodata);
- src/field/lottery_corner.o(.rodata);
- src/field/diploma.o(.rodata);
+ src/hall_of_fame.o(.rodata);
+ src/credits.o(.rodata);
+ src/lottery_corner.o(.rodata);
+ src/diploma.o(.rodata);
src/strings.o(.rodata);
- src/field/berry_tag_screen.o(.rodata);
- src/engine/save_failed_screen.o(.rodata);
- src/pokemon/pokeblock_feed.o(.rodata);
- src/scene/intro_credits_graphics.o(.rodata);
- src/scene/evolution_graphics.o(.rodata);
- src/field/bard_music.o(.rodata);
+ src/berry_tag_screen.o(.rodata);
+ src/mystery_event_menu.o(.rodata);
+ src/save_failed_screen.o(.rodata);
+ src/pokeblock_feed.o(.rodata);
+ src/debug/nakamura_debug_menu.o(.rodata);
+ src/intro_credits_graphics.o(.rodata);
+ src/evolution_graphics.o(.rodata);
+ src/bard_music.o(.rodata);
src/debug/unknown_debug_menu.o(.rodata);
data/strings2.o(.rodata);
- src/engine/menu_cursor.o(.rodata);
- src/engine/mystery_event_msg.o(.rodata);
+ src/menu_cursor.o(.rodata);
+ src/mystery_event_msg.o(.rodata);
+ data/debug_menu_3.o(.rodata);
src/libs/m4a_tables.o(.rodata);
data/sound_data.o(.rodata);
} =0
diff --git a/projects/Makefile b/projects/Makefile
new file mode 100644
index 000000000..812536503
--- /dev/null
+++ b/projects/Makefile
@@ -0,0 +1,3 @@
+### Stub Makefile to protect IDE configurations ###
+
+$(error Your environment is not setup correctly if this is being executed. Please remember to navigate up one folder and call the correct Makefile to compile pokeruby.)
diff --git a/projects/cMakeLists.txt b/projects/cMakeLists.txt
new file mode 100644
index 000000000..ce1c9a426
--- /dev/null
+++ b/projects/cMakeLists.txt
@@ -0,0 +1,13 @@
+# DOES NOT BUILD! Used for code inspection.
+
+cmake_minimum_required(VERSION 3.6)
+set(CMAKE_C_STANDARD 90)
+project(pokeruby.gba)
+
+add_definitions(-DENGLISH -DREVISION=0 -DRUBY)
+
+file(GLOB_RECURSE C_SOURCES ../src/*.c ../src/*.h ../include/*.h)
+file(GLOB_RECURSE ASM_SOURCES ../asm/*.s ../asm/*.inc ../constants/*.inc ../data/*.s ../data/*.inc)
+include_directories(include ../tools/agbcc/include)
+
+add_executable(pokeruby.gba ${C_SOURCES} ${ASM_SOURCES}) \ No newline at end of file
diff --git a/projects/pokeruby.pnproj b/projects/pokeruby.pnproj
new file mode 100644
index 000000000..a784c4fde
--- /dev/null
+++ b/projects/pokeruby.pnproj
@@ -0,0 +1,12 @@
+<Project name="pokeruby">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="pokeruby" path="..\">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="asm" path="asm\">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="src" path="src\">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="include" path="include\">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="constants" path="constants\">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="data" path="data\">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="data-de" path="data-de\">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="graphics" path="graphics\">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="graphics-de" path="graphics-de\">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="sound" path="sound\">
+<MagicFolder excludeFolders="CVS;.svn;.git;.travis;build;" filter=".c;.txt;.h;.cpp;.s;.inc;.hpp" name="tools" path="tools\">
diff --git a/projects/pokeruby.sublime-project b/projects/pokeruby.sublime-project
new file mode 100644
index 000000000..2e354b6da
--- /dev/null
+++ b/projects/pokeruby.sublime-project
@@ -0,0 +1,8 @@
+{
+ "folders":
+ [
+ {
+ "path": "../"
+ }
+ ]
+}
diff --git a/projects/pokeruby.sublime-workspace b/projects/pokeruby.sublime-workspace
new file mode 100644
index 000000000..ce020c546
--- /dev/null
+++ b/projects/pokeruby.sublime-workspace
@@ -0,0 +1,166 @@
+{
+ "auto_complete":
+ {
+ "selected_items":
+ [
+ ]
+ },
+ "buffers":
+ [
+ ],
+ "build_system": "",
+ "build_system_choices":
+ [
+ ],
+ "build_varint": "",
+ "command_palette":
+ {
+ "height": 0.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ ],
+ "width": 0.0
+ },
+ "console":
+ {
+ "height": 0.0,
+ "history":
+ [
+ ]
+ },
+ "distraction_free":
+ {
+ "menu_visible": true,
+ "show_minimap": false,
+ "show_open_files": false,
+ "show_tabs": false,
+ "side_bar_visible": false,
+ "status_bar_visible": false
+ },
+ "expanded_folders":
+ [
+ "../",
+ "../src"
+ ],
+ "find":
+ {
+ "height": 0.0
+ },
+ "find_in_files":
+ {
+ "height": 0.0,
+ "where_history":
+ [
+ ]
+ },
+ "find_state":
+ {
+ "case_sensitive": false,
+ "find_history":
+ [
+ ],
+ "highlight": true,
+ "in_selection": false,
+ "preserve_case": false,
+ "regex": false,
+ "replace_history":
+ [
+ ],
+ "reverse": false,
+ "show_context": true,
+ "use_buffer2": true,
+ "whole_word": false,
+ "wrap": true
+ },
+ "groups":
+ [
+ {
+ "sheets":
+ [
+ ]
+ }
+ ],
+ "incremental_find":
+ {
+ "height": 0.0
+ },
+ "input":
+ {
+ "height": 0.0
+ },
+ "layout":
+ {
+ "cells":
+ [
+ [
+ 0,
+ 0,
+ 1,
+ 1
+ ]
+ ],
+ "cols":
+ [
+ 0.0,
+ 1.0
+ ],
+ "rows":
+ [
+ 0.0,
+ 1.0
+ ]
+ },
+ "menu_visible": true,
+ "output.find_results":
+ {
+ "height": 0.0
+ },
+ "pinned_build_system": "",
+ "project": "pokeruby.sublime-project",
+ "replace":
+ {
+ "height": 0.0
+ },
+ "save_all_on_build": true,
+ "select_file":
+ {
+ "height": 0.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ ],
+ "width": 0.0
+ },
+ "select_project":
+ {
+ "height": 0.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ ],
+ "width": 0.0
+ },
+ "select_symbol":
+ {
+ "height": 0.0,
+ "last_filter": "",
+ "selected_items":
+ [
+ ],
+ "width": 0.0
+ },
+ "selected_group": 0,
+ "settings":
+ {
+ },
+ "show_minimap": true,
+ "show_open_files": false,
+ "show_tabs": true,
+ "side_bar_visible": true,
+ "side_bar_width": 650.0,
+ "status_bar_visible": true,
+ "template_settings":
+ {
+ }
+}
diff --git a/ruby_de_debug.sha1 b/ruby_de_debug.sha1
new file mode 100644
index 000000000..4ecbf29a7
--- /dev/null
+++ b/ruby_de_debug.sha1
@@ -0,0 +1 @@
+ca5e3d415c4b47353a73a616878ba833f3648b7a pokeruby_de_debug.gba
diff --git a/sound/music_player_table.inc b/sound/music_player_table.inc
index eadcfc90a..452ee78f5 100644
--- a/sound/music_player_table.inc
+++ b/sound/music_player_table.inc
@@ -1,6 +1,6 @@
.align 2
gMPlayTable:: @ 845545C
- music_player gMPlay_BGM, 0x30007F8, 10, 0
- music_player gMPlay_SE1, 0x3000B18, 3, 1
- music_player gMPlay_SE2, 0x3000C08, 9, 1
- music_player gMPlay_SE3, 0x3000ED8, 1, 0
+ music_player gMPlay_BGM, gUnknown_030007B8 + 0x40, 10, 0
+ music_player gMPlay_SE1, gUnknown_030007B8 + 0x360, 3, 1
+ music_player gMPlay_SE2, gUnknown_030007B8 + 0x450, 9, 1
+ music_player gMPlay_SE3, gUnknown_030007B8 + 0x720, 1, 0
diff --git a/src/field/bard_music.c b/src/bard_music.c
index 5c48749cf..4518cf09b 100644
--- a/src/field/bard_music.c
+++ b/src/bard_music.c
@@ -141,9 +141,9 @@ static const u32 sBardSoundLengthDeltas[] = {
};
#if ENGLISH
-#include "../src/data/bard_music_en.h"
+#include "data/bard_music_en.h"
#elif GERMAN
-#include "../src/data/bard_music_de.h"
+#include "data/bard_music_de.h"
#endif // ENGLISH/GERMAN
static const struct BardSound (*const gBardMusicTable[])[6] = {
diff --git a/src/battle/anim/aurora.c b/src/battle/anim/aurora.c
index 90fa5c879..b24809264 100644
--- a/src/battle/anim/aurora.c
+++ b/src/battle/anim/aurora.c
@@ -16,7 +16,7 @@ void sub_80D33B4(struct Sprite *sprite)
{
s16 r6;
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
if (GetBankSide(gAnimBankAttacker) != 0)
r6 = -gBattleAnimArgs[2];
else
@@ -26,7 +26,7 @@ void sub_80D33B4(struct Sprite *sprite)
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + r6;
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
sprite->callback = sub_80D344C;
sprite->affineAnimPaused = TRUE;
sprite->callback(sprite);
@@ -39,7 +39,7 @@ static void sub_80D344C(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
sprite->affineAnimPaused = FALSE;
}
- if (sub_8078B5C(sprite) != 0)
+ if (TranslateAnimSpriteByDeltas(sprite) != 0)
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/blow_kiss.c b/src/battle/anim/blow_kiss.c
index e7b49471d..f585b74bc 100644
--- a/src/battle/anim/blow_kiss.c
+++ b/src/battle/anim/blow_kiss.c
@@ -15,19 +15,19 @@ static void sub_80D1FA4(struct Sprite* sprite);
void sub_80D1F58(struct Sprite* sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[0] = 0x5F;
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
sprite->callback = sub_80D1FA4;
}
void sub_80D1FA4(struct Sprite* sprite)
{
- if (sub_8078B5C(sprite) == 0)
+ if (TranslateAnimSpriteByDeltas(sprite) == 0)
{
sprite->pos2.y += Sin(sprite->data[5], 14);
sprite->data[5] = (sprite->data[5] + 4) & 0xFF;
diff --git a/src/battle/anim/bubble.c b/src/battle/anim/bubble.c
index 403003ce3..d6ec06be9 100644
--- a/src/battle/anim/bubble.c
+++ b/src/battle/anim/bubble.c
@@ -43,7 +43,7 @@ void sub_80D31C8(struct Sprite* sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
newSpriteId = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
sprite->data[5] = newSpriteId;
@@ -69,7 +69,7 @@ static void sub_80D32E8(struct Sprite *sprite)
u16 index = gSprites[spriteId].data[3];
sprite->data[0] = 1;
- sub_8078B5C(sprite);
+ TranslateAnimSpriteByDeltas(sprite);
sprite->pos2.x += Sin(index / 256, gSprites[spriteId].data[0]);
sprite->pos2.y += Cos(index / 256, gSprites[spriteId].data[1]);
@@ -97,6 +97,6 @@ static void sub_80D3370(struct Sprite *sprite)
static void sub_80D3398(struct Sprite *sprite)
{
sprite->data[0] = 10;
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
}
diff --git a/src/battle/anim/bug.c b/src/battle/anim/bug.c
index dbc0f75a5..d57a1046e 100644
--- a/src/battle/anim/bug.c
+++ b/src/battle/anim/bug.c
@@ -13,7 +13,7 @@ static void sub_80DCA38(struct Sprite *sprite);
static void sub_80DCAEC(struct Sprite *sprite);
static void sub_80DCB5C(struct Sprite *sprite);
static void sub_80DCBB4(struct Sprite *sprite);
-void sub_80DCD78(struct Sprite *sprite);
+static void AnimMissileArcStep(struct Sprite *sprite);
// used in Move_MEGAHORN
void sub_80DC824(struct Sprite *sprite)
@@ -40,7 +40,7 @@ void sub_80DC824(struct Sprite *sprite)
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -65,7 +65,7 @@ void sub_80DC8F4(struct Sprite *sprite)
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -76,7 +76,7 @@ void sub_80DC9A0(struct Sprite *sprite)
if (IsContest())
gBattleAnimArgs[2] /= 2;
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
@@ -88,7 +88,7 @@ void sub_80DC9A0(struct Sprite *sprite)
}
else
{
- sub_807A3FC(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]);
+ SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]);
}
sub_8078BD4(sprite);
@@ -98,7 +98,7 @@ void sub_80DC9A0(struct Sprite *sprite)
static void sub_80DCA38(struct Sprite *sprite)
{
- if (sub_8078B5C(sprite))
+ if (TranslateAnimSpriteByDeltas(sprite))
{
DestroyAnimSprite(sprite);
return;
@@ -111,7 +111,7 @@ static void sub_80DCA38(struct Sprite *sprite)
// used in Move_STRING_SHOT
void sub_80DCA70(struct Sprite *sprite)
{
- sub_807A3FC(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
if (GetBankSide(gAnimBankAttacker))
sprite->pos1.x -= gBattleAnimArgs[0];
else
@@ -174,9 +174,15 @@ static void sub_80DCBB4(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
-// used in 3 moves:
-// Move_POISON_STING, Move_TWINEEDLE, Move_SPIKE_CANNON
-void sub_80DCBCC(struct Sprite *sprite)
+// Translates a stinger sprite linearly to a destination location. The sprite is
+// initially rotated so that it appears to be traveling in a straight line.
+// Used by Move_POISON_STING, Move_TWINEEDLE, Move_SPIKE_CANNON
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+void AnimTranslateStinger(struct Sprite *sprite)
{
s16 lVarX, lVarY;
u16 rot;
@@ -212,11 +218,11 @@ void sub_80DCBCC(struct Sprite *sprite)
}
}
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
lVarX = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
lVarY = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
- rot = sub_80790F0(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
+ rot = ArcTan2Neg(lVarX - sprite->pos1.x, lVarY - sprite->pos1.y);
rot += 0xC000;
sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot);
@@ -224,15 +230,22 @@ void sub_80DCBCC(struct Sprite *sprite)
sprite->data[2] = lVarX;
sprite->data[4] = lVarY;
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
// used in 2 moves:
// Move_PIN_MISSILE, Move_ICICLE_SPEAR
-void sub_80DCCFC(struct Sprite *sprite)
+// Rotates sprite and moves it in an arc, so that it appears like a missle or arrow traveling.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+// arg 5: wave amplitude
+void AnimMissileArc(struct Sprite *sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
if (GetBankSide(gAnimBankAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
@@ -241,17 +254,17 @@ void sub_80DCCFC(struct Sprite *sprite)
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
- sprite->callback = sub_80DCD78;
+ sprite->callback = AnimMissileArcStep;
sprite->invisible = TRUE;
}
-void sub_80DCD78(struct Sprite *sprite)
+static void AnimMissileArcStep(struct Sprite *sprite)
{
sprite->invisible = FALSE;
- if (sub_8078718(sprite))
+ if (TranslateAnimSpriteLinearAndSine(sprite))
{
DestroyAnimSprite(sprite);
}
@@ -271,12 +284,12 @@ void sub_80DCD78(struct Sprite *sprite)
x2 += x1;
y2 += y1;
- if (!sub_8078718(sprite))
+ if (!TranslateAnimSpriteLinearAndSine(sprite))
{
- u16 rot = sub_80790F0(sprite->pos1.x + sprite->pos2.x - x2,
+ u16 rotation = ArcTan2Neg(sprite->pos1.x + sprite->pos2.x - x2,
sprite->pos1.y + sprite->pos2.y - y2);
- rot += 0xC000;
- sub_8078FDC(sprite, FALSE, 0x100, 0x100, rot);
+ rotation += 0xC000;
+ sub_8078FDC(sprite, FALSE, 0x100, 0x100, rotation);
for (i = 0; i < 8; i++)
data[i] = tempData[i];
diff --git a/src/battle/anim/bullet.c b/src/battle/anim/bullet.c
index 90b2021f1..1dca0b886 100644
--- a/src/battle/anim/bullet.c
+++ b/src/battle/anim/bullet.c
@@ -17,11 +17,11 @@ static void sub_80D00B4(struct Sprite* sprite);
void sub_80CFFD8(struct Sprite* sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[0] = 20;
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
sprite->affineAnimPaused = 1;
StoreSpriteCallbackInData(sprite, sub_80D0030);
}
diff --git a/src/battle/anim/cutter.c b/src/battle/anim/cutter.c
index 2234ebacb..fed3598fc 100644
--- a/src/battle/anim/cutter.c
+++ b/src/battle/anim/cutter.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle.h"
#include "rom_8077ABC.h"
#include "trig.h"
#include "battle_anim.h"
@@ -7,35 +8,42 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-static void sub_80CB09C(struct Sprite* sprite);
-static void sub_80CB1A4(struct Sprite* sprite);
+static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite);
+static void AnimMoveTwisterParticleStep(struct Sprite* sprite);
-// cutter (the cresent shaped leaf used in throwing projectiles for the listed moves.)
+// Animates a sprite that moves linearly from one location to another, with a
+// single-cycle sine wave added to the y position along the way.
// Used by Razor Leaf and Magical Leaf.
-
-void sub_80CAFD0(struct Sprite* sprite)
+// arg 0: initial x offset
+// arg 1: initial y offset
+// arg 2: target x offset
+// arg 3: target y offset
+// arg 4: translation duration
+// arg 5: wave amplitude
+// arg 6: target between double battle opponents (boolean)
+void AnimTranslateLinearSingleSineWave(struct Sprite* sprite)
{
- sub_80787B0(sprite, 1);
- if (GetBankSide(gAnimBankAttacker))
+ InitAnimSpritePos(sprite, 1);
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
sprite->data[0] = gBattleAnimArgs[4];
- if (!(gBattleAnimArgs[6]))
+ if (!gBattleAnimArgs[6])
{
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
}
else
{
- sub_807A3FC(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]);
+ SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->data[2], &sprite->data[4]);
sprite->data[2] += gBattleAnimArgs[2];
sprite->data[4] += gBattleAnimArgs[3];
}
sprite->data[5] = gBattleAnimArgs[5];
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget))
{
sprite->data[0] = 1;
@@ -45,18 +53,18 @@ void sub_80CAFD0(struct Sprite* sprite)
sprite->data[0] = 0;
}
- sprite->callback = sub_80CB09C;
+ sprite->callback = AnimTranslateLinearSingleSineWaveStep;
}
-void sub_80CB09C(struct Sprite* sprite)
+static void AnimTranslateLinearSingleSineWaveStep(struct Sprite* sprite)
{
- bool8 c = FALSE;
+ bool8 destroy = FALSE;
s16 a = sprite->data[0];
s16 b = sprite->data[7];
s16 r0;
sprite->data[0] = 1;
- sub_8078718(sprite);
+ TranslateAnimSpriteLinearAndSine(sprite);
r0 = sprite->data[7];
sprite->data[0] = a;
if (b > 0xC8 && r0 <= 0x37 && sprite->oam.affineParam == 0)
@@ -67,24 +75,30 @@ void sub_80CB09C(struct Sprite* sprite)
sprite->invisible ^= 1;
sprite->oam.affineParam++;
if (sprite->oam.affineParam == 0x1E)
- c = TRUE;
+ destroy = TRUE;
}
- if (sprite->pos1.x + sprite->pos2.x > 0x100
+ if (sprite->pos1.x + sprite->pos2.x > 256
|| sprite->pos1.x + sprite->pos2.x < -16
- || sprite->pos1.y + sprite->pos2.y > 0xA0
+ || sprite->pos1.y + sprite->pos2.y > 160
|| sprite->pos1.y + sprite->pos2.y < -16)
- c = TRUE;
+ destroy = TRUE;
- if (c)
+ if (destroy)
DestroyAnimSprite(sprite);
}
-void sub_80CB144(struct Sprite* sprite)
+// Animates particles in the Twister move animation.
+// arg 0: duration
+// arg 1: total y delta (the particles rise upward)
+// arg 2: wave period (higher means faster wave)
+// arg 3: wave amplitude
+// arg 4: speedup frame (particles move faster at the end of the animation)
+void AnimMoveTwisterParticle(struct Sprite* sprite)
{
if (!IsContest() && IsDoubleBattle() == TRUE)
{
- sub_807A3FC(gAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gAnimBankTarget, 1, &sprite->pos1.x, &sprite->pos1.y);
}
sprite->pos1.y += 32;
@@ -93,10 +107,10 @@ void sub_80CB144(struct Sprite* sprite)
sprite->data[2] = gBattleAnimArgs[2];
sprite->data[3] = gBattleAnimArgs[3];
sprite->data[4] = gBattleAnimArgs[4];
- sprite->callback = sub_80CB1A4;
+ sprite->callback = AnimMoveTwisterParticleStep;
}
-void sub_80CB1A4(struct Sprite* sprite)
+static void AnimMoveTwisterParticleStep(struct Sprite* sprite)
{
if (sprite->data[1] == 0xFF)
{
diff --git a/src/battle/anim/cyclone.c b/src/battle/anim/cyclone.c
index 0f83df211..b1210bc54 100644
--- a/src/battle/anim/cyclone.c
+++ b/src/battle/anim/cyclone.c
@@ -13,7 +13,7 @@ extern u8 gAnimBankTarget;
void sub_80D0118(struct Sprite* sprite)
{
- sub_80787B0(sprite, 0);
+ InitAnimSpritePos(sprite, 0);
if (GetBankSide(gAnimBankAttacker) == 0)
sprite->pos1.y += 16;
diff --git a/src/battle/anim/dark.c b/src/battle/anim/dark.c
index 8ceb00298..055cf5802 100644
--- a/src/battle/anim/dark.c
+++ b/src/battle/anim/dark.c
@@ -1,22 +1,47 @@
#include "global.h"
-#include "rom_8077ABC.h"
-#include "trig.h"
#include "battle_anim.h"
-#include "sound.h"
+#include "blend_palette.h"
+#include "decompress.h"
+#include "ewram.h"
+#include "palette.h"
+#include "rom_8077ABC.h"
#include "scanline_effect.h"
-
-void sub_80DFE90(struct Sprite *sprite);
-
-void sub_80DFC9C(u8 taskId);
-void sub_80DFD58(u8 taskId);
+#include "sound.h"
+#include "sprite.h"
+#include "trig.h"
+#include "constants/battle_constants.h"
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG2_X;
+extern u16 gBattle_BG2_Y;
+extern u16 gBattle_WIN0H;
+extern u16 gBattle_WIN0V;
+extern u16 gBattlePartyID[];
+extern u8 gAnimMoveTurn;
+
+extern const u8 gUnknown_08D1D574[];
+extern const u8 gUnknown_08D1D410[];
+extern const u16 gUnknown_08D1D54C[];
+
+static void sub_80DFE90(struct Sprite *sprite);
+static void sub_80DFC9C(u8 taskId);
+static void sub_80DFD58(u8 taskId);
+static void sub_80DFF58(struct Sprite *sprite);
+static void sub_80DFF98(struct Sprite *sprite);
+static void sub_80E00D0(struct Sprite *sprite);
+static void sub_80E02A4(u8 taskId);
+static void sub_80E0620(u8 taskId);
+static void sub_80E08CC(u8 priority);
+static void sub_80E079C(struct Task *task);
+static void sub_80E0CD0(u8 taskId);
-// used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage
+// used in Smoke Ball escape, Sky Attack, Feint Attack and Camouflage
void sub_80DFC24(u8 taskId)
{
int bank;
@@ -31,7 +56,7 @@ void sub_80DFC24(u8 taskId)
gTasks[taskId].func = sub_80DFC9C;
}
-void sub_80DFC9C(u8 taskId)
+static void sub_80DFC9C(u8 taskId)
{
u8 r2 = gTasks[taskId].data[1] >> 8;
u8 r1 = gTasks[taskId].data[1];
@@ -44,7 +69,7 @@ void sub_80DFC9C(u8 taskId)
gTasks[taskId].data[2] = 0;
if (r2 == 16)
{
- gSprites[gObjectBankIDs[gAnimBankAttacker]].invisible = 1;
+ gSprites[gBankSpriteIds[gAnimBankAttacker]].invisible = 1;
DestroyAnimVisualTask(taskId);
}
}
@@ -103,7 +128,7 @@ void sub_80DFE14(struct Sprite *sprite)
sprite->data[3] = GetBankPosition(gAnimBankTarget, 3);
sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
sprite->data[0] = 0x7E;
- sub_8078A5C(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = -sprite->data[1];
sprite->data[4] = -sprite->data[2];
sprite->data[6] = 0xFFD8;
@@ -111,7 +136,7 @@ void sub_80DFE14(struct Sprite *sprite)
sub_80DFE90(sprite);
}
-void sub_80DFE90(struct Sprite *sprite)
+static void sub_80DFE90(struct Sprite *sprite)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
@@ -136,3 +161,848 @@ void sub_80DFE90(struct Sprite *sprite)
if (--sprite->data[0] == 0)
DestroyAnimSprite(sprite);
}
+
+void sub_80DFF1C(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ StartSpriteAffineAnim(sprite, gBattleAnimArgs[2]);
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = gBattleAnimArgs[4];
+ sprite->data[2] = gBattleAnimArgs[5];
+ sprite->callback = sub_80DFF58;
+}
+
+static void sub_80DFF58(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[0];
+ sprite->data[5] += sprite->data[1];
+ sprite->pos2.x = sprite->data[4] >> 8;
+ sprite->pos2.y = sprite->data[5] >> 8;
+
+ if (++sprite->data[3] == sprite->data[2])
+ sprite->callback = sub_80DFF98;
+}
+
+static void sub_80DFF98(struct Sprite *sprite)
+{
+ sprite->data[4] -= sprite->data[0];
+ sprite->data[5] -= sprite->data[1];
+ sprite->pos2.x = sprite->data[4] >> 8;
+ sprite->pos2.y = sprite->data[5] >> 8;
+
+ if (--sprite->data[3] == 0)
+ move_anim_8074EE0(sprite);
+}
+
+void sub_80DFFD0(struct Sprite *sprite)
+{
+ u8 bank;
+ s8 xOffset;
+
+ if (gBattleAnimArgs[0] == 0)
+ bank = gAnimBankAttacker;
+ else
+ bank = gAnimBankTarget;
+
+ xOffset = 20;
+ sprite->oam.tileNum += 4;
+
+ switch (gBattleAnimArgs[1])
+ {
+ case 0:
+ sprite->pos1.x = sub_807A100(bank, 5) - 8;
+ sprite->pos1.y = sub_807A100(bank, 2) + 8;
+ break;
+ case 1:
+ sprite->pos1.x = sub_807A100(bank, 5) - 14;
+ sprite->pos1.y = sub_807A100(bank, 2) + 16;
+ break;
+ case 2:
+ sprite->pos1.x = sub_807A100(bank, 4) + 8;
+ sprite->pos1.y = sub_807A100(bank, 2) + 8;
+ StartSpriteAffineAnim(sprite, 1);
+ xOffset = -20;
+ break;
+ case 3:
+ sprite->pos1.x = sub_807A100(bank, 4) + 14;
+ sprite->pos1.y = sub_807A100(bank, 2) + 16;
+ StartSpriteAffineAnim(sprite, 1);
+ xOffset = -20;
+ break;
+ }
+
+ sprite->data[0] = 32;
+ sprite->data[2] = sprite->pos1.x + xOffset;
+ sprite->data[4] = sprite->pos1.y + 12;
+ sprite->data[5] = -12;
+
+ InitAnimSpriteTranslationOverDuration(sprite);
+ sprite->callback = sub_80E00D0;
+}
+
+static void sub_80E00D0(struct Sprite *sprite)
+{
+ if (TranslateAnimSpriteLinearAndSine(sprite))
+ move_anim_8074EE0(sprite);
+}
+
+void sub_80E00EC(u8 taskId)
+{
+ struct ScanlineEffectParams scanlineParams;
+ struct Struct_sub_8078914 subStruct;
+ u16 i;
+ u8 pos;
+ int var0;
+ struct Task *task = &gTasks[taskId];
+
+ task->data[7] = GetBankPosition(gAnimBankAttacker, 1) + 31;
+ task->data[6] = sub_807A100(gAnimBankAttacker, 2) - 7;
+ task->data[5] = task->data[7];
+ task->data[4] = task->data[6];
+ task->data[13] = (task->data[7] - task->data[6]) << 8;
+
+ pos = GetBankPosition(gAnimBankAttacker, 0);
+ task->data[14] = pos - 32;
+ task->data[15] = pos + 32;
+
+ if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER)
+ task->data[8] = -12;
+ else
+ task->data[8] = -64;
+
+ task->data[3] = GetBankIdentity_permutated(gAnimBankAttacker);
+ if (task->data[3] == 1)
+ {
+ sub_8078914(&subStruct);
+ task->data[10] = gBattle_BG1_Y;
+ REG_BLDCNT = 0x3F42;
+ FillPalette(0, subStruct.field_8 << 4, 32);
+ scanlineParams.dmaDest = &REG_BG1VOFS;
+ var0 = 2;
+
+ if (!IsContest())
+ gBattle_BG2_X += 240;
+ }
+ else
+ {
+ task->data[10] = gBattle_BG2_Y;
+ REG_BLDCNT = 0x3F44;
+ FillPalette(0, 144, 32);
+ scanlineParams.dmaDest = &REG_BG2VOFS;
+ var0 = 4;
+
+ if (!IsContest())
+ gBattle_BG1_X += 240;
+ }
+
+ scanlineParams.dmaControl = 0xA2600001;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ task->data[11] = 0;
+ task->data[12] = 16;
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+
+ sub_80E08CC(3);
+
+ for (i = 0; i < 112; i++)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[10];
+ gScanlineEffectRegBuffers[1][i] = task->data[10];
+ }
+
+ ScanlineEffect_SetParams(scanlineParams);
+
+ REG_WINOUT = 0x3F00 | (var0 ^ 0x3F);
+ REG_WININ = 0x3F3F;
+ gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
+ gBattle_WIN0V = 160;
+
+ task->func = sub_80E02A4;
+}
+
+static void sub_80E02A4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if (++task->data[2] & 1)
+ {
+ if (task->data[11] != 12)
+ task->data[11]++;
+ }
+ else
+ {
+ if (task->data[12] != 8)
+ task->data[12]--;
+ }
+
+ REG_BLDALPHA = (task->data[12] << 8) | task->data[11];
+
+ if (task->data[11] == 12 && task->data[12] == 8)
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ task->data[4] -= 8;
+ sub_80E079C(task);
+
+ if (task->data[4] < task->data[8])
+ task->data[0]++;
+ break;
+ case 2:
+ task->data[4] -= 8;
+ sub_80E079C(task);
+ task->data[14] += 4;
+ task->data[15] -= 4;
+
+ if (task->data[14] >= task->data[15])
+ task->data[14] = task->data[15];
+
+ gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
+
+ if (task->data[14] == task->data[15])
+ task->data[0]++;
+ break;
+ case 3:
+ gScanlineEffect.state = 3;
+ task->data[0]++;
+ break;
+ case 4:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80E03BC(u8 taskId)
+{
+ struct Struct_sub_8078914 subStruct;
+ struct ScanlineEffectParams scanlineParams;
+ u8 pos;
+ u16 i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (IsContest() == TRUE)
+ {
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3F;
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ task->data[3] = GetBankIdentity_permutated(gAnimBankTarget);
+ if (task->data[3] == 1)
+ {
+ REG_BLDCNT = 0x3F42;
+ gBattle_BG2_X += 240;
+ }
+ else
+ {
+ REG_BLDCNT = 0x3F44;
+ gBattle_BG1_X += 240;
+ }
+
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ if (task->data[3] == 1)
+ {
+ sub_8078914(&subStruct);
+ task->data[10] = gBattle_BG1_Y;
+ FillPalette(0, subStruct.field_8 << 4, 32);
+ }
+ else
+ {
+ task->data[10] = gBattle_BG2_Y;
+ FillPalette(0, 144, 32);
+ }
+
+ sub_80E08CC(3);
+ task->data[0]++;
+ break;
+ case 2:
+ task->data[7] = GetBankPosition(gAnimBankTarget, 1) + 31;
+ task->data[6] = sub_807A100(gAnimBankTarget, 2) - 7;
+ task->data[13] = (task->data[7] - task->data[6]) << 8;
+ pos = GetBankPosition(gAnimBankTarget, 0);
+ task->data[14] = pos - 4;
+ task->data[15] = pos + 4;
+
+ if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER)
+ task->data[8] = -12;
+ else
+ task->data[8] = -64;
+
+ task->data[4] = task->data[8];
+ task->data[5] = task->data[8];
+ task->data[11] = 12;
+ task->data[12] = 8;
+ task->data[0]++;
+ break;
+ case 3:
+ if (task->data[3] == 1)
+ scanlineParams.dmaDest = &REG_BG1VOFS;
+ else
+ scanlineParams.dmaDest = &REG_BG2VOFS;
+
+ for (i = 0; i < 112; i++)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[10] + (159 - i);
+ gScanlineEffectRegBuffers[1][i] = task->data[10] + (159 - i);
+ }
+
+ scanlineParams.dmaControl = 0xA2600001;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ ScanlineEffect_SetParams(scanlineParams);
+ task->data[0]++;
+ break;
+ case 4:
+ if (task->data[3] == 1)
+ REG_WINOUT = 0x3F3D;
+ else
+ REG_WINOUT = 0x3F3B;
+
+ REG_WININ = 0x3F3F;
+ gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
+ gBattle_WIN0V = 160;
+
+ task->data[0] = 0;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ REG_BLDALPHA = 0x80C;
+ task->func = sub_80E0620;
+ break;
+ }
+}
+
+static void sub_80E0620(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[5] += 8;
+ if (task->data[5] >= task->data[7])
+ task->data[5] = task->data[7];
+
+ sub_80E079C(task);
+
+ if (task->data[5] == task->data[7])
+ task->data[0]++;
+ break;
+ case 1:
+ if (task->data[15] - task->data[14] < 64)
+ {
+ task->data[14] -= 4;
+ task->data[15] += 4;
+ }
+ else
+ {
+ task->data[1] = 1;
+ }
+
+ gBattle_WIN0H = (task->data[14] << 8) | task->data[15];
+ task->data[4] += 8;
+
+ if (task->data[4] >= task->data[6])
+ task->data[4] = task->data[6];
+
+ sub_80E079C(task);
+
+ if (task->data[4] == task->data[6] && task->data[1] != 0)
+ {
+ task->data[1] = 0;
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (++task->data[1] > 1)
+ {
+ task->data[1] = 0;
+ if ((++task->data[2] & 1) != 0)
+ {
+ if (task->data[11] != 0)
+ task->data[11]--;
+ }
+ else
+ {
+ if (task->data[12] < 16)
+ task->data[12]++;
+ }
+
+ REG_BLDALPHA = (task->data[12] << 8) | task->data[11];
+
+ if (task->data[11] == 0 && task->data[12] == 16)
+ task->data[0]++;
+ }
+ break;
+ case 3:
+ gScanlineEffect.state = 3;
+ task->data[0]++;
+ break;
+ case 4:
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3F;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+// static void sub_80E079C(struct Task *task)
+// {
+// int var0, var1;
+// s16 var2;
+// s16 i, j;
+
+// var2 = task->data[5] - task->data[4];
+// if (var2 != 0)
+// {
+// var0 = task->data[13] / var2;
+// var1 = task->data[6];
+
+// for (i = 0; i < task->data[4]; i++)
+// {
+// gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = task->data[10] - (i - 159);
+// }
+
+// for (i = task->data[4]; i <= task->data[5]; i++)
+// {
+// if (i >= 0)
+// {
+// gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][i] = (var1 - i) + task->data[10];
+// }
+
+// var1 += var0;
+// }
+
+// for (j = i; j < task->data[7]; j++)
+// {
+// if (j >= 0)
+// {
+// gScanlineEffectRegBuffers[gScanlineEffect.srcBuffer][j] = (task->data[10] + 159) - j;
+// }
+// }
+// }
+// else
+// {
+// for (i = 0; i < 112; i++)
+// {
+// gScanlineEffectRegBuffers[0][i] = task->data[10] + 159 - i;
+// gScanlineEffectRegBuffers[1][i] = task->data[10] + 159 - i;
+// }
+// }
+// }
+
+__attribute__((naked))
+static void sub_80E079C(struct Task *task)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ adds r6, r0, 0\n\
+ ldrh r0, [r6, 0x12]\n\
+ ldrh r4, [r6, 0x10]\n\
+ subs r0, r4\n\
+ lsls r0, 16\n\
+ asrs r1, r0, 16\n\
+ cmp r1, 0\n\
+ beq _080E0890\n\
+ movs r2, 0x22\n\
+ ldrsh r0, [r6, r2]\n\
+ bl __divsi3\n\
+ mov r8, r0\n\
+ movs r3, 0x14\n\
+ ldrsh r0, [r6, r3]\n\
+ lsls r5, r0, 8\n\
+ lsls r0, r4, 16\n\
+ movs r4, 0\n\
+ cmp r0, 0\n\
+ ble _080E07FC\n\
+ ldr r0, _080E0888 @ =gScanlineEffectRegBuffers\n\
+ mov r12, r0\n\
+ ldr r7, _080E088C @ =gScanlineEffect\n\
+_080E07D0:\n\
+ lsls r2, r4, 16\n\
+ asrs r2, 16\n\
+ lsls r3, r2, 1\n\
+ ldrb r1, [r7, 0x14]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 7\n\
+ adds r3, r0\n\
+ add r3, r12\n\
+ adds r1, r2, 0\n\
+ subs r1, 0x9F\n\
+ ldrh r0, [r6, 0x1C]\n\
+ subs r0, r1\n\
+ strh r0, [r3]\n\
+ adds r2, 0x1\n\
+ lsls r2, 16\n\
+ lsrs r4, r2, 16\n\
+ asrs r2, 16\n\
+ movs r1, 0x10\n\
+ ldrsh r0, [r6, r1]\n\
+ cmp r2, r0\n\
+ blt _080E07D0\n\
+_080E07FC:\n\
+ ldrh r4, [r6, 0x10]\n\
+ lsls r3, r4, 16\n\
+ asrs r1, r3, 16\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r6, r2]\n\
+ cmp r1, r0\n\
+ bgt _080E0846\n\
+ ldr r0, _080E0888 @ =gScanlineEffectRegBuffers\n\
+ mov r12, r0\n\
+ ldr r7, _080E088C @ =gScanlineEffect\n\
+_080E0810:\n\
+ asrs r4, r3, 16\n\
+ cmp r4, 0\n\
+ blt _080E0832\n\
+ asrs r1, r5, 8\n\
+ subs r1, r4\n\
+ lsls r3, r4, 1\n\
+ ldrb r2, [r7, 0x14]\n\
+ lsls r0, r2, 4\n\
+ subs r0, r2\n\
+ lsls r0, 7\n\
+ adds r3, r0\n\
+ add r3, r12\n\
+ lsls r1, 16\n\
+ asrs r1, 16\n\
+ ldrh r2, [r6, 0x1C]\n\
+ adds r1, r2\n\
+ strh r1, [r3]\n\
+_080E0832:\n\
+ add r5, r8\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ lsls r3, r4, 16\n\
+ asrs r1, r3, 16\n\
+ movs r2, 0x12\n\
+ ldrsh r0, [r6, r2]\n\
+ cmp r1, r0\n\
+ ble _080E0810\n\
+_080E0846:\n\
+ movs r3, 0x1C\n\
+ ldrsh r0, [r6, r3]\n\
+ adds r0, 0x9F\n\
+ lsls r2, r4, 16\n\
+ asrs r1, r2, 16\n\
+ subs r5, r0, r1\n\
+ movs r3, 0x16\n\
+ ldrsh r0, [r6, r3]\n\
+ cmp r1, r0\n\
+ bge _080E08BE\n\
+ ldr r7, _080E0888 @ =gScanlineEffectRegBuffers\n\
+ ldr r4, _080E088C @ =gScanlineEffect\n\
+_080E085E:\n\
+ asrs r3, r2, 16\n\
+ cmp r3, 0\n\
+ blt _080E0876\n\
+ lsls r2, r3, 1\n\
+ ldrb r1, [r4, 0x14]\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 7\n\
+ adds r2, r0\n\
+ adds r2, r7\n\
+ strh r5, [r2]\n\
+ subs r5, 0x1\n\
+_080E0876:\n\
+ adds r0, r3, 0x1\n\
+ lsls r2, r0, 16\n\
+ asrs r1, r2, 16\n\
+ movs r3, 0x16\n\
+ ldrsh r0, [r6, r3]\n\
+ cmp r1, r0\n\
+ blt _080E085E\n\
+ b _080E08BE\n\
+ .align 2, 0\n\
+_080E0888: .4byte gScanlineEffectRegBuffers\n\
+_080E088C: .4byte gScanlineEffect\n\
+_080E0890:\n\
+ movs r1, 0x1C\n\
+ ldrsh r0, [r6, r1]\n\
+ adds r5, r0, 0\n\
+ adds r5, 0x9F\n\
+ movs r4, 0\n\
+ ldr r3, _080E08C8 @ =gScanlineEffectRegBuffers\n\
+ movs r2, 0xF0\n\
+ lsls r2, 3\n\
+ adds r6, r3, r2\n\
+_080E08A2:\n\
+ lsls r0, r4, 16\n\
+ asrs r0, 16\n\
+ lsls r2, r0, 1\n\
+ adds r1, r2, r3\n\
+ strh r5, [r1]\n\
+ adds r2, r6\n\
+ strh r5, [r2]\n\
+ subs r5, 0x1\n\
+ adds r0, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0x6F\n\
+ ble _080E08A2\n\
+_080E08BE:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080E08C8: .4byte gScanlineEffectRegBuffers\n\
+ .syntax divided\n");
+}
+
+static void sub_80E08CC(u8 priority)
+{
+ u16 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 spriteId = GetAnimBankSpriteId(i);
+ if (spriteId != 0xFF)
+ gSprites[spriteId].oam.priority = priority;
+ }
+}
+
+void sub_80E0918(u8 taskId)
+{
+ u8 toBG2 = GetBankIdentity_permutated(gAnimBankAttacker) ^ 1 ? 1 : 0;
+ MoveBattlerSpriteToBG(gAnimBankAttacker, toBG2);
+ gSprites[gBankSpriteIds[gAnimBankAttacker]].invisible = 0;
+
+ if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2))
+ {
+ MoveBattlerSpriteToBG(gAnimBankAttacker ^ 2, toBG2 ^ 1);
+ gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].invisible = 0;
+ }
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E09C4(u8 taskId)
+{
+ u8 toBG2 = GetBankIdentity_permutated(gAnimBankAttacker) ^ 1 ? 1 : 0;
+ sub_8076464(toBG2);
+
+ if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2))
+ sub_8076464(toBG2 ^ 1);
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E0A10(struct Sprite *sprite)
+{
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+ StartSpriteAnim(sprite, gBattleAnimArgs[2]);
+ sprite->callback = sub_8078600;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_80E0A4C(u8 taskId)
+{
+ u16 species;
+ u8 spriteId;
+ u8 newSpriteId;
+ u16 paletteNum;
+ struct Struct_sub_8078914 subStruct;
+ int var0 = 0;
+
+ gBattle_WIN0H = var0;
+ gBattle_WIN0V = var0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3D;
+ REG_DISPCNT |= DISPCNT_OBJWIN_ON;
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0xC08;
+ REG_BG1CNT_BITFIELD.priority = 0;
+ REG_BG1CNT_BITFIELD.screenSize = 0;
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+
+ if (IsDoubleBattle() && !IsContest())
+ {
+ if (GetBankIdentity(gAnimBankAttacker) == 3 || GetBankIdentity(gAnimBankAttacker) == 0)
+ {
+ if (IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2) == TRUE)
+ {
+ gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].oam.priority--;
+ REG_BG1CNT_BITFIELD.priority = 1;
+ var0 = 1;
+ }
+ }
+ }
+
+ if (IsContest())
+ {
+ species = EWRAM_19348;
+ }
+ else
+ {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ species = GetMonData(&gEnemyParty[gBattlePartyID[gAnimBankAttacker]], MON_DATA_SPECIES);
+ else
+ species = GetMonData(&gPlayerParty[gBattlePartyID[gAnimBankAttacker]], MON_DATA_SPECIES);
+ }
+
+ spriteId = GetAnimBankSpriteId(0);
+ newSpriteId = sub_807A4A0(gAnimBankAttacker, spriteId, species);
+
+ sub_8078914(&subStruct);
+ DmaClear32(3, subStruct.field_4, 0x1000);
+ LZDecompressVram(&gUnknown_08D1D574, subStruct.field_4);
+ LZDecompressVram(&gUnknown_08D1D410, subStruct.field_0);
+ LoadCompressedPalette(&gUnknown_08D1D54C, subStruct.field_8 << 4, 32);
+
+ gBattle_BG1_X = -gSprites[spriteId].pos1.x + 96;
+ gBattle_BG1_Y = -gSprites[spriteId].pos1.y + 32;
+ paletteNum = 16 + gSprites[spriteId].oam.paletteNum;
+
+ if (gBattleAnimArgs[1] == 0)
+ sub_8079108(paletteNum, FALSE);
+ else
+ BlendPalette(paletteNum * 16, 16, 11, gBattleAnimArgs[2]);
+
+ gTasks[taskId].data[0] = newSpriteId;
+ gTasks[taskId].data[1] = gBattleAnimArgs[0];
+ gTasks[taskId].data[2] = gBattleAnimArgs[1];
+ gTasks[taskId].data[3] = gBattleAnimArgs[2];
+ gTasks[taskId].data[6] = var0;
+ gTasks[taskId].func = sub_80E0CD0;
+}
+
+static void sub_80E0CD0(u8 taskId)
+{
+ struct Struct_sub_8078914 subStruct;
+ u16 paletteNum;
+ u8 spriteId;
+ u8 taskIdCopy = taskId;
+
+ gTasks[taskIdCopy].data[10] += 4;
+ gBattle_BG1_X -= 4;
+
+ if (gTasks[taskIdCopy].data[10] == 128)
+ {
+ gTasks[taskIdCopy].data[10] = 0;
+ gBattle_BG1_X += 128;
+
+ if (++gTasks[taskIdCopy].data[11] == 2)
+ {
+ sub_8076464(0);
+ gBattle_WIN0H = 0;
+ gBattle_WIN0V = 0;
+ REG_WININ = 0x3F3F;
+ REG_WINOUT = 0x3F3F;
+
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
+
+ REG_DISPCNT ^= DISPCNT_OBJWIN_ON;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+
+ spriteId = GetAnimBankSpriteId(0);
+ paletteNum = 16 + gSprites[spriteId].oam.paletteNum;
+ if (gTasks[taskIdCopy].data[1] == 0)
+ sub_8079108(paletteNum, 1);
+
+ DestroySprite(&gSprites[gTasks[taskIdCopy].data[0]]);
+ sub_8078914(&subStruct);
+ DmaClear32(3, subStruct.field_4, 0x800);
+
+ if (gTasks[taskIdCopy].data[6] == 1)
+ {
+ gSprites[gBankSpriteIds[gAnimBankAttacker ^ 2]].oam.priority++;
+ }
+
+ DestroyAnimVisualTask(taskIdCopy);
+ }
+ }
+}
+
+void sub_80E0E24(u8 taskId)
+{
+ u8 spriteId;
+ u8 bank;
+ bool8 calcSpriteId = FALSE;
+ u8 identity = 0;
+
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ case 1:
+ case 2:
+ case 3:
+ spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ break;
+ case 4:
+ identity = IDENTITY_PLAYER_MON1;
+ calcSpriteId = TRUE;
+ break;
+ case 5:
+ identity = IDENTITY_PLAYER_MON2;
+ calcSpriteId = TRUE;
+ break;
+ case 6:
+ identity = IDENTITY_OPPONENT_MON1;
+ calcSpriteId = TRUE;
+ break;
+ case 7:
+ identity = IDENTITY_OPPONENT_MON2;
+ calcSpriteId = TRUE;
+ break;
+ default:
+ spriteId = 0xFF;
+ break;
+ }
+
+ if (calcSpriteId)
+ {
+ bank = GetBankByIdentity(identity);
+ if (IsAnimBankSpriteVisible(bank))
+ spriteId = gBankSpriteIds[bank];
+ else
+ spriteId = 0xFF;
+ }
+
+ if (spriteId != 0xFF)
+ sub_8079108(gSprites[spriteId].oam.paletteNum + 16, gBattleAnimArgs[1]);
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80E0EE8(u8 taskId)
+{
+ if (gAnimMoveTurn < 2)
+ gBattleAnimArgs[7] = 0;
+
+ if (gAnimMoveTurn == 2)
+ gBattleAnimArgs[7] = 1;
+
+ DestroyAnimVisualTask(taskId);
+}
diff --git a/src/battle/anim/dragon.c b/src/battle/anim/dragon.c
index bf39e01c0..dc2c0bc50 100644
--- a/src/battle/anim/dragon.c
+++ b/src/battle/anim/dragon.c
@@ -19,7 +19,7 @@ extern u8 gBankAttacker;
extern u16 gBattle_BG1_X;
extern u16 gBattle_BG2_X;
extern u16 gUnknown_03000730[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
// Outrage
@@ -68,7 +68,7 @@ void sub_80DF63C(struct Sprite *sprite)
StartSpriteAnim(sprite, 1);
}
sprite->data[0] = gBattleAnimArgs[4];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
}
diff --git a/src/battle/anim/draw.c b/src/battle/anim/draw.c
index f9e505bf2..be3a280af 100644
--- a/src/battle/anim/draw.c
+++ b/src/battle/anim/draw.c
@@ -59,7 +59,6 @@ void sub_80D0C88(u8 taskId)
task->func = sub_80D0D68;
}
-#ifdef NONMATCHING
void sub_80D0D68(u8 taskId)
{
struct Task* task = &gTasks[taskId];
@@ -99,126 +98,13 @@ void sub_80D0D68(u8 taskId)
if (++task->data[3] >= task->data[15])
{
- gScanlineEffect.unk15 = 3;
+ gScanlineEffect.state = 3;
DestroyAnimVisualTask(taskId);
}
}
break;
}
}
-#else
-__attribute__((naked))
-void sub_80D0D68(u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4,lr}\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- lsls r0, r4, 2\n\
- adds r0, r4\n\
- lsls r0, 3\n\
- ldr r1, _080D0D88 @ =gTasks\n\
- adds r3, r0, r1\n\
- movs r1, 0x10\n\
- ldrsh r0, [r3, r1]\n\
- cmp r0, 0\n\
- beq _080D0D8C\n\
- cmp r0, 0x1\n\
- beq _080D0DA2\n\
- b _080D0E22\n\
- .align 2, 0\n\
-_080D0D88: .4byte gTasks\n\
-_080D0D8C:\n\
- ldrh r0, [r3, 0x12]\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x12]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x14\n\
- ble _080D0E22\n\
- ldrh r0, [r3, 0x10]\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0x10]\n\
- b _080D0E22\n\
-_080D0DA2:\n\
- ldrh r0, [r3, 0xA]\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0xA]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x3\n\
- ble _080D0E22\n\
- movs r0, 0\n\
- strh r0, [r3, 0xA]\n\
- ldrh r1, [r3, 0xE]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- strh r0, [r3, 0xC]\n\
- ldrh r0, [r3, 0x8]\n\
- subs r0, r1\n\
- strh r0, [r3, 0x12]\n\
- movs r2, 0xC\n\
- ldrsh r1, [r3, r2]\n\
- cmp r1, 0x1\n\
- beq _080D0DD8\n\
- cmp r1, 0x1\n\
- ble _080D0DE0\n\
- cmp r1, 0x2\n\
- beq _080D0DDC\n\
- cmp r1, 0x3\n\
- beq _080D0DDC\n\
- b _080D0DE0\n\
-_080D0DD8:\n\
- subs r0, 0x2\n\
- b _080D0DDE\n\
-_080D0DDC:\n\
- adds r0, 0x1\n\
-_080D0DDE:\n\
- strh r0, [r3, 0x12]\n\
-_080D0DE0:\n\
- movs r1, 0x12\n\
- ldrsh r0, [r3, r1]\n\
- cmp r0, 0\n\
- blt _080D0E04\n\
- ldr r2, _080D0E28 @ =gScanlineEffectRegBuffers\n\
- lsls r0, 1\n\
- adds r0, r2\n\
- ldrh r1, [r3, 0x14]\n\
- strh r1, [r0]\n\
- movs r1, 0x12\n\
- ldrsh r0, [r3, r1]\n\
- lsls r0, 1\n\
- movs r1, 0xF0\n\
- lsls r1, 3\n\
- adds r2, r1\n\
- adds r0, r2\n\
- ldrh r1, [r3, 0x14]\n\
- strh r1, [r0]\n\
-_080D0E04:\n\
- ldrh r0, [r3, 0xE]\n\
- adds r0, 0x1\n\
- strh r0, [r3, 0xE]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- movs r2, 0x26\n\
- ldrsh r1, [r3, r2]\n\
- cmp r0, r1\n\
- blt _080D0E22\n\
- ldr r1, _080D0E2C @ =gScanlineEffect\n\
- movs r0, 0x3\n\
- strb r0, [r1, 0x15]\n\
- adds r0, r4, 0\n\
- bl DestroyAnimVisualTask\n\
-_080D0E22:\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080D0E28: .4byte gScanlineEffectRegBuffers\n\
-_080D0E2C: .4byte gScanlineEffect\n\
-.syntax divided\n");
-}
-#endif
void sub_80D0E30(struct Sprite* sprite)
{
diff --git a/src/battle/anim/drum.c b/src/battle/anim/drum.c
index 6306778ae..7937d040a 100644
--- a/src/battle/anim/drum.c
+++ b/src/battle/anim/drum.c
@@ -27,6 +27,6 @@ void sub_80CEDF0(struct Sprite* sprite)
sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + a;
sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + 8;
sprite->data[0] = 8;
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/egg.c b/src/battle/anim/egg.c
index 8004b3bf5..b3de1dbb1 100644
--- a/src/battle/anim/egg.c
+++ b/src/battle/anim/egg.c
@@ -22,7 +22,7 @@ static void sub_80D158C(struct Sprite* sprite);
void sub_80D1368(struct Sprite* sprite)
{
s16 r1;
- sub_80787B0(sprite, 0);
+ InitAnimSpritePos(sprite, 0);
r1 = (GetBankSide(gAnimBankAttacker)) ? -0xA0 : 0xA0;
sprite->data[0] = 0x380;
sprite->data[1] = r1;
diff --git a/src/battle/anim/energy_wave.c b/src/battle/anim/energy_wave.c
index 15045f5bd..8111f70a3 100644
--- a/src/battle/anim/energy_wave.c
+++ b/src/battle/anim/energy_wave.c
@@ -20,7 +20,7 @@ static void sub_80D370C(struct Sprite *);
void sub_80D3554(struct Sprite *sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[0] = 30;
sprite->data[1] = sprite->pos1.x;
@@ -28,7 +28,7 @@ void sub_80D3554(struct Sprite *sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
sprite->data[5] = 0xD200 / sprite->data[0];
sprite->data[7] = gBattleAnimArgs[3];
@@ -49,7 +49,7 @@ void sub_80D3554(struct Sprite *sprite)
static void sub_80D35DC(struct Sprite *sprite)
{
- if (sub_8078B5C(sprite))
+ if (TranslateAnimSpriteByDeltas(sprite))
{
DestroyAnimSprite(sprite);
}
@@ -147,7 +147,7 @@ void sub_80D3728(struct Sprite *sprite)
else
var2 = 1;
- sub_80787B0(sprite, var1);
+ InitAnimSpritePos(sprite, var1);
if (GetBankSide(gAnimBankAttacker) != 0)
{
@@ -157,6 +157,6 @@ void sub_80D3728(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(gAnimBankTarget, var2) + gBattleAnimArgs[3];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/fight.c b/src/battle/anim/fight.c
new file mode 100644
index 000000000..0f46187f2
--- /dev/null
+++ b/src/battle/anim/fight.c
@@ -0,0 +1,664 @@
+#include "global.h"
+#include "battle_anim.h"
+#include "random.h"
+#include "rom_8077ABC.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/battle_constants.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gBankAttacker;
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u8 gBankSpriteIds[];
+extern u8 gBanksBySide[];
+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 gBattle_WIN0H;
+extern u16 gBattle_WIN0V;
+extern u16 gBattlePartyID[];
+extern u8 gAnimMoveTurn;
+
+extern struct SpriteTemplate gBasicHitSplatSpriteTemplate;
+
+static void sub_80D927C(struct Sprite *sprite);
+static void sub_80D9328(struct Sprite *sprite);
+static void sub_80D9404(struct Sprite *sprite);
+static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite);
+static void AnimStompFootStep(struct Sprite *sprite);
+static void AnimStompFootEnd(struct Sprite *sprite);
+static void sub_80D9640(struct Sprite *sprite);
+static void sub_80D97A0(struct Sprite *sprite);
+static void sub_80D986C(struct Sprite *sprite);
+static void sub_80D9934(struct Sprite *sprite);
+static void sub_80D99F4(struct Sprite *sprite);
+
+
+void sub_080B08A0(struct Sprite *sprite)
+{
+ sub_807867C(sprite, gBattleAnimArgs[0]);
+ sprite->pos1.y += gBattleAnimArgs[1];
+ sprite->data[0] = 15;
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_80D902C(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[7] == 1 && GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[6]);
+ gBattleAnimArgs[6] = 0;
+ sub_8079534(sprite);
+}
+
+void sub_80D9078(struct Sprite *sprite)
+{
+ if (IsContest())
+ {
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ gBattleAnimArgs[3] = -gBattleAnimArgs[3];
+ }
+
+ sub_80D902C(sprite);
+}
+
+// Displays a basic fist or foot sprite for a given duration.
+// Used by many fighting moves (and elemental "punch" moves).
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: duration
+// arg 3: ? (todo: related to initial pixel offsets)
+// arg 4: anim num
+void AnimBasicFistOrFoot(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[4]);
+
+ if (gBattleAnimArgs[3] == 0)
+ InitAnimSpritePos(sprite, 1);
+ else
+ sub_8078764(sprite, 1);
+
+ sprite->data[0] = gBattleAnimArgs[2];
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_80D90F4(struct Sprite *sprite)
+{
+ u8 bank;
+ s16 xMod, yMod;
+ s16 x, y;
+
+ if (gBattleAnimArgs[0] == 0)
+ bank = gAnimBankAttacker;
+ else
+ bank = gAnimBankTarget;
+
+ if (gBattleAnimArgs[2] < 0)
+ gBattleAnimArgs[2] = Random() % 5;
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[2]);
+ sprite->pos1.x = GetBankPosition(bank, 2);
+ sprite->pos1.y = GetBankPosition(bank, 3);
+
+ xMod = sub_807A100(bank, 1) / 2;
+ yMod = sub_807A100(bank, 0) / 4;
+
+ x = Random() % xMod;
+ y = Random() % yMod;
+
+ if (Random() & 1)
+ x *= -1;
+ if (Random() & 1)
+ y *= -1;
+
+ if ((gBanksBySide[bank] & 1) == 0)
+ y += 0xFFF0;
+
+ sprite->pos1.x += x;
+ sprite->pos1.y += y;
+
+ sprite->data[0] = gBattleAnimArgs[1];
+ sprite->data[7] = CreateSprite(&gBasicHitSplatSpriteTemplate, sprite->pos1.x, sprite->pos1.y, sprite->subpriority + 1);
+ if (sprite->data[7] != 64)
+ {
+ StartSpriteAffineAnim(&gSprites[sprite->data[7]], 0);
+ gSprites[sprite->data[7]].callback = SpriteCallbackDummy;
+ }
+
+ sprite->callback = sub_80D927C;
+}
+
+static void sub_80D927C(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ if (sprite->data[7] != 64)
+ {
+ FreeOamMatrix(gSprites[sprite->data[7]].oam.matrixNum);
+ DestroySprite(&gSprites[sprite->data[7]]);
+ }
+
+ DestroyAnimSprite(sprite);
+ }
+ else
+ {
+ sprite->data[0]--;
+ }
+}
+
+void sub_80D92D0(struct Sprite *sprite)
+{
+ sub_8078764(sprite, 1);
+ sprite->data[0] = 30;
+
+ if (gBattleAnimArgs[2] == 0)
+ {
+ sprite->data[2] = sprite->pos1.x - 20;
+ }
+ else
+ {
+ sprite->data[2] = sprite->pos1.x + 20;
+ sprite->hFlip = 1;
+ }
+
+ sprite->data[4] = sprite->pos1.y - 20;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(sprite, sub_80D9328);
+}
+
+static void sub_80D9328(struct Sprite *sprite)
+{
+ if (++sprite->data[5] == 11)
+ {
+ sprite->data[2] = sprite->pos1.x - sprite->pos2.x;
+ sprite->data[4] = sprite->pos1.y - sprite->pos2.y;
+ sprite->data[0] = 8;
+ sprite->pos1.x += sprite->pos2.x;
+ sprite->pos1.y += sprite->pos2.y;
+ sprite->pos2.y = 0;
+ sprite->pos2.x = 0;
+
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ }
+}
+
+void sub_80D9378(struct Sprite *sprite)
+{
+ if ((gAnimBankAttacker ^ 2) == gAnimBankTarget && GetBankIdentity(gAnimBankTarget) < 2)
+ gBattleAnimArgs[0] *= -1;
+
+ sub_8078764(sprite, 1);
+
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sprite->pos1.y;
+
+ InitAnimSpriteTranslationDeltas(sprite);
+
+ sprite->data[5] = gBattleAnimArgs[5];
+ sprite->data[6] = gBattleAnimArgs[4];
+ sprite->data[7] = 0;
+
+ sprite->callback = sub_80D9404;
+}
+
+static void sub_80D9404(struct Sprite *sprite)
+{
+ if (!TranslateAnimSpriteByDeltas(sprite))
+ {
+ sprite->pos2.y += Sin(sprite->data[7] >> 8, sprite->data[5]);
+ sprite->data[7] += sprite->data[6];
+ }
+ else
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+// Animates the spinning, shrinking kick or punch, which then
+// reappears at full size. Used by moves such as MOVE_MEGA_PUNCH and MOVE_MEGA_KICK.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: anim num
+// arg 3: spin duration
+void AnimSpinningKickOrPunch(struct Sprite *sprite)
+{
+ sub_8078764(sprite, 1);
+ StartSpriteAnim(sprite, gBattleAnimArgs[2]);
+ sprite->data[0] = gBattleAnimArgs[3];
+
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData(sprite, AnimSpinningKickOrPunchFinish);
+}
+
+static void AnimSpinningKickOrPunchFinish(struct Sprite *sprite)
+{
+ StartSpriteAffineAnim(sprite, 0);
+ sprite->affineAnimPaused = 1;
+ sprite->data[0] = 20;
+
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+// Animates MOVE_STOMP's foot that slides downward.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: initial wait duration
+void AnimStompFoot(struct Sprite *sprite)
+{
+ sub_8078764(sprite, 1);
+ sprite->data[0] = gBattleAnimArgs[2];
+
+ sprite->callback = AnimStompFootStep;
+}
+
+static void AnimStompFootStep(struct Sprite *sprite)
+{
+ if (--sprite->data[0] == -1)
+ {
+ sprite->data[0] = 6;
+ sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
+ sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
+
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(sprite, AnimStompFootEnd);
+ }
+}
+
+static void AnimStompFootEnd(struct Sprite *sprite)
+{
+ sprite->data[0] = 15;
+
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_80D9540(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ sub_8078764(sprite, 1);
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[3];
+ sprite->data[0]++;
+ }
+ else
+ {
+ sprite->data[4] += sprite->data[1];
+ sprite->pos2.x = sprite->data[4] >> 8;
+ sprite->pos2.y = Sin(sprite->data[3], sprite->data[2]);
+ sprite->data[3] = (sprite->data[3] + 3) & 0xFF;
+
+ if (sprite->data[3] > 100)
+ sprite->invisible = sprite->data[3] % 2;
+
+ if (sprite->data[3] > 120)
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void sub_80D95D0(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1);
+ }
+ else
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0);
+ sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1);
+ }
+
+ sprite->pos1.x += gBattleAnimArgs[1];
+ sprite->pos1.y += gBattleAnimArgs[2];
+
+ sprite->data[0] = 0;
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = 0;
+ sprite->callback = sub_80D9640;
+}
+
+static void sub_80D9640(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (--sprite->data[1] == 0)
+ {
+ if (sprite->data[2] == 0)
+ DestroyAnimSprite(sprite);
+ else
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 1)
+ {
+ sprite->data[1] = 0;
+ sprite->data[3]++;
+ if (sprite->data[3] & 1)
+ sprite->pos2.x = 2;
+ else
+ sprite->pos2.x = -2;
+ }
+
+ if (--sprite->data[2] == 0)
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
+
+void sub_80D96B8(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[2];
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[3];
+ }
+ else
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0) + gBattleAnimArgs[2];
+ sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1) + gBattleAnimArgs[3];
+ }
+
+ sprite->oam.tileNum += gBattleAnimArgs[1] * 16;
+ sprite->data[0] = 0;
+
+ switch (gBattleAnimArgs[1])
+ {
+ case 0:
+ sprite->data[6] = -3;
+ sprite->data[7] = -3;
+ break;
+ case 1:
+ sprite->data[6] = 3;
+ sprite->data[7] = -3;
+ break;
+ case 2:
+ sprite->data[6] = -3;
+ sprite->data[7] = 3;
+ break;
+ case 3:
+ sprite->data[6] = 3;
+ sprite->data[7] = 3;
+ break;
+ default:
+ DestroyAnimSprite(sprite);
+ return;
+ }
+
+ sprite->callback = sub_80D97A0;
+}
+
+static void sub_80D97A0(struct Sprite *sprite)
+{
+ sprite->pos1.x += sprite->data[6];
+ sprite->pos1.y += sprite->data[7];
+
+ if (++sprite->data[0] > 40)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D97CC(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBankPosition(gBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gBankAttacker, 3);
+ sprite->oam.priority = sub_8079ED4(gAnimBankAttacker);
+ sprite->data[7] = gAnimBankTarget;
+ }
+ else
+ {
+ sprite->oam.priority = sub_8079ED4(gAnimBankTarget);
+ sprite->data[7] = gAnimBankAttacker;
+ }
+
+ sprite->data[0] = 0;
+ sprite->data[1] = 12;
+ sprite->data[2] = 8;
+ sprite->callback = sub_80D986C;
+}
+
+static void sub_80D986C(struct Sprite *sprite)
+{
+ if (++sprite->data[0] == 180)
+ {
+ REG_BLDCNT = 0;
+
+ sprite->data[0] = 16;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBankPosition(sprite->data[7], 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBankPosition(sprite->data[7], 3);
+
+ InitAnimSpriteTranslationDeltas(sprite);
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = TranslateAnimSpriteByDeltasUntil;
+ }
+}
+
+void sub_80D98D8(struct Sprite *sprite)
+{
+ sprite->pos1.x = gBattleAnimArgs[0];
+ sprite->pos1.y = 120;
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sub_8079BF4(&sprite->data[4], &sprite->data[5], (void *)(sprite->pos1.y << 8));
+
+ sprite->data[6] = gBattleAnimArgs[1];
+ sprite->oam.tileNum += gBattleAnimArgs[2] * 4;
+
+ sprite->callback = sub_80D9934;
+}
+
+static void sub_80D9934(struct Sprite *sprite)
+{
+ void *var0;
+
+ if (sprite->data[0] != 0)
+ {
+ var0 = sub_8079BFC(sprite->data[4], sprite->data[5]);
+ var0 -= sprite->data[6];
+ sub_8079BF4(&sprite->data[4], &sprite->data[5], var0);
+
+ var0 = (void *)(((intptr_t)var0) >> 8);
+ sprite->pos1.y = (intptr_t)var0;
+ if (sprite->pos1.y < -8)
+ DestroyAnimSprite(sprite);
+ else
+ sprite->data[0]--;
+ }
+ else
+ {
+ s16 pos0 = GetBankPosition(gAnimBankAttacker, 2);
+ s16 pos1 = GetBankPosition(gAnimBankAttacker, 3);
+ s16 pos2 = GetBankPosition(gAnimBankTarget, 2);
+ s16 pos3 = GetBankPosition(gAnimBankTarget, 3);
+
+ sprite->data[0] = pos2 - pos0;
+ sprite->data[1] = pos3 - pos1;
+ sprite->data[2] = sprite->pos1.x << 4;
+ sprite->data[3] = sprite->pos1.y << 4;
+
+ sprite->callback = sub_80D99F4;
+ }
+}
+
+static void sub_80D99F4(struct Sprite *sprite)
+{
+ u16 edgeX;
+
+ sprite->data[2] += sprite->data[0];
+ sprite->data[3] += sprite->data[1];
+ sprite->pos1.x = sprite->data[2] >> 4;
+ sprite->pos1.y = sprite->data[3] >> 4;
+
+ edgeX = sprite->pos1.x + 8;
+ if (edgeX > 256 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80D9A38(struct Sprite *sprite)
+{
+ u8 bank;
+
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBankPosition(gBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gBankAttacker, 3);
+ bank = gAnimBankTarget;
+ sprite->oam.priority = sub_8079ED4(gAnimBankAttacker);
+ }
+ else
+ {
+ bank = gAnimBankAttacker;
+ sprite->oam.priority = sub_8079ED4(gAnimBankTarget);
+ }
+
+ if (IsContest())
+ sprite->oam.matrixNum |= 0x8;
+ else if (GetBankSide(bank) == SIDE_PLAYER)
+ sprite->oam.matrixNum |= 0x18;
+
+ sprite->data[0] = 16;
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = GetBankPosition(bank, 2);
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = GetBankPosition(bank, 3);
+
+ InitAnimSpriteTranslationDeltas(sprite);
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ sprite->callback = TranslateAnimSpriteByDeltasUntil;
+}
+
+static void sub_80D9B24(struct Sprite *sprite)
+{
+ if (sprite->data[0] == sprite->data[4])
+ DestroyAnimSprite(sprite);
+
+ sprite->data[0]++;
+}
+
+void sub_80D9B48(struct Sprite *sprite)
+{
+ u8 turn;
+
+ sprite->pos1.x = GetBankPosition(gAnimBankTarget, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankTarget, 3);
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->data[2] = gBattleAnimArgs[0];
+ sprite->data[3] = gBattleAnimArgs[1];
+ sprite->data[4] = gBattleAnimArgs[2];
+
+ turn = gAnimMoveTurn;
+ if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER)
+ turn++;
+
+ if (turn & 1)
+ {
+ sprite->data[2] = -sprite->data[2];
+ sprite->data[1]++;
+ }
+
+ StartSpriteAnim(sprite, sprite->data[1]);
+ sprite->pos2.x = sprite->data[2];
+ sprite->pos2.y = sprite->data[3];
+ sprite->callback = sub_80D9B24;
+}
+
+void sub_80D9BD4(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, 0);
+ else
+ sub_8078764(sprite, 0);
+
+ if (IsContest())
+ {
+ StartSpriteAnim(sprite, 2);
+ }
+ else if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ {
+ StartSpriteAnim(sprite, 1);
+ }
+
+ sprite->callback = sub_8078600;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_80D9C40(struct Sprite *sprite)
+{
+ if (sprite->affineAnimEnded)
+ {
+ sprite->data[1] = (sprite->data[1] + 40) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data[1], 2);
+
+ if (++sprite->data[0] > 40)
+ {
+ DestroyAnimSprite(sprite);
+ }
+ }
+}
+
+void sub_80D9C80(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_80789D4(0);
+ task->data[8] = gBattleAnimArgs[0];
+ task->data[0]++;
+ break;
+ case 1:
+ if (--task->data[8] == -1)
+ task->data[0]++;
+ break;
+ case 2:
+ default:
+ task->data[9] += 1280;
+ break;
+ }
+
+ task->data[10] += 2816;
+
+ if (GetBankSide(gAnimBankTarget) == SIDE_PLAYER)
+ gBattle_BG3_X += task->data[9] >> 8;
+ else
+ gBattle_BG3_X -= task->data[9] >> 8;
+
+ gBattle_BG3_Y += task->data[10] >> 8;
+
+ task->data[9] &= 0xFF;
+ task->data[10] &= 0xFF;
+
+ if (gBattleAnimArgs[7] == -1)
+ {
+ gBattle_BG3_X = 0;
+ gBattle_BG3_Y = 0;
+ sub_80789D4(1);
+ DestroyAnimVisualTask(taskId);
+ }
+}
diff --git a/src/battle/anim/fire_2.c b/src/battle/anim/fire_2.c
index 4d577a765..f9c9b6d3b 100644
--- a/src/battle/anim/fire_2.c
+++ b/src/battle/anim/fire_2.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle.h"
#include "battle_anim.h"
#include "heated_rock.h"
#include "rom_8077ABC.h"
@@ -11,24 +12,34 @@ extern u8 gAnimBankTarget;
extern struct SpriteTemplate gSpriteTemplate_83D96C4;
extern s16 gHeatedRockCoords[7][2];
-void sub_80D5254(struct Sprite *);
-void sub_80D5348(struct Sprite *);
-void sub_80D52AC(struct Sprite *);
-void sub_80D5324(struct Sprite *);
+static void AnimFireRingStep1(struct Sprite *);
+static void UpdateFireRingCircleOffset(struct Sprite *);
+static void AnimFireRingStep2(struct Sprite *);
+static void AnimFireRingStep3(struct Sprite *);
void sub_80D53F4(struct Sprite *);
void sub_80D541C(struct Sprite *);
void sub_80D54E0(u8 taskId);
void sub_80D57C4(u8 spriteId, u8 taskId, u8 a3);
-void sub_80D51A8(struct Sprite *sprite)
+
+// Animates the secondary effect of MOVE_EMBER, where the flames grow and slide
+// horizontally a bit.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+// arg 5: ? (todo: something related to which mon the pixel offsets are based on)
+// arg 6: ? (todo: something related to which mon the pixel offsets are based on)
+void AnimEmberFlare(struct Sprite *sprite)
{
if (GetBankSide(gAnimBankAttacker) == GetBankSide(gAnimBankTarget)
- && (gAnimBankAttacker == GetBankByIdentity(2)
- || gAnimBankAttacker == GetBankByIdentity(3)))
+ && (gAnimBankAttacker == GetBankByIdentity(IDENTITY_PLAYER_MON2)
+ || gAnimBankAttacker == GetBankByIdentity(IDENTITY_OPPONENT_MON2)))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->callback = sub_8079534;
- sub_8079534(sprite);
+ sprite->callback(sprite);
}
struct Sprite *sub_80D5210(struct Sprite *sprite)
@@ -40,19 +51,26 @@ struct Sprite *sub_80D5210(struct Sprite *sprite)
return sprite;
}
-void sub_80D522C(struct Sprite *sprite)
+// Animates the a fire sprite in the first-half of the MOVE_FIRE_BLAST
+// animation. The fire sprite first moves in a circle around the mon,
+// and then it is translated towards the target mon, while still rotating.
+// Lastly, it moves in a circle around the target mon.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: initial wave offset
+void AnimFireRing(struct Sprite *sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[7] = gBattleAnimArgs[2];
sprite->data[0] = 0;
- sprite->callback = sub_80D5254;
+ sprite->callback = AnimFireRingStep1;
}
-void sub_80D5254(struct Sprite *sprite)
+static void AnimFireRingStep1(struct Sprite *sprite)
{
- sub_80D5348(sprite);
+ UpdateFireRingCircleOffset(sprite);
if (++sprite->data[0] == 0x12)
{
@@ -62,15 +80,15 @@ void sub_80D5254(struct Sprite *sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
- sprite->callback = sub_80D52AC;
+ sprite->callback = AnimFireRingStep2;
}
}
-void sub_80D52AC(struct Sprite *sprite)
+static void AnimFireRingStep2(struct Sprite *sprite)
{
- if (sub_8078B5C(sprite))
+ if (TranslateAnimSpriteByDeltas(sprite))
{
sprite->data[0] = 0;
@@ -79,8 +97,8 @@ void sub_80D52AC(struct Sprite *sprite)
sprite->pos2.y = 0;
sprite->pos2.x = 0;
- sprite->callback = sub_80D5324;
- sub_80D5324(sprite);
+ sprite->callback = AnimFireRingStep3;
+ sprite->callback(sprite);
}
else
{
@@ -91,15 +109,15 @@ void sub_80D52AC(struct Sprite *sprite)
}
}
-void sub_80D5324(struct Sprite *sprite)
+static void AnimFireRingStep3(struct Sprite *sprite)
{
- sub_80D5348(sprite);
+ UpdateFireRingCircleOffset(sprite);
if (++sprite->data[0] == 0x1F)
DestroyAnimSprite(sprite);
}
-void sub_80D5348(struct Sprite *sprite)
+static void UpdateFireRingCircleOffset(struct Sprite *sprite)
{
sprite->pos2.x = Sin(sprite->data[7], 28);
sprite->pos2.y = Cos(sprite->data[7], 28);
@@ -107,7 +125,12 @@ void sub_80D5348(struct Sprite *sprite)
sprite->data[7] = (sprite->data[7] + 20) & 0xFF;
}
-void sub_80D5374(struct Sprite *sprite)
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: duration
+// arg 3: x delta
+// arg 4: y delta
+void AnimFireCross(struct Sprite *sprite)
{
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -118,18 +141,18 @@ void sub_80D5374(struct Sprite *sprite)
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- sprite->callback = sub_8078364;
+ sprite->callback = TranslateSpriteOverDuration;
}
void sub_80D53B4(struct Sprite *sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[1] = gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[3];
sprite->invisible = TRUE;
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, sub_80D53F4);
}
diff --git a/src/battle/anim/flying_hearts.c b/src/battle/anim/flying_hearts.c
index d2d22602a..f20416535 100644
--- a/src/battle/anim/flying_hearts.c
+++ b/src/battle/anim/flying_hearts.c
@@ -19,7 +19,7 @@ void sub_80D2064(struct Sprite* sprite)
sprite->pos1.y = 0xA0;
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[1];
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, sub_80D2094);
}
diff --git a/src/battle/anim/flying_path.c b/src/battle/anim/flying_path.c
index 441ac0e6d..70c418afc 100644
--- a/src/battle/anim/flying_path.c
+++ b/src/battle/anim/flying_path.c
@@ -40,7 +40,7 @@ void sub_80CBDF4(u8 taskId)
gSprites[task->data[2]].data[3] = task->data[9];
gSprites[task->data[2]].data[4] = task->data[7] + (task->data[11] / 2 + 10) * task->data[5];
gSprites[task->data[2]].data[5] = sub_80CC338(&gSprites[task->data[2]]);
- sub_80786EC(&gSprites[task->data[2]]);
+ InitAnimSpriteTranslationOverDuration(&gSprites[task->data[2]]);
task->func = sub_80CBF5C;
}
@@ -53,7 +53,7 @@ void sub_80CBF5C(u8 taskId)
{
case 4:
sub_80CC358(task, taskId);
- if (sub_8078718(sprite) == 0)
+ if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
{
break;
}
@@ -65,7 +65,7 @@ void sub_80CBF5C(u8 taskId)
break;
case 8:
sub_80CC358(task, taskId);
- if (sub_8078718(sprite) == 0)
+ if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
{
break;
}
@@ -77,7 +77,7 @@ void sub_80CBF5C(u8 taskId)
break;
case 0:
sub_80CC358(task, taskId);
- if (sub_8078718(sprite) == 0)
+ if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
break;
task->data[15] = 1;
@@ -98,12 +98,12 @@ void sub_80CBF5C(u8 taskId)
task->data[3] = a;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
task->data[0]++;
break;
case 2:
sub_80CC358(task, taskId);
- if (sub_8078718(sprite) == 0)
+ if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
break;
task->data[15] = 3;
@@ -123,7 +123,7 @@ void sub_80CBF5C(u8 taskId)
task->data[3] = 2;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
task->data[0]++;
break;
case 5:
@@ -141,12 +141,12 @@ void sub_80CBF5C(u8 taskId)
task->data[3] = 3;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
task->data[0]++;
break;
case 6:
sub_80CC358(task, taskId);
- if (sub_8078718(sprite) == 0)
+ if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
break;
task->data[15] = 7;
@@ -167,7 +167,7 @@ void sub_80CBF5C(u8 taskId)
task->data[3] = 4;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
task->data[0]++;
break;
case 9:
@@ -184,12 +184,12 @@ void sub_80CBF5C(u8 taskId)
task->data[3] = 5;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
task->data[0]++;
break;
case 10:
sub_80CC358(task, taskId);
- if (sub_8078718(sprite) == 0)
+ if (TranslateAnimSpriteLinearAndSine(sprite) == 0)
{
break;
}
@@ -215,13 +215,13 @@ void sub_80CBF5C(u8 taskId)
task->data[3] = 6;
sprite->subpriority = task->data[4];
StartSpriteAnim(sprite, task->data[3]);
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
task->data[0]++;
break;
}
case 12:
sub_80CC358(task, taskId);
- if (sub_8078718(sprite) != 0)
+ if (TranslateAnimSpriteLinearAndSine(sprite) != 0)
{
DestroySprite(sprite);
task->data[0]++;
diff --git a/src/battle/anim/glitter.c b/src/battle/anim/glitter.c
index e4577f1e1..e6c101de3 100644
--- a/src/battle/anim/glitter.c
+++ b/src/battle/anim/glitter.c
@@ -35,7 +35,7 @@ void sub_80CD190(struct Sprite* sprite)
if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2))
{
- sub_807A3FC(bank, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(bank, gBattleAnimArgs[6], &sprite->pos1.x, &sprite->pos1.y);
sub_807867C(sprite, gBattleAnimArgs[0]);
sprite->pos1.y += gBattleAnimArgs[1];
}
diff --git a/src/battle/anim/grip.c b/src/battle/anim/grip.c
index c4d7b1cef..dbf7a1562 100644
--- a/src/battle/anim/grip.c
+++ b/src/battle/anim/grip.c
@@ -33,7 +33,7 @@ void sub_80D0178(struct Sprite* sprite)
sprite->data[0] = 6;
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + r8;
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + r6;
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, sub_80D020C);
}
diff --git a/src/battle/anim/guard.c b/src/battle/anim/guard.c
index 254160109..211e0e841 100644
--- a/src/battle/anim/guard.c
+++ b/src/battle/anim/guard.c
@@ -15,7 +15,7 @@ void sub_80D3014(struct Sprite *sprite)
{
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && IsAnimBankSpriteVisible(gAnimBankAttacker ^ 2))
{
- sub_807A3FC(gAnimBankAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gAnimBankAttacker, 0, &sprite->pos1.x, &sprite->pos1.y);
sprite->pos1.y += 40;
StartSpriteAffineAnim(sprite, 1);
@@ -30,6 +30,6 @@ void sub_80D3014(struct Sprite *sprite)
sprite->data[2] = sprite->pos1.x;
sprite->data[4] = sprite->pos1.y - 72;
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/guillotine.c b/src/battle/anim/guillotine.c
index b3d842cdf..15279d5e2 100644
--- a/src/battle/anim/guillotine.c
+++ b/src/battle/anim/guillotine.c
@@ -37,7 +37,7 @@ void sub_80D0228(struct Sprite* sprite)
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + r9;
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + r6;
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
sprite->data[5] = gBattleAnimArgs[0];
sprite->data[6] = sprite->data[0];
sprite->callback = sub_80D02D0;
@@ -45,7 +45,7 @@ void sub_80D0228(struct Sprite* sprite)
void sub_80D02D0(struct Sprite* sprite)
{
- if (sub_8078B5C(sprite) && sprite->animEnded == 1)
+ if (TranslateAnimSpriteByDeltas(sprite) && sprite->animEnded == 1)
{
SeekSpriteAnim(sprite, 0);
sprite->animPaused = 1;
@@ -85,6 +85,6 @@ void sub_80D0344(struct Sprite* sprite)
void sub_80D03A8(struct Sprite* sprite)
{
- if (sub_8078B5C(sprite) != 0)
+ if (TranslateAnimSpriteByDeltas(sprite) != 0)
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/heart_1.c b/src/battle/anim/heart_1.c
index 5df89f929..857169e62 100644
--- a/src/battle/anim/heart_1.c
+++ b/src/battle/anim/heart_1.c
@@ -14,7 +14,7 @@ extern u8 gAnimBankTarget;
void sub_80D1C80(struct Sprite* sprite)
{
if (++sprite->data[0] == 1)
- sub_80787B0(sprite, 0);
+ InitAnimSpritePos(sprite, 0);
sprite->pos2.x = Sin(sprite->data[1], 8);
sprite->pos2.y = sprite->data[2] >> 8;
diff --git a/src/battle/anim/heated_rock.c b/src/battle/anim/heated_rock.c
index 51cfbd007..055960f40 100644
--- a/src/battle/anim/heated_rock.c
+++ b/src/battle/anim/heated_rock.c
@@ -50,101 +50,25 @@ void sub_80D5994(struct Sprite *sprite, s16 x, s16 y)
sprite->data[5] = y * 8;
}
-#ifdef NONMATCHING
void sub_80D59B0(struct Sprite *sprite)
{
int var1;
- int var2;
-
if (++sprite->data[0] > 2)
{
sprite->data[0] = 0;
++sprite->data[1];
- sprite->data[3] += ((u16)sprite->data[1] * (u16)sprite->data[1]);
+ var1 = (u16)sprite->data[1] * (u16)sprite->data[1];
+ sprite->data[3] += var1;
}
- var1 = (u16)sprite->data[4] + (u16)sprite->data[2];
- sprite->data[2] = var1;
- var1 = (s16)var1 >> 3;
- sprite->pos1.x = var1;
-
- var2 = (u16)sprite->data[5] + (u16)sprite->data[3];
- sprite->data[3] = var2;
- var2 = (s16)var2 >> 3;
- sprite->pos1.y = var2;
+ sprite->data[2] += sprite->data[4];
+ sprite->pos1.x = sprite->data[2] >> 3;
+ sprite->data[3] += sprite->data[5];
+ sprite->pos1.y = sprite->data[3] >> 3;
- if ((u32)((var1 + 8) << 16) > 0x1000000 || var2 < -8 || var2 > 120)
- {
- sprite->invisible = 1;
- }
-}
-#else
-__attribute__((naked))
-void sub_80D59B0(struct Sprite *sprite)
-{
- asm(".syntax unified\n\
- push {lr}\n\
- adds r2, r0, 0\n\
- ldrh r0, [r2, 0x2E]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x2E]\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- cmp r0, 0x2\n\
- ble _080D59DA\n\
- movs r0, 0\n\
- strh r0, [r2, 0x2E]\n\
- ldrh r0, [r2, 0x30]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x30]\n\
- ldrh r0, [r2, 0x30]\n\
- adds r1, r0, 0\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- ldrh r3, [r2, 0x34]\n\
- adds r0, r3\n\
- strh r0, [r2, 0x34]\n\
-_080D59DA:\n\
- ldrh r0, [r2, 0x36]\n\
- ldrh r1, [r2, 0x32]\n\
- adds r0, r1\n\
- strh r0, [r2, 0x32]\n\
- lsls r0, 16\n\
- asrs r0, 19\n\
- strh r0, [r2, 0x20]\n\
- ldrh r1, [r2, 0x38]\n\
- ldrh r3, [r2, 0x34]\n\
- adds r1, r3\n\
- strh r1, [r2, 0x34]\n\
- lsls r1, 16\n\
- asrs r3, r1, 19\n\
- strh r3, [r2, 0x22]\n\
- adds r0, 0x8\n\
- lsls r0, 16\n\
- movs r1, 0x80\n\
- lsls r1, 17\n\
- cmp r0, r1\n\
- bhi _080D5A10\n\
- adds r1, r3, 0\n\
- movs r0, 0x8\n\
- negs r0, r0\n\
- cmp r1, r0\n\
- blt _080D5A10\n\
- cmp r1, 0x78\n\
- ble _080D5A1C\n\
-_080D5A10:\n\
- adds r0, r2, 0\n\
- adds r0, 0x3E\n\
- ldrb r1, [r0]\n\
- movs r2, 0x4\n\
- orrs r1, r2\n\
- strb r1, [r0]\n\
-_080D5A1C:\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ if (sprite->pos1.x < -8 || sprite->pos1.x > 0xf8 || sprite->pos1.y < -8 || sprite->pos1.y > 120)
+ sprite->invisible = TRUE;
}
-#endif // NONMATCHING
void sub_80D5A20(struct Sprite *sprite)
{
diff --git a/src/battle/anim/homing.c b/src/battle/anim/homing.c
index 6fb4a76d8..208d3b831 100644
--- a/src/battle/anim/homing.c
+++ b/src/battle/anim/homing.c
@@ -60,7 +60,7 @@ void sub_80CC6CC(struct Sprite* sprite)
sprite->data[2] = y * 16;
sprite->data[3] = (sprite->data[5] - sprite->pos1.x) * 16 / gBattleAnimArgs[4];
sprite->data[4] = (sprite->data[6] - sprite->pos1.y) * 16 / gBattleAnimArgs[4];
- c = sub_80790F0(sprite->data[5] - x, sprite->data[6] - y);
+ c = ArcTan2Neg(sprite->data[5] - x, sprite->data[6] - y);
if (IsContest())
c -= 0x8000;
diff --git a/src/battle/anim/hop.c b/src/battle/anim/hop.c
index 4006e2d43..0697e83a0 100644
--- a/src/battle/anim/hop.c
+++ b/src/battle/anim/hop.c
@@ -91,7 +91,7 @@ void sub_80CB94C(struct Sprite* sprite)
{
s16 e1;
s16 e2;
- sub_80787B0(sprite, 0);
+ InitAnimSpritePos(sprite, 0);
e1 = GetBankPosition(gAnimBankTarget, 0);
e2 = GetBankPosition(gAnimBankTarget, 1);
if ((gAnimBankAttacker ^ 2) == gAnimBankTarget)
diff --git a/src/battle/anim/lunge_1.c b/src/battle/anim/lunge_1.c
index d379c8f09..a3b5f19c5 100644
--- a/src/battle/anim/lunge_1.c
+++ b/src/battle/anim/lunge_1.c
@@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
static void sub_80CD7CC(struct Sprite* sprite);
static void sub_80CD81C(struct Sprite* sprite);
@@ -46,16 +46,16 @@ void sub_80CD7CC(struct Sprite* sprite)
sprite->data[0] = 6;
sprite->data[1] = (GetBankSide(gAnimBankAttacker)) ? 2 : -2;
sprite->data[2] = 0;
- sprite->data[3] = gObjectBankIDs[gAnimBankAttacker];
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
StoreSpriteCallbackInData(sprite, sub_80CD81C);
- sprite->callback = sub_8078458;
+ sprite->callback = TranslateMonBGUntil;
}
void sub_80CD81C(struct Sprite* sprite)
{
if (sprite->data[0] == 0)
{
- sprite->data[3] = gObjectBankIDs[gAnimBankAttacker];
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
sub_8078E70(sprite->data[3], 0);
sprite->data[4] = (sprite->data[6] = GetBankSide(gAnimBankAttacker)) ? 0x300 : 0xFFFFFD00;
sprite->data[5] = 0;
@@ -76,9 +76,9 @@ void sub_80CD8A8(struct Sprite* sprite)
sprite->data[0] = 4;
sprite->data[1] = (GetBankSide(gAnimBankAttacker)) ? -3 : 3;
sprite->data[2] = 0;
- sprite->data[3] = gObjectBankIDs[gAnimBankAttacker];
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
StoreSpriteCallbackInData(sprite, sub_80CD9B8);
- sprite->callback = sub_8078458;
+ sprite->callback = TranslateMonBGUntil;
}
void sub_80CD8F8(struct Sprite* sprite)
@@ -94,7 +94,7 @@ void sub_80CD91C(struct Sprite* sprite)
{
if (sprite->data[0] == 0)
{
- sprite->data[3] = gObjectBankIDs[gAnimBankAttacker];
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
sprite->data[6] = GetBankSide(gAnimBankAttacker);
if (GetBankSide(gAnimBankAttacker))
{
diff --git a/src/battle/anim/lunge_2.c b/src/battle/anim/lunge_2.c
index fe2470567..f222b291d 100644
--- a/src/battle/anim/lunge_2.c
+++ b/src/battle/anim/lunge_2.c
@@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
static void sub_80CDB60(u8 taskId);
static void sub_80CDD20(u8 taskId);
@@ -20,7 +20,7 @@ void sub_80CDAC8(u8 taskId)
{
u8 a;
- gTasks[taskId].data[0] = gObjectBankIDs[gAnimBankAttacker];
+ gTasks[taskId].data[0] = gBankSpriteIds[gAnimBankAttacker];
a = GetBankSide(gAnimBankAttacker);
gTasks[taskId].data[1] = a;
gTasks[taskId].data[2] = 0;
diff --git a/src/battle/anim/money.c b/src/battle/anim/money.c
index 8358d23db..c3d130750 100644
--- a/src/battle/anim/money.c
+++ b/src/battle/anim/money.c
@@ -19,14 +19,14 @@ void sub_80CFE9C(struct Sprite* sprite)
s16 r7;
u16 var;
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
r6 = GetBankPosition(gAnimBankTarget, 2);
r7 = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
if (GetBankSide(gAnimBankAttacker) != 0)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
r6 += gBattleAnimArgs[2];
- var = sub_80790F0(r6 - sprite->pos1.x, r7 - sprite->pos1.y);
+ var = ArcTan2Neg(r6 - sprite->pos1.x, r7 - sprite->pos1.y);
var += 0xC000;
sub_8078FDC(sprite, 0, 0x100, 0x100, var);
sprite->data[0] = gBattleAnimArgs[4];
diff --git a/src/battle/anim/note_rain.c b/src/battle/anim/note_rain.c
index 715462d73..44817b0a0 100644
--- a/src/battle/anim/note_rain.c
+++ b/src/battle/anim/note_rain.c
@@ -24,14 +24,14 @@ void sub_80D1BA8(struct Sprite* sprite, u8 a, u8 b)
void sub_80D1C08(struct Sprite* sprite)
{
- sub_80787B0(sprite, 0);
+ InitAnimSpritePos(sprite, 0);
if (GetBankSide(gAnimBankAttacker) != 0)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[3];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
sub_80D1BA8(sprite, gBattleAnimArgs[5], gBattleAnimArgs[6]);
}
diff --git a/src/battle/anim/note_scatter_2.c b/src/battle/anim/note_scatter_2.c
index 524c51c08..262afb8bf 100644
--- a/src/battle/anim/note_scatter_2.c
+++ b/src/battle/anim/note_scatter_2.c
@@ -32,14 +32,14 @@ void sub_80CEE60(struct Sprite* sprite)
sprite->data[2] = a + sprite->data[1];
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = sprite->data[3] - 40;
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
sprite->data[5] = gBattleAnimArgs[3];
sprite->callback = sub_80CEEE8;
}
void sub_80CEEE8(struct Sprite* sprite)
{
- if (sub_8078B5C(sprite) == 0)
+ if (TranslateAnimSpriteByDeltas(sprite) == 0)
{
s16 a;
a = Sin(sprite->data[5], 8);
diff --git a/src/battle/anim/orbit.c b/src/battle/anim/orbit.c
index c8cf339d2..e7dd0df49 100644
--- a/src/battle/anim/orbit.c
+++ b/src/battle/anim/orbit.c
@@ -79,13 +79,13 @@ void sub_80CACEC(u8 taskId)
void sub_80CAD54(struct Sprite* sprite)
{
- sub_80787B0(sprite, 0);
+ InitAnimSpritePos(sprite, 0);
sprite->data[0] = gBattleAnimArgs[3];
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
sprite->data[5] = 0x40;
sprite->callback = sub_80CADA8;
sub_80CADA8(sprite);
@@ -93,7 +93,7 @@ void sub_80CAD54(struct Sprite* sprite)
void sub_80CADA8(struct Sprite* sprite)
{
- if (!sub_8078B5C(sprite))
+ if (!TranslateAnimSpriteByDeltas(sprite))
{
sprite->pos2.x += Sin(sprite->data[5], 32);
sprite->pos2.y += Cos(sprite->data[5], -5);
@@ -116,13 +116,13 @@ void sub_80CADA8(struct Sprite* sprite)
void sub_80CAE20(struct Sprite* sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[3];
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3) + gBattleAnimArgs[2];
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
sprite->data[5] = 0x40;
sprite->callback = sub_80CAE74;
sub_80CAE74(sprite);
@@ -130,7 +130,7 @@ void sub_80CAE20(struct Sprite* sprite)
void sub_80CAE74(struct Sprite* sprite)
{
- if (!sub_8078B5C(sprite))
+ if (!TranslateAnimSpriteByDeltas(sprite))
{
sprite->pos2.x += Sin(sprite->data[5], 8);
if ((u16)(sprite->data[5] - 0x3B) < 5 || (u16)(sprite->data[5] - 0xBB) < 5)
diff --git a/src/battle/anim/orbit_fast.c b/src/battle/anim/orbit_fast.c
index 92b67672b..71303b03c 100644
--- a/src/battle/anim/orbit_fast.c
+++ b/src/battle/anim/orbit_fast.c
@@ -8,12 +8,13 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-static void sub_80D2704(struct Sprite* sprite);
+static void AnimOrbitFastStep(struct Sprite* sprite);
-// orbit_fast (a quickly moving fast circular motion of a sprite around an object.)
-// Used by Hidden Power.
-
-void sub_80D26A4(struct Sprite* sprite)
+// Orbits a sphere in an ellipse around the mon.
+// Used by MOVE_HIDDEN_POWER
+// arg 0: duration
+// arg 1: initial wave offset
+void AnimOrbitFast(struct Sprite* sprite)
{
sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
@@ -21,11 +22,11 @@ void sub_80D26A4(struct Sprite* sprite)
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[1] = gBattleAnimArgs[1];
sprite->data[7] = sub_8079E90(gAnimBankAttacker);
- sprite->callback = sub_80D2704;
- sub_80D2704(sprite);
+ sprite->callback = AnimOrbitFastStep;
+ sprite->callback(sprite);
}
-void sub_80D2704(struct Sprite* sprite)
+static void AnimOrbitFastStep(struct Sprite* sprite)
{
if ((u16)(sprite->data[1] - 0x40) <= 0x7F)
sprite->subpriority = sprite->data[7] + 1;
diff --git a/src/battle/anim/orbit_scatter.c b/src/battle/anim/orbit_scatter.c
index 54c157839..cda09a729 100644
--- a/src/battle/anim/orbit_scatter.c
+++ b/src/battle/anim/orbit_scatter.c
@@ -8,21 +8,21 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-static void sub_80D2834(struct Sprite* sprite);
+static void AnimOrbitScatterStep(struct Sprite* sprite);
-// orbit_scatter (scatters the objects associated with the fast orbit from the last file.)
-// Used in Hidden Power.
-
-void sub_80D27E0(struct Sprite* sprite)
+// Moves orbs away from the mon, based on where they are in their orbit.
+// Used in MOVE_HIDDEN_POWER.
+// arg 0: initial wave offset
+void AnimOrbitScatter(struct Sprite* sprite)
{
sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
sprite->data[0] = Sin(gBattleAnimArgs[0], 10);
sprite->data[1] = Cos(gBattleAnimArgs[0], 7);
- sprite->callback = sub_80D2834;
+ sprite->callback = AnimOrbitScatterStep;
}
-void sub_80D2834(struct Sprite* sprite)
+static void AnimOrbitScatterStep(struct Sprite* sprite)
{
sprite->pos2.x += sprite->data[0];
sprite->pos2.y += sprite->data[1];
diff --git a/src/battle/anim/orbs.c b/src/battle/anim/orbs.c
index 6ca2fa71c..6f1bba9c3 100644
--- a/src/battle/anim/orbs.c
+++ b/src/battle/anim/orbs.c
@@ -19,34 +19,34 @@ extern struct SpriteTemplate gSpriteTemplate_83D631C;
void sub_80CA7B0(struct Sprite* sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
}
void sub_80CA800(struct Sprite* sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
StartSpriteAnim(sprite, gBattleAnimArgs[3]);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
void sub_80CA858(struct Sprite* sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = sprite->pos1.x;
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
sprite->data[5] = gBattleAnimArgs[3];
sprite->callback = sub_80CA8B4;
sub_80CA8B4(sprite);
@@ -54,7 +54,7 @@ void sub_80CA858(struct Sprite* sprite)
void sub_80CA8B4(struct Sprite* sprite)
{
- if (sub_8078B5C(sprite))
+ if (TranslateAnimSpriteByDeltas(sprite))
{
DestroySprite(sprite);
}
@@ -99,13 +99,13 @@ void sub_80CA9A8(struct Sprite* sprite)
sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
sprite->data[5] = gBattleAnimArgs[2];
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
sprite->callback = sub_80CA9F8;
}
void sub_80CA9F8(struct Sprite* sprite)
{
- if (sub_8078718(sprite))
+ if (TranslateAnimSpriteLinearAndSine(sprite))
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/perceive.c b/src/battle/anim/perceive.c
index 3b3153428..14db096c6 100644
--- a/src/battle/anim/perceive.c
+++ b/src/battle/anim/perceive.c
@@ -19,6 +19,6 @@ void sub_80D2904(struct Sprite* sprite)
void sub_80D2920(struct Sprite* sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->callback = sub_80D2904;
}
diff --git a/src/battle/anim/poison.c b/src/battle/anim/poison.c
index f31c441fb..3a7477a57 100644
--- a/src/battle/anim/poison.c
+++ b/src/battle/anim/poison.c
@@ -10,28 +10,28 @@ extern u8 gAnimBankTarget;
void sub_80D9DD4(struct Sprite *sprite);
void sub_80D9E78(struct Sprite *sprite);
void sub_80D9EE8(struct Sprite *sprite);
-void sub_80D9FF0(struct Sprite *sprite);
+static void AnimBubbleEffectStep(struct Sprite *sprite);
void sub_80D9D70(struct Sprite *sprite)
{
if (!gBattleAnimArgs[3])
StartSpriteAnim(sprite, 2);
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2);
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3);
sprite->data[5] = -30;
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
sprite->callback = sub_80D9DD4;
}
void sub_80D9DD4(struct Sprite *sprite) // same as sub_80D9E78
{
- if (sub_8078718(sprite))
+ if (TranslateAnimSpriteLinearAndSine(sprite))
DestroyAnimSprite(sprite);
}
@@ -41,8 +41,8 @@ void sub_80D9DF0(struct Sprite *sprite)
if (!gBattleAnimArgs[3])
StartSpriteAnim(sprite, 2);
- sub_80787B0(sprite, 1);
- sub_807A3FC(gAnimBankTarget, 1, &l1, &l2);
+ InitAnimSpritePos(sprite, 1);
+ SetAverageBattlerPositions(gAnimBankTarget, 1, &l1, &l2);
if (GetBankSide(gAnimBankAttacker))
gBattleAnimArgs[4] = -gBattleAnimArgs[4];
@@ -52,14 +52,14 @@ void sub_80D9DF0(struct Sprite *sprite)
sprite->data[4] = l2 + gBattleAnimArgs[5];
sprite->data[5] = -30;
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
sprite->callback = sub_80D9E78;
}
void sub_80D9E78(struct Sprite *sprite) // same as sub_80D9DD4
{
- if (sub_8078718(sprite))
+ if (TranslateAnimSpriteLinearAndSine(sprite))
DestroyAnimSprite(sprite);
}
@@ -71,7 +71,7 @@ void sub_80D9E94(struct Sprite *sprite)
sprite->data[3] = sprite->pos1.y;
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[1];
- sub_8078A5C(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[5] = sprite->data[1] / gBattleAnimArgs[2];
sprite->data[6] = sprite->data[2] / gBattleAnimArgs[2];
@@ -92,7 +92,7 @@ void sub_80D9EE8(struct Sprite *sprite)
void sub_80D9F14(struct Sprite *sprite)
{
- sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
if (GetBankSide(gAnimBankAttacker))
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
@@ -104,11 +104,17 @@ void sub_80D9F14(struct Sprite *sprite)
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
sprite->data[4] = sprite->pos1.y + sprite->data[0];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
-void sub_80D9F88(struct Sprite *sprite)
+// Animates a bubble by rising upward, swaying side to side, and
+// enlarging the sprite. This is used as an after-effect by poison-type
+// moves, along with MOVE_BUBBLE, and MOVE_BUBBLEBEAM.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: 0 = single-target, 1 = multi-target
+void AnimBubbleEffect(struct Sprite *sprite)
{
if (!gBattleAnimArgs[2])
{
@@ -116,7 +122,7 @@ void sub_80D9F88(struct Sprite *sprite)
}
else
{
- sub_807A3FC(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
+ SetAverageBattlerPositions(gAnimBankTarget, TRUE, &sprite->pos1.x, &sprite->pos1.y);
if (GetBankSide(gAnimBankAttacker))
gBattleAnimArgs[0] = -gBattleAnimArgs[0];
@@ -125,10 +131,10 @@ void sub_80D9F88(struct Sprite *sprite)
sprite->pos1.y += gBattleAnimArgs[1];
}
- sprite->callback = sub_80D9FF0;
+ sprite->callback = AnimBubbleEffectStep;
}
-void sub_80D9FF0(struct Sprite *sprite)
+static void AnimBubbleEffectStep(struct Sprite *sprite)
{
sprite->data[0] = (sprite->data[0] + 0xB) & 0xFF;
sprite->pos2.x = Sin(sprite->data[0], 4);
diff --git a/src/battle/anim/powder.c b/src/battle/anim/powder.c
index a0be20d6f..5d67311dc 100644
--- a/src/battle/anim/powder.c
+++ b/src/battle/anim/powder.c
@@ -6,12 +6,17 @@
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
-static void sub_80CA768(struct Sprite* sprite);
+static void AnimMovePowderParticleStep(struct Sprite* sprite);
-// powder
+// Animates the falling particles that horizontally wave back and forth.
// Used by Sleep Powder, Stun Spore, and Poison Powder.
-
-void sub_80CA710(struct Sprite* sprite)
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: total duration in frames
+// arg 3: vertical movement speed (sub-pixel value)
+// arg 4: wave amplitude
+// arg 5: wave speed
+void AnimMovePowderParticle(struct Sprite* sprite)
{
sprite->pos1.x += gBattleAnimArgs[0];
sprite->pos1.y += gBattleAnimArgs[1];
@@ -28,10 +33,10 @@ void sub_80CA710(struct Sprite* sprite)
}
sprite->data[4] = gBattleAnimArgs[5];
- sprite->callback = sub_80CA768;
+ sprite->callback = AnimMovePowderParticleStep;
}
-void sub_80CA768(struct Sprite* sprite)
+static void AnimMovePowderParticleStep(struct Sprite* sprite)
{
if (sprite->data[0] > 0)
{
diff --git a/src/battle/anim/psychic.c b/src/battle/anim/psychic.c
new file mode 100644
index 000000000..42f396870
--- /dev/null
+++ b/src/battle/anim/psychic.c
@@ -0,0 +1,900 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "palette.h"
+#include "rom_8077ABC.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/songs.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG2_X;
+extern u8 gBankSpriteIds[];
+
+extern const union AffineAnimCmd *const gUnknown_083DA888[];
+extern struct AffineAnimFrameCmd gUnknown_083DA8A4;
+extern struct AffineAnimFrameCmd gUnknown_083DA8C4;
+extern const struct SpriteTemplate gSpriteTemplate_83DA8DC;
+extern const struct SpriteTemplate gSpriteTemplate_83DA9AC;
+
+static void sub_80DB88C(struct Sprite *sprite);
+static void sub_80DB8C0(struct Sprite *sprite);
+static void sub_80DB92C(struct Sprite *sprite);
+static void sub_80DB9E4(struct Sprite *sprite);
+static void sub_80DBC00(struct Sprite *sprite);
+static void sub_80DBC34(struct Sprite *sprite);
+static void sub_80DBCD0(u8 taskId);
+static void sub_80DBD58(u8 taskId);
+static void sub_80DBE98(u8 taskId);
+static void sub_80DC1FC(u8 taskId);
+static void sub_80DC3F4(u8 taskId);
+void sub_80DC5F4(u8 taskId);
+
+
+void sub_80DB74C(struct Sprite *sprite)
+{
+ if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER || IsContest())
+ {
+ sprite->oam.priority = 2;
+ sprite->subpriority = 200;
+ }
+
+ if (!IsContest())
+ {
+ u8 bankCopy;
+ u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ u8 identity = GetBankIdentity_permutated(bank);
+ int var0 = 1;
+ u8 toBG_2 = (identity ^ var0) != 0;
+
+ if (IsAnimBankSpriteVisible(bank))
+ MoveBattlerSpriteToBG(bank, toBG_2);
+
+ bank = bankCopy ^ 2;
+ if (IsAnimBankSpriteVisible(bank))
+ MoveBattlerSpriteToBG(bank, toBG_2 ^ var0);
+ }
+
+ if (!IsContest() && IsDoubleBattle())
+ {
+ if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER)
+ {
+ sprite->pos1.x = 72;
+ sprite->pos1.y = 80;
+ }
+ else
+ {
+ sprite->pos1.x = 176;
+ sprite->pos1.y = 40;
+ }
+ }
+ else
+ {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ gBattleAnimArgs[0] = -gBattleAnimArgs[0];
+
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0) + gBattleAnimArgs[0];
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1) + gBattleAnimArgs[1];
+ }
+
+ if (IsContest())
+ sprite->pos1.y += 9;
+
+ sprite->data[0] = 256 + IndexOfSpritePaletteTag(gBattleAnimArgs[2]) * 16;
+ sprite->callback = sub_80DB88C;
+ sprite->callback(sprite);
+}
+
+static void sub_80DB88C(struct Sprite *sprite)
+{
+ REG_BLDALPHA = ((16 - sprite->data[3]) << 8) | sprite->data[3];
+
+ if (sprite->data[3] == 13)
+ sprite->callback = sub_80DB8C0;
+ else
+ sprite->data[3]++;
+}
+
+static void sub_80DB8C0(struct Sprite *sprite)
+{
+ u16 color;
+ u16 startOffset;
+ int i;
+
+ if (++sprite->data[1] == 2)
+ {
+ sprite->data[1] = 0;
+ startOffset = sprite->data[0];
+ color = gPlttBufferFaded[startOffset + 8];
+
+ for (i = 8; i > 0; i--)
+ gPlttBufferFaded[startOffset + i] = gPlttBufferFaded[startOffset + i - 1];
+
+ gPlttBufferFaded[startOffset + 1] = color;
+
+ if (++sprite->data[2] == 16)
+ sprite->callback = sub_80DB92C;
+ }
+}
+
+static void sub_80DB92C(struct Sprite *sprite)
+{
+ REG_BLDALPHA = ((16 - sprite->data[3]) << 8) | sprite->data[3];
+
+ if (--sprite->data[3] == -1)
+ {
+ if (!IsContest())
+ {
+ u8 bankCopy;
+ u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+
+ if (IsAnimBankSpriteVisible(bank))
+ gSprites[gBankSpriteIds[bank]].invisible = 0;
+
+ bank = bankCopy ^ 2;
+ if (IsAnimBankSpriteVisible(bank))
+ gSprites[gBankSpriteIds[bank]].invisible = 0;
+ }
+
+ sprite->invisible = 1;
+ sprite->callback = sub_80DB9E4;
+ }
+}
+
+static void sub_80DB9E4(struct Sprite *sprite)
+{
+ if (!IsContest())
+ {
+ u8 bankCopy;
+ u8 bank = bankCopy = GetBankByIdentity(IDENTITY_OPPONENT_MON1);
+ u8 identity = GetBankIdentity_permutated(bank);
+ int var0 = 1;
+ u8 toBG_2 = (identity ^ var0) != 0;
+
+ if (IsAnimBankSpriteVisible(bank))
+ sub_8076464(toBG_2);
+
+ bank = bankCopy ^ 2;
+ if (IsAnimBankSpriteVisible(bank))
+ sub_8076464(toBG_2 ^ var0);
+ }
+
+ sprite->callback = DestroyAnimSprite;
+}
+
+void sub_80DBA4C(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ int arg3 = gBattleAnimArgs[3];
+ u8 var0 = 0;
+ if (arg3 == 0)
+ var0 = 1;
+
+ if (!IsContest() && IsDoubleBattle())
+ {
+ if (GetBankSide(gAnimBankAttacker) == SIDE_PLAYER)
+ {
+ sprite->pos1.x = 72 - gBattleAnimArgs[0];
+ sprite->pos1.y = gBattleAnimArgs[1] + 80;
+ }
+ else
+ {
+ sprite->pos1.x = gBattleAnimArgs[0] + 176;
+ sprite->pos1.y = gBattleAnimArgs[1] + 40;
+ }
+ }
+ else
+ {
+ if (gBattleAnimArgs[2] == 0)
+ InitAnimSpritePos(sprite, var0);
+ else
+ sub_8078764(sprite, var0);
+ }
+
+ sprite->data[0]++;
+ }
+ else
+ {
+ if (sprite->animEnded || sprite->affineAnimEnded)
+ move_anim_8074EE0(sprite);
+ }
+}
+
+void sub_80DBAF4(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ {
+ StartSpriteAnim(sprite, 1);
+ sprite->pos1.x -= 40;
+ sprite->pos1.y += 10;
+ sprite->data[1] = -1;
+ }
+ else
+ {
+ sprite->pos1.x += 40;
+ sprite->pos1.y -= 10;
+ sprite->data[1] = 1;
+ }
+
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+ sprite->callback = sub_8078600;
+}
+
+void sub_80DBB70(struct Sprite *sprite)
+{
+ s16 x = sub_807A100(gAnimBankAttacker, 1) / 2;
+ s16 y = sub_807A100(gAnimBankAttacker, 0) / -2;
+
+ if (GetBankSide(gAnimBankAttacker) == SIDE_OPPONENT)
+ {
+ x = -x;
+ }
+
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2) + x;
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3) + y;
+
+ if (sprite->pos1.y < 16)
+ {
+ sprite->pos1.y = 16;
+ }
+
+ StoreSpriteCallbackInData(sprite, sub_80DBC00);
+ sprite->callback = sub_8078600;
+}
+
+static void sub_80DBC00(struct Sprite *sprite)
+{
+ sprite->oam.affineMode = 1;
+ sprite->affineAnims = gUnknown_083DA888;
+ sprite->data[0] = 0;
+ InitSpriteAffineAnim(sprite);
+ sprite->callback = sub_80DBC34;
+}
+
+static void sub_80DBC34(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ if (sprite->affineAnimEnded)
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ sprite->oam.affineMode = 0;
+ sprite->data[1] = 18;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (--sprite->data[1] == -1)
+ {
+ DestroyAnimSprite(sprite);
+ }
+ break;
+ }
+}
+
+void sub_80DBC94(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ u8 spriteId = GetAnimBankSpriteId(0);
+ task->data[0] = spriteId;
+ sub_80798F4(task, spriteId, &gUnknown_083DA8A4);
+ task->func = sub_80DBCD0;
+}
+
+static void sub_80DBCD0(u8 taskId)
+{
+ if (!sub_807992C(&gTasks[taskId]))
+ {
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_80DBCFC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ u8 spriteId = GetAnimBankSpriteId(0);
+ task->data[0] = spriteId;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = GetBankSide(gAnimBankAttacker) != SIDE_PLAYER ? 4 : 8;
+
+ sub_80798F4(task, task->data[0], &gUnknown_083DA8C4);
+ task->func = sub_80DBD58;
+}
+
+static void sub_80DBD58(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[1])
+ {
+ case 0:
+ sub_807992C(task);
+ if (++task->data[2] > 19)
+ task->data[1]++;
+ break;
+ case 1:
+ if (task->data[3] != 0)
+ {
+ gSprites[task->data[0]].pos2.y -= 8;
+ task->data[3]--;
+ }
+ else
+ {
+ gSprites[task->data[0]].invisible = 1;
+ gSprites[task->data[0]].pos1.x = 272;
+ sub_8078F40(task->data[0]);
+ DestroyAnimVisualTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80DBE00(u8 taskId)
+{
+ u16 var0, var1;
+
+ struct Task *task = &gTasks[taskId];
+
+ task->data[3] = 16;
+ task->data[4] = 0;
+ task->data[13] = GetBankPosition(gAnimBankAttacker, 2);
+ task->data[14] = GetBankPosition(gAnimBankAttacker, 3);
+
+ var0 = sub_807A100(gAnimBankAttacker, 1) / 3;
+ var1 = sub_807A100(gAnimBankAttacker, 0) / 3;
+ task->data[12] = var0 > var1 ? var0 : var1;
+
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x10;
+
+ task->func = sub_80DBE98;
+}
+
+static void sub_80DBE98(u8 taskId)
+{
+ u16 i;
+ u8 spriteId;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 8)
+ {
+ task->data[1] = 0;
+ spriteId = CreateSprite(&gSpriteTemplate_83DA8DC, task->data[13], task->data[14], 0);
+ task->data[task->data[2] + 8] = spriteId;
+
+ if (spriteId != 64)
+ {
+ switch (task->data[2])
+ {
+ case 0:
+ gSprites[spriteId].pos2.x = task->data[12];
+ gSprites[spriteId].pos2.y = -task->data[12];
+ break;
+ case 1:
+ gSprites[spriteId].pos2.x = -task->data[12];
+ gSprites[spriteId].pos2.y = task->data[12];
+ break;
+ case 2:
+ gSprites[spriteId].pos2.x = task->data[12];
+ gSprites[spriteId].pos2.y = task->data[12];
+ break;
+ case 3:
+ gSprites[spriteId].pos2.x = -task->data[12];
+ gSprites[spriteId].pos2.y = -task->data[12];
+ break;
+ }
+ }
+
+ if (++task->data[2] == 5)
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ if (task->data[1] & 1)
+ task->data[3]--;
+ else
+ task->data[4]++;
+
+ REG_BLDALPHA = (task->data[4] << 8) | task->data[3];
+
+ if (++task->data[1] == 32)
+ {
+ for (i = 8; i < 13; i++)
+ {
+ if (task->data[i] != 64)
+ DestroySprite(&gSprites[task->data[i]]);
+ }
+
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ task->data[0]++;
+ break;
+ case 3:
+ REG_BLDALPHA = 0;
+ REG_BLDCNT = 0;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80DC020(struct Sprite *sprite)
+{
+ if (sprite->data[1] > sprite->data[0] - 10)
+ sprite->invisible = sprite->data[1] & 1;
+
+ if (sprite->data[1] == sprite->data[0])
+ DestroyAnimSprite(sprite);
+
+ sprite->data[1]++;
+}
+
+void sub_80DC068(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[0] == 0)
+ {
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
+ }
+
+ sprite->data[0] = gBattleAnimArgs[1];
+ sprite->callback = sub_80DC020;
+}
+
+void sub_80DC0B0(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ if (IsContest())
+ {
+ if (gBattleAnimArgs[0] == 1)
+ {
+ task->data[10] = -10;
+ task->data[11] = sub_807A100(gAnimBankTarget, 5) - 8;
+ task->data[12] = sub_807A100(gAnimBankTarget, 2) + 8;
+ task->data[13] = sub_807A100(gAnimBankAttacker, 5) - 8;
+ task->data[14] = sub_807A100(gAnimBankAttacker, 2) + 8;
+ }
+ else
+ {
+ task->data[10] = 10;
+ task->data[11] = sub_807A100(gAnimBankAttacker, 4) + 8;
+ task->data[12] = sub_807A100(gAnimBankAttacker, 3) - 8;
+ task->data[13] = sub_807A100(gAnimBankTarget, 4) + 8;
+ task->data[14] = sub_807A100(gAnimBankTarget, 3) - 8;
+ }
+ }
+ else
+ {
+ if (gBattleAnimArgs[0] == 1)
+ {
+ task->data[10] = -10;
+ task->data[11] = sub_807A100(gAnimBankTarget, 4) + 8;
+ task->data[12] = sub_807A100(gAnimBankTarget, 2) + 8;
+ task->data[13] = sub_807A100(gAnimBankAttacker, 4) + 8;
+ task->data[14] = sub_807A100(gAnimBankAttacker, 2) + 8;
+ }
+ else
+ {
+ task->data[10] = 10;
+ task->data[11] = sub_807A100(gAnimBankAttacker, 5) - 8;
+ task->data[12] = sub_807A100(gAnimBankAttacker, 3) - 8;
+ task->data[13] = sub_807A100(gAnimBankTarget, 5) - 8;
+ task->data[14] = sub_807A100(gAnimBankTarget, 3) - 8;
+ }
+ }
+
+ task->data[1] = 6;
+ task->func = sub_80DC1FC;
+}
+
+static void sub_80DC1FC(u8 taskId)
+{
+ u8 spriteId;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ if (++task->data[1] > 6)
+ {
+ task->data[1] = 0;
+ spriteId = CreateSprite(&gSpriteTemplate_83DA9AC, task->data[11], task->data[12], 0);
+ if (spriteId != 64)
+ {
+ gSprites[spriteId].data[0] = 16;
+ gSprites[spriteId].data[2] = task->data[13];
+ gSprites[spriteId].data[4] = task->data[14];
+ gSprites[spriteId].data[5] = task->data[10];
+
+ InitAnimSpriteTranslationOverDuration(&gSprites[spriteId]);
+ StartSpriteAffineAnim(&gSprites[spriteId], task->data[2] & 3);
+ }
+
+ if (++task->data[2] == 12)
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ if (++task->data[1] > 17)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80DC2B0(struct Sprite *sprite)
+{
+ if (TranslateAnimSpriteLinearAndSine(sprite))
+ {
+ FreeOamMatrix(sprite->oam.matrixNum);
+ DestroySprite(sprite);
+ }
+}
+
+void sub_80DC2D4(u8 taskId)
+{
+ s16 i;
+ u8 var1;
+ struct ScanlineEffectParams scanlineParams;
+ struct Task *task = &gTasks[taskId];
+
+ var1 = sub_8077FC0(gAnimBankTarget);
+ task->data[14] = var1 - 32;
+
+ switch (gBattleAnimArgs[0])
+ {
+ case 0:
+ task->data[11] = 2;
+ task->data[12] = 5;
+ task->data[13] = 64;
+ task->data[15] = var1 + 32;
+ break;
+ case 1:
+ task->data[11] = 2;
+ task->data[12] = 5;
+ task->data[13] = 192;
+ task->data[15] = var1 + 32;
+ break;
+ case 2:
+ task->data[11] = 4;
+ task->data[12] = 4;
+ task->data[13] = 0;
+ task->data[15] = var1 + 32;
+ break;
+ }
+
+ if (task->data[14] < 0)
+ task->data[14] = 0;
+
+ if (GetBankIdentity_permutated(gAnimBankTarget) == 1)
+ {
+ task->data[10] = gBattle_BG1_X;
+ scanlineParams.dmaDest = &REG_BG1HOFS;
+ }
+ else
+ {
+ task->data[10] = gBattle_BG2_X;
+ scanlineParams.dmaDest = &REG_BG2HOFS;
+ }
+
+ i = task->data[14];
+ while (i <= task->data[14] + 64)
+ {
+ gScanlineEffectRegBuffers[0][i] = task->data[10];
+ gScanlineEffectRegBuffers[1][i] = task->data[10];
+ i++;
+ }
+
+ scanlineParams.dmaControl = 0XA2600001;
+ scanlineParams.initState = 1;
+ scanlineParams.unused9 = 0;
+ ScanlineEffect_SetParams(scanlineParams);
+
+ task->func = sub_80DC3F4;
+}
+
+static void sub_80DC3F4(u8 taskId)
+{
+ s16 sineIndex, i;
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sineIndex = task->data[13];
+ i = task->data[14];
+ while (i <= task->data[15])
+ {
+ s16 var2 = (gSineTable[sineIndex] >> task->data[12]);
+ if (var2 > 0)
+ {
+ var2 += (task->data[1] & 3);
+ }
+ else if (var2 < 0)
+ {
+ var2 -= (task->data[1] & 3);
+ }
+
+ gScanlineEffectRegBuffers[0][i] = task->data[10] + var2;
+ gScanlineEffectRegBuffers[1][i] = task->data[10] + var2;
+
+ sineIndex += task->data[11];
+ i++;
+ }
+
+ if (++task->data[1] > 23)
+ {
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ gScanlineEffect.state = 3;
+ task->data[0]++;
+ break;
+ case 2:
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+#ifdef NONMATCHING
+void sub_80DC4F4(u8 taskId)
+{
+ s16 spriteId;
+ u8 matrixNum;
+ register u8 matrixNum2 asm("r6");
+ struct Task *task = &gTasks[taskId];
+
+ matrixNum = AllocOamMatrix();
+ matrixNum2 = matrixNum;
+ if (matrixNum2 == 0xFF)
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ spriteId = duplicate_obj_of_side_rel2move_in_transparent_mode(gBattleAnimArgs[0]);
+ if (spriteId < 0)
+ {
+ FreeOamMatrix(matrixNum);
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ gSprites[spriteId].oam.matrixNum = matrixNum2;
+ gSprites[spriteId].affineAnimPaused = 1;
+ gSprites[spriteId].subpriority++;
+ obj_id_set_rotscale(spriteId, 256, 256, 0);
+ CalcCenterToCornerVec(&gSprites[spriteId], gSprites[spriteId].oam.shape, gSprites[spriteId].oam.size, gSprites[spriteId].oam.affineMode);
+
+ task->data[13] = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ task->data[14] = matrixNum;
+ task->data[15] = spriteId;
+ task->func = sub_80DC5F4;
+}
+#else
+__attribute__((naked))
+void sub_80DC4F4(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ mov r8, r4\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 3\n\
+ ldr r1, _080DC528 @ =gTasks\n\
+ adds r7, r0, r1\n\
+ bl AllocOamMatrix\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ mov r10, r5\n\
+ adds r6, r5, 0\n\
+ cmp r6, 0xFF\n\
+ bne _080DC52C\n\
+ adds r0, r4, 0\n\
+ bl DestroyAnimVisualTask\n\
+ b _080DC5D6\n\
+ .align 2, 0\n\
+_080DC528: .4byte gTasks\n\
+_080DC52C:\n\
+ ldr r1, _080DC550 @ =gBattleAnimArgs\n\
+ ldrb r0, [r1]\n\
+ bl duplicate_obj_of_side_rel2move_in_transparent_mode\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ mov r9, r1\n\
+ asrs r0, 16\n\
+ cmp r0, 0\n\
+ bge _080DC554\n\
+ adds r0, r5, 0\n\
+ bl FreeOamMatrix\n\
+ mov r0, r8\n\
+ bl DestroyAnimVisualTask\n\
+ b _080DC5D6\n\
+ .align 2, 0\n\
+_080DC550: .4byte gBattleAnimArgs\n\
+_080DC554:\n\
+ ldr r2, _080DC5E4 @ =gSprites\n\
+ lsls r4, r0, 4\n\
+ adds r4, r0\n\
+ lsls r4, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x1C\n\
+ adds r0, r4, r0\n\
+ ldr r1, _080DC5E8 @ =SpriteCallbackDummy\n\
+ str r1, [r0]\n\
+ adds r4, r2\n\
+ ldrb r0, [r4, 0x1]\n\
+ movs r1, 0x3\n\
+ orrs r0, r1\n\
+ strb r0, [r4, 0x1]\n\
+ movs r0, 0x1F\n\
+ ands r6, r0\n\
+ lsls r2, r6, 1\n\
+ ldrb r1, [r4, 0x3]\n\
+ movs r0, 0x3F\n\
+ negs r0, r0\n\
+ ands r0, r1\n\
+ orrs r0, r2\n\
+ strb r0, [r4, 0x3]\n\
+ adds r2, r4, 0\n\
+ adds r2, 0x2C\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x80\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ adds r1, r4, 0\n\
+ adds r1, 0x43\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ mov r1, r9\n\
+ lsls r0, r1, 24\n\
+ lsrs r0, 24\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ adds r1, r2, 0\n\
+ movs r3, 0\n\
+ bl obj_id_set_rotscale\n\
+ ldrb r3, [r4, 0x1]\n\
+ lsrs r1, r3, 6\n\
+ ldrb r2, [r4, 0x3]\n\
+ lsrs r2, 6\n\
+ lsls r3, 30\n\
+ lsrs r3, 30\n\
+ adds r0, r4, 0\n\
+ bl CalcCenterToCornerVec\n\
+ ldr r1, _080DC5EC @ =gBattleAnimArgs\n\
+ ldrb r0, [r1]\n\
+ bl GetAnimBankSpriteId\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ strh r0, [r7, 0x22]\n\
+ mov r0, r10\n\
+ strh r0, [r7, 0x24]\n\
+ mov r1, r9\n\
+ strh r1, [r7, 0x26]\n\
+ ldr r0, _080DC5F0 @ =sub_80DC5F4\n\
+ str r0, [r7]\n\
+_080DC5D6:\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080DC5E4: .4byte gSprites\n\
+_080DC5E8: .4byte SpriteCallbackDummy\n\
+_080DC5EC: .4byte gBattleAnimArgs\n\
+_080DC5F0: .4byte sub_80DC5F4\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+void sub_80DC5F4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[1] += 4;
+ task->data[2] = 256 - (gSineTable[task->data[1]] >> 1);
+ obj_id_set_rotscale(task->data[15], task->data[2], task->data[2], 0);
+ sub_8079AB8(task->data[15], task->data[13]);
+ if (task->data[1] == 48)
+ task->data[0]++;
+ break;
+ case 1:
+ task->data[1] -= 4;
+ task->data[2] = 256 - (gSineTable[task->data[1]] >> 1);;
+ obj_id_set_rotscale(task->data[15], task->data[2], task->data[2], 0);
+ sub_8079AB8(task->data[15], task->data[13]);
+ if (task->data[1] == 0)
+ task->data[0]++;
+ break;
+ case 2:
+ obj_delete_but_dont_free_vram(&gSprites[task->data[15]]);
+ task->data[0]++;
+ break;
+ case 3:
+ FreeOamMatrix(task->data[14]);
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80DC700(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 0);
+ sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 1);
+
+ if (IsContest())
+ sprite->pos1.y += 12;
+
+ sprite->data[1] = 8;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1];
+ sprite->data[0]++;
+ break;
+ case 1:
+ if (sprite->affineAnimEnded)
+ {
+ PlaySE12WithPanning(SE_W100, BattleAnimAdjustPanning(-64));
+ ChangeSpriteAffineAnim(sprite, 1);
+ sprite->data[0]++;
+ }
+ break;
+ case 2:
+ if (sprite->data[2]++ > 1)
+ {
+ sprite->data[2] = 0;
+ sprite->data[1]--;
+ REG_BLDALPHA = ((16 - sprite->data[1]) << 8) | sprite->data[1];
+
+ if (sprite->data[1] == 0)
+ {
+ sprite->data[0]++;
+ sprite->invisible = 1;
+ }
+ }
+
+ sprite->data[3] += 896;
+ sprite->pos2.y -= sprite->data[3] >> 8;
+ sprite->data[3] &= 0xFF;
+ break;
+ case 3:
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimSprite(sprite);
+ break;
+ }
+}
diff --git a/src/battle/anim/ring.c b/src/battle/anim/ring.c
index 915cadcbc..86b2c4659 100644
--- a/src/battle/anim/ring.c
+++ b/src/battle/anim/ring.c
@@ -10,7 +10,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
static void sub_80D1098(struct Sprite* sprite);
@@ -32,7 +32,7 @@ void sub_80D0FD8(struct Sprite* sprite)
r4 = gBattleAnimArgs[3] ^ 1;
if (IsDoubleBattle() && IsAnimBankSpriteVisible(bank ^ 2))
{
- sub_807A3FC(bank, r4, &sp0, &sp1);
+ SetAverageBattlerPositions(bank, r4, &sp0, &sp1);
if (r4 == 0)
r4 = GetBankPosition(bank, 0);
else
@@ -50,7 +50,7 @@ void sub_80D0FD8(struct Sprite* sprite)
void sub_80D1098(struct Sprite* sprite)
{
- if (sub_8078B5C(sprite))
+ if (TranslateAnimSpriteByDeltas(sprite))
{
FreeSpriteOamMatrix(sprite);
DestroyAnimSprite(sprite);
@@ -94,23 +94,23 @@ void sub_80D10B8(struct Sprite* sprite)
{
r9 = GetBankPosition(bankr7, r10) + gBattleAnimArgs[0];
if (IsAnimBankSpriteVisible(bankr8 ^ 2))
- sprite->subpriority = gSprites[gObjectBankIDs[bankr8 ^ 2]].subpriority - 1;
+ sprite->subpriority = gSprites[gBankSpriteIds[bankr8 ^ 2]].subpriority - 1;
else
- sprite->subpriority = gSprites[gObjectBankIDs[bankr8]].subpriority - 1;
+ sprite->subpriority = gSprites[gBankSpriteIds[bankr8]].subpriority - 1;
}
else
{
r9 = GetBankPosition(bankr7, r10) - gBattleAnimArgs[0];
if (gMain.inBattle && IsAnimBankSpriteVisible(bankr7 ^ 2))
{
- if (gSprites[gObjectBankIDs[bankr7]].pos1.x < gSprites[gObjectBankIDs[bankr7 ^ 2]].pos1.x)
- sprite->subpriority = gSprites[gObjectBankIDs[bankr7 ^ 2]].subpriority + 1;
+ if (gSprites[gBankSpriteIds[bankr7]].pos1.x < gSprites[gBankSpriteIds[bankr7 ^ 2]].pos1.x)
+ sprite->subpriority = gSprites[gBankSpriteIds[bankr7 ^ 2]].subpriority + 1;
else
- sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1;
+ sprite->subpriority = gSprites[gBankSpriteIds[bankr7]].subpriority - 1;
}
else
{
- sprite->subpriority = gSprites[gObjectBankIDs[bankr7]].subpriority - 1;
+ sprite->subpriority = gSprites[gBankSpriteIds[bankr7]].subpriority - 1;
}
}
@@ -118,7 +118,7 @@ void sub_80D10B8(struct Sprite* sprite)
r6 = GetBankPosition(bankr7, sp4) + gBattleAnimArgs[1];
if (gMain.inBattle && IsAnimBankSpriteVisible(bankr8 ^ 2))
{
- sub_807A3FC(bankr8, gBattleAnimArgs[6], &sp0, &sp1);
+ SetAverageBattlerPositions(bankr8, gBattleAnimArgs[6], &sp0, &sp1);
}
else
{
@@ -137,7 +137,7 @@ void sub_80D10B8(struct Sprite* sprite)
sprite->data[2] = sp0;
sprite->data[4] = sp1;
sprite->data[0] = gBattleAnimArgs[0];
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
sprite->callback = sub_80D1098;
sub_80D1098(sprite);
}
diff --git a/src/battle/anim/rock.c b/src/battle/anim/rock.c
new file mode 100644
index 000000000..6fbe065b8
--- /dev/null
+++ b/src/battle/anim/rock.c
@@ -0,0 +1,602 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "decompress.h"
+#include "palette.h"
+#include "rom_8077ABC.h"
+#include "sound.h"
+#include "task.h"
+#include "trig.h"
+#include "constants/songs.h"
+
+extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u32 gAnimMoveDmg;
+extern u16 gBattle_BG1_X;
+extern u16 gBattle_BG1_Y;
+extern u16 gBattle_BG3_Y;
+
+extern const u8 gBattleAnimBackgroundTilemap_SandstormBrew[];
+extern const u8 gBattleAnimBackgroundImage_SandstormBrew[];
+extern const u16 gBattleAnimSpritePalette_261[];
+extern const struct SpriteTemplate gSpriteTemplate_83DAD78;
+extern const struct SpriteTemplate gSpriteTemplate_83DAD90;
+
+extern const struct SubspriteTable gUnknown_083DAD10;
+
+static void sub_80DCF1C(struct Sprite *sprite);
+static void sub_80DD02C(struct Sprite *sprite);
+static void sub_80DD190(u8 taskId);
+static void sub_80DD604(u8 taskId);
+static void sub_80DD774(struct Task *task);
+static u8 sub_80DD8BC(void);
+static void sub_80DD928(struct Sprite *sprite);
+static void sub_80DD9FC(struct Sprite *sprite);
+
+
+void sub_80DCE9C(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[3] != 0)
+ SetAverageBattlerPositions(gAnimBankTarget, 0, &sprite->pos1.x, &sprite->pos1.y);
+
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += 14;
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[1]);
+ AnimateSprite(sprite);
+
+ sprite->data[0] = 0;
+ sprite->data[1] = 0;
+ sprite->data[2] = 4;
+ sprite->data[3] = 16;
+ sprite->data[4] = -70;
+ sprite->data[5] = gBattleAnimArgs[2];
+
+ StoreSpriteCallbackInData(sprite, sub_80DCF1C);
+ sprite->callback = sub_8078278;
+ sprite->callback(sprite);
+}
+
+static void sub_80DCF1C(struct Sprite *sprite)
+{
+ sprite->pos1.x += sprite->data[5];
+
+ sprite->data[0] = 192;
+ sprite->data[1] = sprite->data[5];
+ sprite->data[2] = 4;
+ sprite->data[3] = 32;
+ sprite->data[4] = -24;
+
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+ sprite->callback = sub_8078278;
+ sprite->callback(sprite);
+}
+
+void sub_80DCF60(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[5]);
+ AnimateSprite(sprite);
+
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ sprite->pos1.x -= gBattleAnimArgs[0];
+ else
+ sprite->pos1.x += gBattleAnimArgs[0];
+
+ sprite->pos1.y += gBattleAnimArgs[1];
+
+ sprite->data[0] = gBattleAnimArgs[4];
+ sprite->data[1] = sprite->pos1.x;
+ sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
+ sprite->data[3] = sprite->pos1.y;
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[3];
+
+ InitSpriteDataForLinearTranslation(sprite);
+ sprite->data[3] = 0;
+ sprite->data[4] = 0;
+
+ sprite->callback = sub_8078394;
+ StoreSpriteCallbackInData(sprite, move_anim_8074EE0);
+}
+
+void sub_80DCFE4(struct Sprite *sprite)
+{
+ if (gBattleAnimArgs[6] == 0)
+ InitAnimSpritePos(sprite, 0);
+ else
+ sub_8078764(sprite, 0);
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[1] = gBattleAnimArgs[2];
+ sprite->data[2] = gBattleAnimArgs[4];
+ sprite->data[3] = gBattleAnimArgs[5];
+
+ sprite->callback = sub_80DD02C;
+}
+
+static void sub_80DD02C(struct Sprite *sprite)
+{
+ sprite->data[4] += sprite->data[1];
+ sprite->pos2.y = -(sprite->data[4] >> 8);
+ sprite->pos2.x = Sin(sprite->data[5], sprite->data[3]);
+ sprite->data[5] = (sprite->data[5] + sprite->data[2]) & 0xFF;
+
+ if (--sprite->data[0] == -1)
+ {
+ DestroyAnimSprite(sprite);
+ }
+}
+
+void do_boulder_dust(u8 taskId)
+{
+ struct Struct_sub_8078914 subStruct;
+ int var0 = 0;
+
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0x1000;
+ REG_BG1CNT_BITFIELD.priority = 1;
+ REG_BG1CNT_BITFIELD.screenSize = 0;
+
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 1;
+
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+
+ sub_8078914(&subStruct);
+ DmaFill32Defvars(3, 0, subStruct.field_4, 0x1000);
+ LZDecompressVram(&gBattleAnimBackgroundTilemap_SandstormBrew, subStruct.field_4);
+ LZDecompressVram(&gBattleAnimBackgroundImage_SandstormBrew, subStruct.field_0);
+ LoadCompressedPalette(&gBattleAnimSpritePalette_261, subStruct.field_8 << 4, 32);
+
+ if (IsContest())
+ sub_80763FC(subStruct.field_8, (u16 *)subStruct.field_4, 0, 0);
+
+ if (gBattleAnimArgs[0] != 0 && GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ var0 = 1;
+
+ gTasks[taskId].data[0] = var0;
+ gTasks[taskId].func = sub_80DD190;
+}
+
+static void sub_80DD190(u8 taskId)
+{
+ struct Struct_sub_8078914 subStruct;
+
+ if (gTasks[taskId].data[0] == 0)
+ gBattle_BG1_X += 0xFFFA;
+ else
+ gBattle_BG1_X += 6;
+
+ gBattle_BG1_Y += -1;
+
+ switch (gTasks[taskId].data[12])
+ {
+ case 0:
+ if (++gTasks[taskId].data[10] == 4)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11]++;
+ REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8);
+ if (gTasks[taskId].data[11] == 7)
+ {
+ gTasks[taskId].data[12]++;
+ gTasks[taskId].data[11] = 0;
+ }
+ }
+ break;
+ case 1:
+ if (++gTasks[taskId].data[11] == 101)
+ {
+ gTasks[taskId].data[11] = 7;
+ gTasks[taskId].data[12]++;
+ }
+ break;
+ case 2:
+ if (++gTasks[taskId].data[10] == 4)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[11]--;
+ REG_BLDALPHA = gTasks[taskId].data[11] | ((16 - gTasks[taskId].data[11]) << 8);
+ if (gTasks[taskId].data[11] == 0)
+ {
+ gTasks[taskId].data[12]++;
+ gTasks[taskId].data[11] = 0;
+ }
+ }
+ break;
+ case 3:
+ sub_8078914(&subStruct);
+ DmaFill32Large(3, 0, subStruct.field_0, 0x2000, 0x1000);
+ DmaClear32(3, subStruct.field_4, 0x800);
+ if (!IsContest())
+ REG_BG1CNT_BITFIELD.charBaseBlock = 0;
+
+ gTasks[taskId].data[12]++;
+ // fall through
+ case 4:
+ gBattle_BG1_X = 0;
+ gBattle_BG1_Y = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BG1CNT_BITFIELD.priority = 1;
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+void sub_80DD3AC(struct Sprite *sprite)
+{
+ if (sprite->data[0] == 0)
+ {
+ if (gBattleAnimArgs[3] != 0 && GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
+ {
+ sprite->pos1.x = 304;
+ gBattleAnimArgs[1] = -gBattleAnimArgs[1];
+ sprite->data[5] = 1;
+ sprite->oam.matrixNum = 8;
+ }
+ else
+ {
+ sprite->pos1.x = -64;
+ }
+
+ sprite->pos1.y = gBattleAnimArgs[0];
+ SetSubspriteTables(sprite, &gUnknown_083DAD10);
+ sprite->data[1] = gBattleAnimArgs[1];
+ sprite->data[2] = gBattleAnimArgs[2];
+ sprite->data[0]++;
+ }
+ else
+ {
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+ sprite->pos2.x += (sprite->data[3] >> 8);
+ sprite->pos2.y += (sprite->data[4] >> 8);
+ sprite->data[3] &= 0xFF;
+ sprite->data[4] &= 0xFF;
+
+ if (sprite->data[5] == 0)
+ {
+ if (sprite->pos1.x + sprite->pos2.x > 272)
+ {
+ sprite->callback = DestroyAnimSprite;
+ }
+ }
+ else if (sprite->pos1.x + sprite->pos2.x < -32)
+ {
+ sprite->callback = DestroyAnimSprite;
+ }
+ }
+}
+
+void sub_80DD490(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[4]);
+ InitAnimSpritePos(sprite, 0);
+
+ sprite->data[0] = gBattleAnimArgs[3];
+ sprite->data[2] = sprite->pos1.x;
+ sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[2];
+
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
+}
+
+void sub_80DD4D4(u8 taskId)
+{
+ u16 var0, var1, var2, var3;
+ u8 var4;
+ int var5;
+ s16 pan1, pan2;
+ struct Task *task;
+
+ task = &gTasks[taskId];
+
+ var0 = GetBankPosition(gAnimBankAttacker, 2);
+ var1 = GetBankPosition(gAnimBankAttacker, 1) + 24;
+ var2 = GetBankPosition(gAnimBankTarget, 2);
+ var3 = GetBankPosition(gAnimBankTarget, 1) + 24;
+
+ if ((gAnimBankAttacker ^ 2) == gAnimBankTarget)
+ var3 = var1;
+
+ var4 = sub_80DD8BC();
+ if (var4 == 1)
+ task->data[8] = 32;
+ else
+ task->data[8] = 48 - (var4 * 8);
+
+ task->data[0] = 0;
+ task->data[11] = 0;
+ task->data[9] = 0;
+ task->data[12] = 1;
+
+ var5 = task->data[8];
+ if (var5 < 0)
+ var5 += 7;
+
+ task->data[10] = (var5 >> 3) - 1;
+
+ task->data[2] = var0 * 8;
+ task->data[3] = var1 * 8;
+ task->data[4] = ((var2 - var0) * 8) / task->data[8];
+ task->data[5] = ((var3 - var1) * 8) / task->data[8];
+ task->data[6] = 0;
+ task->data[7] = 0;
+
+ pan1 = BattleAnimAdjustPanning(-64);
+ pan2 = BattleAnimAdjustPanning(63);
+
+ task->data[13] = pan1;
+ task->data[14] = (pan2 - pan1) / task->data[8];
+ task->data[1] = var4;
+ task->data[15] = GetAnimBankSpriteId(0);
+
+ task->func = sub_80DD604;
+}
+
+static void sub_80DD604(u8 taskId)
+{
+ struct Task *task;
+
+ task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[6] -= task->data[4];
+ task->data[7] -= task->data[5];
+ gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
+ gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
+
+ if (++task->data[9] == 10)
+ {
+ task->data[11] = 20;
+ task->data[0]++;
+ }
+
+ PlaySE12WithPanning(SE_W029, task->data[13]);
+ break;
+ case 1:
+ if (--task->data[11] == 0)
+ task->data[0]++;
+ break;
+ case 2:
+ if (--task->data[9] != 0)
+ {
+ task->data[6] += task->data[4];
+ task->data[7] += task->data[5];
+ }
+ else
+ {
+ task->data[6] = 0;
+ task->data[7] = 0;
+ task->data[0]++;
+ }
+
+ gSprites[task->data[15]].pos2.x = task->data[6] >> 3;
+ gSprites[task->data[15]].pos2.y = task->data[7] >> 3;
+ break;
+ case 3:
+ task->data[2] += task->data[4];
+ task->data[3] += task->data[5];
+ if (++task->data[9] >= task->data[10])
+ {
+ task->data[9] = 0;
+ sub_80DD774(task);
+ task->data[13] += task->data[14];
+ PlaySE12WithPanning(SE_W091, task->data[13]);
+ }
+
+ if (--task->data[8] == 0)
+ {
+ task->data[0]++;
+ }
+ break;
+ case 4:
+ if (task->data[11] == 0)
+ DestroyAnimVisualTask(taskId);
+ break;
+ }
+}
+
+static void sub_80DD774(struct Task *task)
+{
+ const struct SpriteTemplate *spriteTemplate;
+ int var0;
+ u16 x, y;
+ u8 spriteId;
+
+ switch (task->data[1])
+ {
+ case 1:
+ spriteTemplate = &gSpriteTemplate_83DAD78;
+ var0 = 0;
+ break;
+ case 2:
+ case 3:
+ spriteTemplate = &gSpriteTemplate_83DAD90;
+ var0 = 80;
+ break;
+ case 4:
+ spriteTemplate = &gSpriteTemplate_83DAD90;
+ var0 = 64;
+ break;
+ case 5:
+ spriteTemplate = &gSpriteTemplate_83DAD90;
+ var0 = 48;
+ break;
+ default:
+ return;
+ }
+
+ x = task->data[2] >> 3;
+ y = task->data[3] >> 3;
+ x += (task->data[12] * 4);
+
+ spriteId = CreateSprite(spriteTemplate, x, y, 35);
+ if (spriteId != 64)
+ {
+ gSprites[spriteId].data[0] = 18;
+ gSprites[spriteId].data[2] = ((task->data[12] * 20) + x) + (task->data[1] * 3);
+ gSprites[spriteId].data[4] = y;
+ gSprites[spriteId].data[5] = -16 - (task->data[1] * 2);
+ gSprites[spriteId].oam.tileNum += var0;
+
+ InitAnimSpriteTranslationOverDuration(&gSprites[spriteId]);
+ task->data[11]++;
+ }
+
+ task->data[12] *= -1;
+}
+
+void sub_80DD87C(struct Sprite *sprite)
+{
+ if (TranslateAnimSpriteLinearAndSine(sprite))
+ {
+ u8 taskId = FindTaskIdByFunc(sub_80DD604);
+ if (taskId != 0xFF)
+ gTasks[taskId].data[11]--;
+
+ DestroySprite(sprite);
+ }
+}
+
+u8 sub_80DD8BC(void)
+{
+ u8 retVal = gAnimDisableStructPtr->rolloutTimer2 - gAnimDisableStructPtr->rolloutTimer1;
+ u8 var0 = retVal - 1;
+ if (var0 > 4)
+ {
+ retVal = 1;
+ }
+
+ return retVal;
+}
+
+void sub_80DD8E8(struct Sprite *sprite)
+{
+ StartSpriteAnim(sprite, gBattleAnimArgs[4]);
+
+ sprite->pos2.x = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[3] -= gBattleAnimArgs[2];
+ sprite->data[0] = 3;
+ sprite->data[1] = gBattleAnimArgs[3];
+ sprite->callback = sub_80DD928;
+ sprite->invisible = 1;
+}
+
+static void sub_80DD928(struct Sprite *sprite)
+{
+ sprite->invisible = 0;
+ if (sprite->data[3] != 0)
+ {
+ sprite->pos2.y = sprite->data[2] + sprite->data[3];
+ sprite->data[3] += sprite->data[0];
+ sprite->data[0]++;
+ if (sprite->data[3] > 0)
+ {
+ sprite->data[3] = 0;
+ }
+ }
+ else
+ {
+ if (--sprite->data[1] == 0)
+ {
+ DestroyAnimSprite(sprite);
+ }
+ }
+}
+
+void sub_80DD978(struct Sprite *sprite)
+{
+ if (GetBankSide(gAnimBankAttacker) == SIDE_OPPONENT)
+ StartSpriteAffineAnim(sprite, 1);
+
+ TranslateAnimSpriteToTargetMonLocation(sprite);
+}
+
+void sub_80DD9A4(struct Sprite *sprite)
+{
+ sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0);
+ sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1);
+ sprite->pos1.x += gBattleAnimArgs[0];
+ sprite->pos1.y += gBattleAnimArgs[1];
+
+ sprite->data[1] = gBattleAnimArgs[0];
+ sprite->data[2] = gBattleAnimArgs[1];
+ sprite->data[5] = gBattleAnimArgs[2];
+
+ StartSpriteAnim(sprite, gBattleAnimArgs[3]);
+ sprite->callback = sub_80DD9FC;
+}
+
+static void sub_80DD9FC(struct Sprite *sprite)
+{
+ sprite->data[0] += 8;
+ sprite->data[3] += sprite->data[1];
+ sprite->data[4] += sprite->data[2];
+
+ sprite->pos2.x += sprite->data[3] / 40;
+ sprite->pos2.y -= Sin(sprite->data[0], sprite->data[5]);
+
+ if (sprite->data[0] > 140)
+ DestroyAnimSprite(sprite);
+}
+
+void sub_80DDA4C(u8 taskId)
+{
+ if ((s32)gAnimMoveDmg < 33)
+ gBattleAnimArgs[7] = 0;
+ if (gAnimMoveDmg - 33 < 33)
+ gBattleAnimArgs[7] = 1;
+ if ((s32)gAnimMoveDmg > 65)
+ gBattleAnimArgs[7] = 2;
+
+ DestroyAnimVisualTask(taskId);
+}
+
+void sub_80DDA8C(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_80789D4(0);
+ gTasks[taskId].data[1] = 200;
+ }
+
+ gBattle_BG3_Y += gTasks[taskId].data[1] / 10;
+ gTasks[taskId].data[1] -= 3;
+
+ if (gTasks[taskId].data[0] == 120)
+ {
+ sub_80789D4(1);
+ DestroyAnimVisualTask(taskId);
+ }
+
+ gTasks[taskId].data[0]++;
+}
+
+void sub_80DDAF0(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ sub_80789D4(0);
+ gTasks[taskId].data[0]++;
+ gTasks[taskId].data[2] = gBattle_BG3_Y;
+ }
+
+ gTasks[taskId].data[1] += 80;
+ gTasks[taskId].data[1] &= 0xFF;
+ gBattle_BG3_Y = gTasks[taskId].data[2] + Cos(4, gTasks[taskId].data[1]);
+
+ if (gBattleAnimArgs[7] == 0xFFF)
+ {
+ gBattle_BG3_Y = 0;
+ sub_80789D4(1);
+ DestroyAnimVisualTask(taskId);
+ }
+}
diff --git a/src/battle/anim/scan.c b/src/battle/anim/scan.c
index 22bb26973..403894cc8 100644
--- a/src/battle/anim/scan.c
+++ b/src/battle/anim/scan.c
@@ -26,7 +26,7 @@ void sub_80CD3E0(struct Sprite* sprite)
sprite->pos1.x -= 32;
sprite->pos1.y -= 32;
sprite->data[0] = 20;
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, sub_80CD408);
}
@@ -36,7 +36,7 @@ void sub_80CD408(struct Sprite* sprite)
{
case 0:
sprite->data[0] = 1;
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, sub_80CD408);
break;
case 1:
@@ -47,7 +47,7 @@ void sub_80CD408(struct Sprite* sprite)
sprite->data[0] = 8;
sprite->data[2] = sprite->pos1.x + gUnknown_083D6DDC[sprite->data[5] >> 8][0];
sprite->data[4] = sprite->pos1.y + gUnknown_083D6DDC[sprite->data[5] >> 8][1];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, sub_80CD4B8);
sprite->data[5] += 0x100;
PlaySE12WithPanning(0xD2, BattleAnimAdjustPanning(0x3F));
@@ -62,7 +62,7 @@ void sub_80CD4B8(struct Sprite* sprite)
if ((sprite->data[5] >> 8) == 4)
{
sprite->data[0] = 10;
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, sub_80CD4EC);
}
else
@@ -80,7 +80,7 @@ void sub_80CD4EC(struct Sprite* sprite)
sprite->data[0] = 3;
sprite->data[1] = 0;
sprite->data[2] = 0;
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, sub_80CD5A8);
}
else
@@ -112,7 +112,7 @@ void sub_80CD4EC(struct Sprite* sprite)
sprite->data[0] = 6;
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + a;
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + b;
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, sub_80CD654);
}
}
diff --git a/src/battle/anim/seed.c b/src/battle/anim/seed.c
index be8613a74..7f8154504 100644
--- a/src/battle/anim/seed.c
+++ b/src/battle/anim/seed.c
@@ -7,15 +7,20 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-static void sub_80CAB88(struct Sprite* sprite);
-static void sub_80CABC0(struct Sprite* sprite);
+static void AnimLeechSeedStep(struct Sprite* sprite);
+static void AnimLeechSeedSprouts(struct Sprite* sprite);
// seed (sprouts a sapling from a seed.)
// Used by Leech Seed.
-
-void sub_80CAB18(struct Sprite* sprite)
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+// arg 5: wave amplitude
+void AnimLeechSeed(struct Sprite* sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
if (GetBankSide(gAnimBankAttacker))
{
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
@@ -25,26 +30,26 @@ void sub_80CAB18(struct Sprite* sprite)
sprite->data[2] = GetBankPosition(gAnimBankTarget, 0) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(gAnimBankTarget, 1) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
- sub_80786EC(sprite);
- sprite->callback = sub_80CAB88;
+ InitAnimSpriteTranslationOverDuration(sprite);
+ sprite->callback = AnimLeechSeedStep;
}
-void sub_80CAB88(struct Sprite* sprite)
+static void AnimLeechSeedStep(struct Sprite* sprite)
{
- if (sub_8078718(sprite))
+ if (TranslateAnimSpriteLinearAndSine(sprite))
{
sprite->invisible = 1;
sprite->data[0] = 10;
- sprite->callback = sub_80782D8;
- StoreSpriteCallbackInData(sprite, sub_80CABC0);
+ sprite->callback = WaitAnimForDuration;
+ StoreSpriteCallbackInData(sprite, AnimLeechSeedSprouts);
}
}
-void sub_80CABC0(struct Sprite* sprite)
+static void AnimLeechSeedSprouts(struct Sprite* sprite)
{
sprite->invisible = 0;
StartSpriteAnim(sprite, 1);
sprite->data[0] = 60;
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/shadow_minimize.c b/src/battle/anim/shadow_minimize.c
index 94069374f..61645bc59 100644
--- a/src/battle/anim/shadow_minimize.c
+++ b/src/battle/anim/shadow_minimize.c
@@ -93,7 +93,7 @@ void sub_80D04E0(u8 taskId)
sub_8078F40(task->data[0]);
gSprites[task->data[15]].pos2.y = 0;
DestroyAnimVisualTask(taskId);
- break;
+ break;
}
}
@@ -110,10 +110,11 @@ void sub_80D0614(struct Task* task, u8 taskId)
}
else
{
- gSprites[r8].oam.objMode = 1;
- gSprites[r8].oam.affineMode = 3;
- gSprites[r8].affineAnimPaused = 1;
- gSprites[r8].oam.matrixNum = r6;
+ gSprites[r8].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[r8].oam.affineMode = ST_OAM_AFFINE_DOUBLE;
+ gSprites[r8].affineAnimPaused = TRUE;
+ r6 &= 0x1f;
+ gSprites[r8].oam.matrixNum = r6; // need to inhibit optimizing out the mov r0, 0x3f / neg r0, r0
gSprites[r8].subpriority = task->data[7] - task->data[3];
task->data[3]++;
task->data[6]++;
@@ -132,7 +133,7 @@ __attribute__((naked))
void sub_80D0614(struct Task* task, u8 taskId)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
+ push {r4-r7,lr}\n\
mov r7, r9\n\
mov r6, r8\n\
push {r6,r7}\n\
diff --git a/src/battle/anim/slash.c b/src/battle/anim/slash.c
index 6adcaf098..306968111 100644
--- a/src/battle/anim/slash.c
+++ b/src/battle/anim/slash.c
@@ -60,7 +60,7 @@ void sub_80CDE78(struct Sprite* sprite)
sprite->data[1] = 8;
sprite->data[2] = 0;
StoreSpriteCallbackInData(sprite, sub_80CDEB0);
- sprite->callback = sub_8078364;
+ sprite->callback = TranslateSpriteOverDuration;
}
}
diff --git a/src/battle/anim/slice.c b/src/battle/anim/slice.c
index fe8745483..80c58dddf 100644
--- a/src/battle/anim/slice.c
+++ b/src/battle/anim/slice.c
@@ -8,19 +8,21 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-static void sub_80CCB00(struct Sprite* sprite);
+static void AnimSliceStep(struct Sprite* sprite);
-// slice (the cutting animation showing as a yellow line drawn diagonally)
-// Used in Cut, Fury Cutter, Aerial Ace, and Air Cutter.
-
-void sub_80CC914(struct Sprite* sprite)
+// Moves the sprite in a diagonally slashing motion across the target mon.
+// Used by moves such as MOVE_CUT and MOVE_AERIAL_ACE.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: slice direction; 0 = right-to-left, 1 = left-to-right
+void AnimCuttingSlice(struct Sprite* sprite)
{
sprite->pos1.x = GetBankPosition(gAnimBankTarget, 0);
sprite->pos1.y = GetBankPosition(gAnimBankTarget, 1);
if (GetBankSide(gAnimBankTarget) == 0)
sprite->pos1.y += 8;
- sprite->callback = sub_80CCB00;
+ sprite->callback = AnimSliceStep;
if (gBattleAnimArgs[2] == 0)
{
sprite->pos1.x += gBattleAnimArgs[0];
@@ -70,7 +72,7 @@ void sub_80CC9BC(struct Sprite* sprite)
if (GetBankSide(gAnimBankTarget) == 0)
sprite->pos1.y += 8;
- sprite->callback = sub_80CCB00;
+ sprite->callback = AnimSliceStep;
if (gBattleAnimArgs[2] == 0)
{
sprite->pos1.x += gBattleAnimArgs[0];
@@ -89,7 +91,7 @@ void sub_80CC9BC(struct Sprite* sprite)
sprite->data[1] = -sprite->data[1];
}
-void sub_80CCB00(struct Sprite* sprite)
+static void AnimSliceStep(struct Sprite* sprite)
{
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
@@ -106,6 +108,6 @@ void sub_80CCB00(struct Sprite* sprite)
{
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
sprite->data[0] = 3;
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
}
}
diff --git a/src/battle/anim/sonic.c b/src/battle/anim/sonic.c
index 0897ec6e3..1501f51f1 100644
--- a/src/battle/anim/sonic.c
+++ b/src/battle/anim/sonic.c
@@ -9,14 +9,18 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-// sonic (shoots a projectile towards the target.)
-// Used in Sonic Boom and Air Cutter.
-
-void sub_80CF6DC(struct Sprite* sprite)
+// Moves a projectile towards the target mon. The sprite is rotated to be pointing
+// in the same direction it's moving.
+// arg 0: initial x pixel offset
+// arg 1: initial y pixel offset
+// arg 2: target x pixel offset
+// arg 3: target y pixel offset
+// arg 4: duration
+void AnimSonicBoomProjectile(struct Sprite* sprite)
{
- s16 a;
- s16 b;
- u16 c;
+ s16 targetXPos;
+ s16 targetYPos;
+ u16 rotation;
if (IsContest())
{
@@ -29,19 +33,19 @@ void sub_80CF6DC(struct Sprite* sprite)
gBattleAnimArgs[3] = -gBattleAnimArgs[3];
}
- sub_80787B0(sprite, 1);
- a = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
- b = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
- c = sub_80790F0(a - sprite->pos1.x, b - sprite->pos1.y);
- c += 0xF000;
+ InitAnimSpritePos(sprite, 1);
+ targetXPos = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
+ targetYPos = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
+ rotation = ArcTan2Neg(targetXPos - sprite->pos1.x, targetYPos - sprite->pos1.y);
+ rotation += 0xF000;
if (IsContest())
- c -= 0x6000;
+ rotation -= 0x6000;
- sub_8078FDC(sprite, 0, 0x100, 0x100, c);
+ sub_8078FDC(sprite, 0, 0x100, 0x100, rotation);
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[2] = a;
- sprite->data[4] = b;
- sprite->callback = sub_8078B34;
+ sprite->data[2] = targetXPos;
+ sprite->data[4] = targetYPos;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/sonic_task.c b/src/battle/anim/sonic_task.c
index 924b1b568..260ae544c 100644
--- a/src/battle/anim/sonic_task.c
+++ b/src/battle/anim/sonic_task.c
@@ -87,7 +87,7 @@ void sub_80CFB04(u8 taskId)
if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
&& IsAnimBankSpriteVisible(gAnimBankTarget ^ 2))
{
- sub_807A3FC(gAnimBankTarget, 0, &sp1, &sp2);
+ SetAverageBattlerPositions(gAnimBankTarget, 0, &sp1, &sp2);
}
else
{
diff --git a/src/battle/anim/sunlight.c b/src/battle/anim/sunlight.c
index e6fd49a11..88112c74a 100644
--- a/src/battle/anim/sunlight.c
+++ b/src/battle/anim/sunlight.c
@@ -12,6 +12,6 @@ void sub_80D517C(struct Sprite *sprite)
sprite->data[0] = 60;
sprite->data[2] = 140;
sprite->data[4] = 80;
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/sword.c b/src/battle/anim/sword.c
index b46fe6759..3367cca07 100644
--- a/src/battle/anim/sword.c
+++ b/src/battle/anim/sword.c
@@ -15,7 +15,7 @@ static void sub_80CF6B4(struct Sprite* sprite);
void sub_80CF690(struct Sprite* sprite)
{
- sub_80787B0(sprite, 0);
+ InitAnimSpritePos(sprite, 0);
sprite->callback = sub_80785E4;
StoreSpriteCallbackInData(sprite, sub_80CF6B4);
}
@@ -25,6 +25,6 @@ void sub_80CF6B4(struct Sprite* sprite)
sprite->data[0] = 6;
sprite->data[2] = sprite->pos1.x;
sprite->data[4] = sprite->pos1.y - 32;
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/battle/anim/tile_out.c b/src/battle/anim/tile_out.c
index 50468a440..39d4ff01f 100644
--- a/src/battle/anim/tile_out.c
+++ b/src/battle/anim/tile_out.c
@@ -37,7 +37,7 @@ void sub_80CE1AC(struct Sprite* sprite)
sprite->data[0] = 30;
sprite->data[2] = GetBankPosition(gAnimBankAttacker, 2);
sprite->data[4] = GetBankPosition(gAnimBankAttacker, 3);
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
}
diff --git a/src/battle/anim/unused_4.c b/src/battle/anim/unused_4.c
index bda476a0a..50ffaba4a 100644
--- a/src/battle/anim/unused_4.c
+++ b/src/battle/anim/unused_4.c
@@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
static void sub_80CD9D4(struct Sprite* sprite);
@@ -27,7 +27,7 @@ void sub_80CD9D4(struct Sprite* sprite)
{
case 0:
sprite->data[1] = 0;
- sprite->data[2] = gObjectBankIDs[gAnimBankAttacker];
+ sprite->data[2] = gBankSpriteIds[gAnimBankAttacker];
sprite->data[3] = GetBankSide(gAnimBankAttacker);
sprite->data[4] = (sprite->data[3] != 0) ? 0x200 : -0x200;
sprite->data[5] = 0;
diff --git a/src/battle/anim/unused_7.c b/src/battle/anim/unused_7.c
index 2be6e7633..5a2de33c3 100644
--- a/src/battle/anim/unused_7.c
+++ b/src/battle/anim/unused_7.c
@@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
// unused_7
@@ -32,7 +32,7 @@ void sub_80CF3C4(struct Sprite* sprite)
u8 a;
sprite->pos1.x = GetBankPosition(gAnimBankAttacker, 2);
sprite->pos1.y = GetBankPosition(gAnimBankAttacker, 3);
- a = gObjectBankIDs[gAnimBankTarget];
+ a = gBankSpriteIds[gAnimBankTarget];
if (GetBankSide(gAnimBankAttacker) != 0)
{
sprite->pos1.x -= gBattleAnimArgs[0];
diff --git a/src/battle/anim/unused_8.c b/src/battle/anim/unused_8.c
index 03772f951..c67ec2754 100644
--- a/src/battle/anim/unused_8.c
+++ b/src/battle/anim/unused_8.c
@@ -15,11 +15,11 @@ static void sub_80CF4B8(struct Sprite* sprite);
void sub_80CF458(struct Sprite* sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
sprite->data[0] = gBattleAnimArgs[2];
sprite->data[1] = gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[4];
- sprite->callback = sub_80782D8;
+ sprite->callback = WaitAnimForDuration;
StoreSpriteCallbackInData(sprite, sub_80CF490);
}
@@ -28,7 +28,7 @@ void sub_80CF490(struct Sprite* sprite)
sprite->data[0] = sprite->data[1];
sprite->data[2] = sprite->pos1.x;
sprite->data[4] = sprite->pos1.y + 15;
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, sub_80CF4B8);
}
diff --git a/src/battle/anim/unused_9.c b/src/battle/anim/unused_9.c
index cf3ccb0d4..6e0d0321b 100644
--- a/src/battle/anim/unused_9.c
+++ b/src/battle/anim/unused_9.c
@@ -3,6 +3,7 @@
#include "trig.h"
#include "battle_anim.h"
#include "sound.h"
+#include "palette.h"
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
@@ -17,7 +18,7 @@ static void sub_80CFE2C(struct Sprite* sprite);
void sub_80CFDFC(struct Sprite* sprite)
{
- sub_80787B0(sprite, 0);
+ InitAnimSpritePos(sprite, 0);
sprite->data[0] = 0x100 + (IndexOfSpritePaletteTag(gSpriteTemplate_83D75AC.paletteTag) << 4);
sprite->callback = sub_80CFE2C;
}
@@ -26,23 +27,19 @@ void sub_80CFDFC(struct Sprite* sprite)
void sub_80CFE2C(struct Sprite* sprite)
{
u16 r7;
- u16* r1;
- u16* r2;
+ u16 r5;
int i;
if (++sprite->data[1] == 2)
{
sprite->data[1] = 0;
- r7 = gPlttBufferFaded[sprite->data[0] + 8];
- r2 = &gPlttBufferFaded[0x10];
- r1 = &gPlttBufferFaded[sprite->data[0] + 9];
- for (i = 7; i >= 0; i--)
+ r5 = sprite->data[0];
+ r7 = gPlttBufferFaded[r5 + 8];
+ for (i = 0; i < 8; i++)
{
- *r2 = *r1;
- r1++;
- r2++;
+ gPlttBufferFaded[r5 + i + 8] = gPlttBufferFaded[r5 + i + 9];
}
+ gPlttBufferFaded[r5 + 15] = r7;
- gPlttBufferFaded[sprite->data[0] + 15] = r7;
if (++sprite->data[2] == 0x18)
DestroyAnimSprite(sprite);
}
diff --git a/src/battle/anim/water.c b/src/battle/anim/water.c
index 4068cbe78..e6945f9b2 100644
--- a/src/battle/anim/water.c
+++ b/src/battle/anim/water.c
@@ -18,7 +18,7 @@ void sub_80D37FC(struct Sprite *sprite)
sprite->data[2] = sprite->pos1.x + gBattleAnimArgs[2];
sprite->data[4] = sprite->pos1.y + gBattleAnimArgs[4];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -30,7 +30,7 @@ void sub_80D3838(struct Sprite *sprite)
}
else
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
}
sprite->data[7] = gBattleAnimArgs[2];
diff --git a/src/battle/anim/wisp_fire.c b/src/battle/anim/wisp_fire.c
index 348ce6426..24cecb60c 100644
--- a/src/battle/anim/wisp_fire.c
+++ b/src/battle/anim/wisp_fire.c
@@ -10,7 +10,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankTarget;
extern u8 gAnimBankAttacker;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern s8 gUnknown_083D9794[16];
extern s8 gUnknown_083D97A4[16];
@@ -175,7 +175,7 @@ void sub_80D60B4(u8 taskId)
}
gTasks[taskId].data[0]++;
- spriteId = gObjectBankIDs[gAnimBankTarget];
+ spriteId = gBankSpriteIds[gAnimBankTarget];
if (!gTasks[taskId].data[4])
unk = gUnknown_083D9794[gTasks[taskId].data[0] % 10];
diff --git a/src/battle/anim/wisp_orb.c b/src/battle/anim/wisp_orb.c
index 0cbe6eed7..7c22b7f13 100644
--- a/src/battle/anim/wisp_orb.c
+++ b/src/battle/anim/wisp_orb.c
@@ -21,7 +21,7 @@ void sub_80D5B0C(struct Sprite *sprite)
switch (sprite->data[0])
{
case 0:
- sub_80787B0(sprite, 0);
+ InitAnimSpritePos(sprite, 0);
StartSpriteAnim(sprite, gBattleAnimArgs[2]);
sprite->data[7] = gBattleAnimArgs[2];
@@ -86,7 +86,7 @@ static void sub_80D5C5C(struct Sprite *sprite)
s16 initialData5;
s16 newData5;
- if (!sub_8078B5C(sprite))
+ if (!TranslateAnimSpriteByDeltas(sprite))
{
sprite->pos2.x += Sin(sprite->data[5], 16);
initialData5 = sprite->data[5];
diff --git a/src/battle/anim/withdraw.c b/src/battle/anim/withdraw.c
index e67248b9f..933c97fa9 100644
--- a/src/battle/anim/withdraw.c
+++ b/src/battle/anim/withdraw.c
@@ -8,7 +8,7 @@ extern s16 gBattleAnimArgs[];
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
static void sub_80CF514(u8 taskId);
@@ -17,13 +17,13 @@ static void sub_80CF514(u8 taskId);
void sub_80CF4D8(u8 taskId)
{
- sub_8078E70(gObjectBankIDs[gAnimBankAttacker], 0);
+ sub_8078E70(gBankSpriteIds[gAnimBankAttacker], 0);
gTasks[taskId].func = sub_80CF514;
}
void sub_80CF514(u8 taskId)
{
- u8 a = gObjectBankIDs[gAnimBankAttacker];
+ u8 a = gBankSpriteIds[gAnimBankAttacker];
s16 b;
if (GetBankSide(gAnimBankAttacker) == 0)
{
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index af3443ca7..960905d1c 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -1,5 +1,12 @@
#include "global.h"
#include "constants/abilities.h"
+#include "constants/battle_move_effects.h"
+#include "constants/hold_effects.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "gba/flash_internal.h"
#include "battle.h"
#include "battle_ai.h"
#include "battle_interface.h"
@@ -7,16 +14,20 @@
#include "battle_setup.h"
#include "battle_util.h"
#include "data2.h"
+#include "decompress.h"
#include "event_data.h"
#include "evolution_scene.h"
#include "item.h"
+#include "item_menu.h"
#include "link.h"
#include "main.h"
#include "m4a.h"
#include "name_string_util.h"
+#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
#include "pokeball.h"
+#include "pokeblock.h"
#include "pokedex.h"
#include "pokemon.h"
#include "random.h"
@@ -24,9 +35,8 @@
#include "rom3.h"
#include "rom_8077ABC.h"
#include "rom_8094928.h"
-#include "constants/songs.h"
+#include "safari_zone.h"
#include "sound.h"
-#include "constants/species.h"
#include "sprite.h"
#include "string_util.h"
#include "task.h"
@@ -36,10 +46,6 @@
#include "tv.h"
#include "scanline_effect.h"
#include "util.h"
-#include "constants/battle_move_effects.h"
-#include "constants/items.h"
-#include "constants/hold_effects.h"
-#include "constants/moves.h"
#include "ewram.h"
struct UnknownStruct7
@@ -64,9 +70,16 @@ struct UnknownStruct12
u8 filler4[0x54];
};
+extern void sub_802BBD4();
+
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern const u8 Str_821F7B8[];
+extern u8 gUnknown_02023A14_50;
extern const u16 gUnknown_08D004E0[];
extern const struct MonCoords gCastformFrontSpriteCoords[];
-
+extern const u8 Str_821F7EA[];
+extern const u8 gUnknown_Debug_821F7F3[];
+extern const u8 BattleText_YesNo[];
extern u8 gStatStageRatios[][2];
extern u8 gActionsByTurnOrder[4];
extern struct UnknownPokemonStruct2 gUnknown_02023A00[];
@@ -78,8 +91,8 @@ extern u16 gBattlePartyID[];
extern u8 gCurrentActionFuncId;
extern u8 gBanksByTurnOrder[];
extern struct UnknownStruct12 gUnknown_02024AD0[];
-extern u8 gObjectBankIDs[];
-extern u16 gCurrentMove;
+extern u8 gBankSpriteIds[];
+extern u16 gCurrentMove; // This is mis-named. It is a species, not a move ID.
extern u8 gLastUsedAbility;
extern u8 gStringBank;
extern u8 gAbsentBankFlags;
@@ -164,7 +177,7 @@ extern u8 gUnknown_081FA70C[][3];
extern u8 gUnknown_081FA71B[];
extern u8 gUnknown_081FA71F[];
-
+void sub_8010824(void);
static void BattlePrepIntroSlide(void);
void CheckFocusPunch_ClearVarsBeforeTurnStarts(void);
void SetActionsAndBanksTurnOrder(void);
@@ -232,7 +245,14 @@ void InitBattle(void)
gBattle_BG2_Y = 0;
gBattle_BG3_X = 0;
gBattle_BG3_Y = 0;
+
+#if DEBUG
+ if (!(gUnknown_02023A14_50 & 8))
+ gBattleTerrain = BattleSetup_GetTerrain();
+#else
gBattleTerrain = BattleSetup_GetTerrain();
+#endif
+
Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
Text_InitWindowWithTemplate(&gUnknown_030041D0, &gWindowTemplate_81E71D0);
Text_InitWindowWithTemplate(&gUnknown_03004250, &gWindowTemplate_81E71EC);
@@ -249,7 +269,11 @@ void InitBattle(void)
SetMainCallback2(sub_800F298);
else
SetMainCallback2(sub_800EC9C);
- if (!(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK)
+#if DEBUG
+ && !(gUnknown_02023A14_50 & 8)
+#endif
+ )
{
CreateNPCTrainerParty(gEnemyParty, gTrainerBattleOpponent);
SetWildMonHeldItem();
@@ -371,6 +395,7 @@ void sub_800EC9C(void)
{
u8 playerId;
u8 enemyId;
+ s32 id;
RunTasks();
AnimateSprites();
@@ -390,6 +415,16 @@ void sub_800EC9C(void)
gBattleStruct->unk1 = 1;
sub_800E9EC();
sub_800EAAC();
+#if DEBUG
+ if (gUnknown_02023A14_50 & 8)
+ {
+ for (id = 0; id < 2; id++) // Why < 2 here?
+ {
+ gLinkPlayers[id].lp_field_18 = id;
+ gLinkPlayers[id].linkType = 0x2211;
+ }
+ }
+#endif
SendBlock(bitmask_all_link_players_but_self(), gBattleStruct, 32);
gBattleCommunication[0] = 1;
}
@@ -404,7 +439,6 @@ void sub_800EC9C(void)
case 1:
if ((GetBlockReceivedStatus() & 3) == 3)
{
- s32 id;
u8 taskId;
ResetBlockReceivedFlags();
@@ -554,6 +588,7 @@ void sub_800F104(void)
u8 playerId;
MainCallback *pSavedCallback;
u16 *pSavedBattleTypeFlags;
+ s32 i;
playerId = GetMultiplayerId();
ewram160CB = playerId;
@@ -567,17 +602,30 @@ void sub_800F104(void)
switch (gBattleCommunication[0])
{
case 0:
- if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
+ if (gReceivedRemoteLinkPlayers != 0)
{
- sub_800F02C();
- SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60);
- gBattleCommunication[0]++;
+#if DEBUG
+ if (gUnknown_02023A14_50 & 8)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ gLinkPlayers[i].lp_field_18 = i;
+ gLinkPlayers[i].linkType = 0x2211;
+ }
+ }
+#endif
+ if (IsLinkTaskFinished())
+ {
+ sub_800F02C();
+ SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x60);
+ gBattleCommunication[0]++;
+ }
}
break;
case 1:
if ((GetBlockReceivedStatus() & 0xF) == 0xF)
{
- s32 i;
+ //s32 i;
ResetBlockReceivedFlags();
for (i = 0; i < 4; i++)
@@ -627,14 +675,27 @@ void sub_800F298(void)
switch (gBattleCommunication[0])
{
case 0:
- if (gReceivedRemoteLinkPlayers != 0 && IsLinkTaskFinished())
+ if (gReceivedRemoteLinkPlayers != 0)
{
- gBattleStruct->unk0 = 1;
- gBattleStruct->unk1 = 1;
- sub_800E9EC();
- sub_800EAAC();
- SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20);
- gBattleCommunication[0]++;
+#if DEBUG
+ if (gUnknown_02023A14_50 & 8)
+ {
+ for (id = 0; id < 4; id++)
+ {
+ gLinkPlayers[id].lp_field_18 = id;
+ gLinkPlayers[id].linkType = 0x2211;
+ }
+ }
+#endif
+ if (IsLinkTaskFinished())
+ {
+ gBattleStruct->unk0 = 1;
+ gBattleStruct->unk1 = 1;
+ sub_800E9EC();
+ sub_800EAAC();
+ SendBlock(bitmask_all_link_players_but_self(), gSharedMem, 0x20);
+ gBattleCommunication[0]++;
+ }
}
break;
case 1:
@@ -886,6 +947,29 @@ void BattleMainCB2(void)
{
AnimateSprites();
BuildOamBuffer();
+
+#if DEBUG
+ if ((gMain.heldKeys & (R_BUTTON | SELECT_BUTTON)) == ((R_BUTTON | SELECT_BUTTON)))
+ {
+ gSpecialVar_Result = gBattleOutcome = 1;
+ gMain.inBattle = FALSE;
+ gScanlineEffect.state = 3;
+ gMain.callback1 = gPreBattleCallback1;
+ ZeroEnemyPartyMons();
+ m4aSongNumStop(0x5A);
+ if (gBattleTypeFlags & 2)
+ SetMainCallback2(sub_805465C);
+ else
+ SetMainCallback2(gMain.savedCallback);
+ }
+ if (gBattleTypeFlags & 2)
+ {
+ debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 1, 1, 1);
+ debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 21, 1, 1);
+ debug_sub_8008264((gBattleTypeFlags >> 2) % 2, 1, 41, 1, 1);
+ }
+#endif
+
Text_UpdateWindowInBattle(&gUnknown_03004210);
UpdatePaletteFade();
RunTasks();
@@ -1263,6 +1347,1925 @@ void c2_081284E0(void)
}
}
+#if DEBUG
+
+extern u8 gUnknown_Debug_2023B62[];
+extern const u8 Str_821F7BD[];
+extern const u8 Str_821F7DA[];
+
+void debug_sub_8010818(void);
+void debug_sub_80108B8(void);
+void debug_sub_8010CAC(void);
+void debug_sub_8011498(void);
+void debug_sub_801174C(void);
+void debug_sub_8011D40(void);
+void debug_sub_8011E5C(void);
+void debug_sub_8011E74(void);
+void debug_sub_8011EA0(u8);
+void debug_sub_8012294(void);
+void debug_sub_80123D8(u8);
+void debug_sub_8012540(void);
+void debug_nullsub_3(void);
+void debug_sub_80125A0(void);
+void debug_sub_80125E4(void);
+void debug_sub_8012628(void);
+void debug_sub_8012658(void);
+void debug_sub_8012688(void);
+void debug_sub_8012878(void);
+void debug_sub_8012D10(u8);
+u32 debug_sub_8013294(u8, void *, u32);
+void debug_sub_80132C8(u8, void *, u32);
+
+extern s16 gUnknown_Debug_2023A76[][0x23];
+extern s16 gUnknown_Debug_2023B02[][6][4];
+extern u8 gUnknown_Debug_03004360;
+extern struct Window gUnknown_Debug_03004370;
+extern u8 gUnknown_Debug_030043A0;
+extern u8 gUnknown_Debug_030043A4;
+extern u8 gUnknown_Debug_030043A8;
+extern u8 gBattleBuffersTransferData[];
+
+extern const u16 gUnknown_Debug_821F424[][5];
+extern const u16 gUnknown_Debug_821F56C[][5];
+extern const u32 gUnknown_Debug_821F798[][4];
+
+extern const u8 gUnusedOldCharmap_Gfx_lz[];
+extern const u8 gUnusedOldCharmap_Tilemap_lz[];
+extern const u8 gUnusedOldCharmap_Pal_lz[];
+
+void debug_sub_8010800(void)
+{
+ debug_sub_8010818();
+ debug_sub_80108B8();
+ *(u32 *)(gBattleBuffersTransferData + 0x100) = 0;
+}
+
+void debug_sub_8010818(void)
+{
+ s32 i;
+
+ gUnknown_Debug_2023A76[0][0] = 0x115;
+ gUnknown_Debug_2023A76[1][0] = 0x115;
+ for (i = 1; i < 31; i++)
+ {
+ gUnknown_Debug_2023A76[0][i] = gUnknown_Debug_821F424[i][4];
+ gUnknown_Debug_2023A76[1][i] = gUnknown_Debug_821F424[i][4];
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++)
+ {
+ gUnknown_Debug_2023B02[0][i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0];
+ gUnknown_Debug_2023B02[1][i][gUnknown_Debug_030043A8] = gUnknown_Debug_821F56C[gUnknown_Debug_030043A8][0];
+ }
+ }
+}
+
+void debug_sub_80108B8(void)
+{
+ s32 i;
+
+ m4aSoundVSyncOff();
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ DmaFill32(3, 0, (void *)VRAM, VRAM_SIZE);
+ REG_IE = 1;
+ REG_DISPCNT = 0x1340;
+ 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;
+ REG_BG0CNT = 0x1F09;
+ REG_BG1CNT = 0x4801;
+ REG_BLDCNT = 0;
+ REG_BLDY = 0;
+ LZDecompressVram(gUnusedOldCharmap_Gfx_lz, (void *)VRAM);
+ LZDecompressWram(gUnusedOldCharmap_Tilemap_lz, gSharedMem);
+ LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)PLTT);
+ LZDecompressVram(gUnusedOldCharmap_Pal_lz, (void *)(PLTT + 0x1E0));
+ m4aSoundVSyncOn();
+ SetVBlankCallback(debug_sub_8011D40);
+ SetMainCallback2(debug_sub_8010CAC);
+ ResetTasks();
+ ResetSpriteData();
+ ScanlineEffect_Stop();
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6C3C);
+ Text_InitWindowWithTemplate(&gUnknown_Debug_03004370, &gWindowTemplate_81E6C3C);
+ gUnknown_Debug_03004360 = 0;
+ gUnknown_Debug_030043A0 = 0;
+ gUnknown_Debug_030043A4 = 0;
+ for (i = 0; i < 31; i++)
+ debug_sub_8011EA0(i);
+ for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++)
+ debug_sub_8012294();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ debug_sub_8012540();
+ debug_nullsub_3();
+ gUnknown_Debug_030043A8 = 0;
+ debug_sub_80125A0();
+ if (gUnknown_Debug_2023A76[0][0x22] == 8)
+ {
+ debug_sub_801174C();
+ }
+ else
+ {
+ for (i = 0; i < 8; i++)
+ gSharedMem[0x160B4 + i] = 0;
+ }
+}
+
+void debug_sub_8010A7C(u8 a, u8 b)
+{
+ s32 i;
+
+ for (i = 0; i < b; i++)
+ gBattleTextBuff1[i] = a;
+ gBattleTextBuff1[i] = EOS;
+}
+
+void debug_sub_8010AAC(u8 a)
+{
+ switch (gBaseStats[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5]].genderRatio)
+ {
+ case 0:
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 2;
+ break;
+ case 0xFE:
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 3;
+ break;
+ case 0xFF:
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 4;
+ break;
+ default:
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] &= 1;
+ if (a != 0)
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] ^= 1;
+ else
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + 4] = 0;
+ break;
+ }
+}
+
+// gUnknown_Debug_2023A76 2D array
+void debug_sub_8010B80(u8 a)
+{
+ s8 r12 = 0;
+ s8 r7 = gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5];
+
+ while (r7 >= 10)
+ {
+ r7 -= 10;
+ r12++;
+ }
+
+ if (a & 2)
+ {
+ if (a & 1)
+ r12++;
+ else
+ r12--;
+ if (r12 < 0)
+ r12 = 9;
+ if (r12 > 9)
+ r12 = 0;
+ }
+ else
+ {
+ if (a & 1)
+ r7++;
+ else
+ r7--;
+ if (r7 < 1)
+ r7 = 9;
+ if (r7 > 9)
+ r7 = 1;
+ }
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360 ^ 1][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]
+ = gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]
+ = r12 * 10 + r7;
+}
+
+// For some unexplainable reason, code in various functions will cause SetActionsAndBanksTurnOrder,
+// a completely separate and unrelated function, to use different registers. I have
+// absolutely no clue as to why this phenomenon occurs. For example,
+// I have to make debug_sub_8010CAC access gUnknown_Debug_2023A76 as a 3D array.
+// If I use a 2D array, SetActionsAndBanksTurnOrder will no longer match.
+#ifdef NONMATCHING
+void debug_sub_8010CAC(void)
+{
+ s32 r5;
+
+ if (gMain.heldKeysRaw == (L_BUTTON | SELECT_BUTTON))
+ DoSoftReset();
+ if (gMain.newKeysRaw == SELECT_BUTTON)
+ {
+ if (gUnknown_Debug_030043A4 < 6)
+ {
+ gUnknown_Debug_030043A8 = 0;
+ debug_sub_8012628();
+ SetMainCallback2(debug_sub_8011498);
+ }
+ if (gUnknown_Debug_030043A0 == 0 && gUnknown_Debug_030043A4 == 6)
+ {
+ gMain.savedCallback = debug_sub_80108B8;
+ CreateMon(
+ &gPlayerParty[0],
+ gUnknown_Debug_2023A76[0][0 * 5 + 0],
+ gUnknown_Debug_2023A76[0][0 * 5 + 1],
+ 32,
+ 0, 0, 0, 0);
+ for (r5 = 0; r5 < 4; r5++)
+ {
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE1 + r5, &gUnknown_Debug_2023B02[0][0][r5]);
+ SetMonData(&gPlayerParty[0], MON_DATA_PP1 + r5, &gBattleMoves[gUnknown_Debug_2023B02[0][0][r5]].pp);
+ }
+ switch (gUnknown_Debug_2023A76[0][6 * 5 + 0])
+ {
+ case 1:
+ gCB2_AfterEvolution = debug_sub_80108B8;
+ EvolutionScene(&gPlayerParty[0], gUnknown_Debug_2023A76[0][1 * 5 + 0], 1, 0);
+ break;
+ case 2:
+ debug_sub_8012688();
+ break;
+ }
+ }
+ if (gUnknown_Debug_030043A0 == 1 && gUnknown_Debug_030043A4 == 6)
+ {
+ // This is really weird
+ r5 = (gSaveBlock2.optionsBattleSceneOff | (gSaveBlock2.optionsSound << 1));
+ r5++;
+ if (r5 == 4)
+ r5 = 0;
+ gSaveBlock2.optionsBattleSceneOff = (r5 & 1);
+ gSaveBlock2.optionsSound = (r5 & 2) >> 1;
+ SetPokemonCryStereo(gSaveBlock2.optionsSound);
+ debug_nullsub_3();
+ }
+ }
+ if (gMain.newKeysRaw == START_BUTTON)
+ debug_sub_801174C();
+ if (gMain.newKeysRaw == DPAD_UP)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A4 != 0)
+ gUnknown_Debug_030043A4--;
+ else
+ gUnknown_Debug_030043A4 = 6;
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ debug_sub_80125A0();
+ }
+ if (gMain.newKeysRaw == DPAD_DOWN)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A4 == 6)
+ gUnknown_Debug_030043A4 = 0;
+ else
+ gUnknown_Debug_030043A4++;
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ debug_sub_80125A0();
+ }
+ if (gMain.newKeysRaw == DPAD_LEFT)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A0 != 0)
+ {
+ gUnknown_Debug_030043A0--;
+ }
+ else
+ {
+ if (gUnknown_Debug_03004360 != 0)
+ {
+ gUnknown_Debug_03004360 = 0;
+ gUnknown_Debug_030043A0 = 4;
+ gBattle_BG1_X = 0;
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ }
+ debug_sub_80125A0();
+ }
+ if (gMain.newKeysRaw == DPAD_RIGHT)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A0 != 4)
+ {
+ gUnknown_Debug_030043A0++;
+ }
+ else
+ {
+ if (gUnknown_Debug_03004360 == 0)
+ {
+ gUnknown_Debug_03004360 = 1;
+ gUnknown_Debug_030043A0 = 0;
+ gBattle_BG1_X = 0x100;
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ }
+ debug_sub_80125A0();
+ }
+ if (gMain.newAndRepeatedKeys & B_BUTTON)
+ {
+ switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5)
+ {
+ case 31:
+ debug_sub_8010818();
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 32:
+ debug_sub_80132C8(31, gUnknown_Debug_2023A76, 0xEC);
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 33:
+ debug_sub_8013294(31, gUnknown_Debug_2023A76, 0xEC);
+ break;
+ case 34:
+ if (gUnknown_Debug_2023A76[0][6 * 5 + 4] != 0)
+ {
+ gUnknown_Debug_2023A76[0][6 * 5 + 4]--;
+ gUnknown_Debug_2023A76[1][6 * 5 + 4]--;
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[0][6 * 5 + 4] = 8;
+ gUnknown_Debug_2023A76[1][6 * 5 + 4] = 8;
+ }
+ debug_sub_8012540();
+ break;
+ case 30:
+ debug_sub_8010B80(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5);
+ break;
+ default:
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]--;
+ if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3];
+ }
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ }
+ }
+ if (gMain.newAndRepeatedKeys & A_BUTTON)
+ {
+ switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5)
+ {
+ case 31:
+ debug_sub_8010818();
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 32:
+ debug_sub_80132C8(31, gUnknown_Debug_2023A76, 0xEC);
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 33:
+ debug_sub_8013294(31, gUnknown_Debug_2023A76, 0xEC);
+ break;
+ case 34:
+ if (gUnknown_Debug_2023A76[0][6 * 5 + 4] < 8)
+ {
+ gUnknown_Debug_2023A76[0][6 * 5 + 4]++;
+ gUnknown_Debug_2023A76[1][6 * 5 + 4]++;
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[0][6 * 5 + 4] = 0;
+ gUnknown_Debug_2023A76[1][6 * 5 + 4] = 0;
+ }
+ debug_sub_8012540();
+ break;
+ case 30:
+ debug_sub_8010B80(1);
+ debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5);
+ break;
+ default:
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]++;
+ if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4];
+ }
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ }
+ }
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ else
+ {
+ if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30)
+ {
+ debug_sub_8010B80(2);
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= 10;
+ while (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3];
+ }
+ }
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ else
+ {
+ if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30)
+ {
+ debug_sub_8010B80(3);
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += 10;
+ while (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3];
+ }
+ }
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ AnimateSprites();
+ BuildOamBuffer();
+}
+#else
+
+// 3D array
+extern s16 gUnknown_Debug_2023A76_[][7][5];
+
+void debug_sub_8010CAC(void)
+{
+ s32 r5;
+
+ if (gMain.heldKeysRaw == (L_BUTTON | SELECT_BUTTON))
+ DoSoftReset();
+ if (gMain.newKeysRaw == SELECT_BUTTON)
+ {
+ if (gUnknown_Debug_030043A4 < 6)
+ {
+ gUnknown_Debug_030043A8 = 0;
+ debug_sub_8012628();
+ SetMainCallback2(debug_sub_8011498);
+ }
+ if (gUnknown_Debug_030043A0 == 0 && gUnknown_Debug_030043A4 == 6)
+ {
+ gMain.savedCallback = debug_sub_80108B8;
+ CreateMon(
+ &gPlayerParty[0],
+ gUnknown_Debug_2023A76_[0][0][0],
+ gUnknown_Debug_2023A76_[0][0][1],
+ 32,
+ 0, 0, 0, 0);
+ for (r5 = 0; r5 < 4; r5++)
+ {
+ SetMonData(&gPlayerParty[0], MON_DATA_MOVE1 + r5, &gUnknown_Debug_2023B02[0][0][r5]);
+ SetMonData(&gPlayerParty[0], MON_DATA_PP1 + r5, &gBattleMoves[gUnknown_Debug_2023B02[0][0][r5]].pp);
+ }
+ switch (gUnknown_Debug_2023A76_[0][6][0])
+ {
+ case 1:
+ gCB2_AfterEvolution = debug_sub_80108B8;
+ EvolutionScene(&gPlayerParty[0], gUnknown_Debug_2023A76_[0][1][0], 1, 0);
+ break;
+ case 2:
+ debug_sub_8012688();
+ break;
+ }
+ }
+ if (gUnknown_Debug_030043A0 == 1 && gUnknown_Debug_030043A4 == 6)
+ {
+ // This is really weird
+ r5 = (gSaveBlock2.optionsBattleSceneOff | (gSaveBlock2.optionsSound << 1));
+ r5++;
+ if (r5 == 4)
+ r5 = 0;
+ gSaveBlock2.optionsBattleSceneOff = (r5 & 1);
+ gSaveBlock2.optionsSound = (r5 & 2) >> 1;
+ SetPokemonCryStereo(gSaveBlock2.optionsSound);
+ debug_nullsub_3();
+ }
+ }
+ if (gMain.newKeysRaw == START_BUTTON)
+ debug_sub_801174C();
+ if (gMain.newKeysRaw == DPAD_UP)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A4 != 0)
+ gUnknown_Debug_030043A4--;
+ else
+ gUnknown_Debug_030043A4 = 6;
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ debug_sub_80125A0();
+ }
+ if (gMain.newKeysRaw == DPAD_DOWN)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A4 == 6)
+ gUnknown_Debug_030043A4 = 0;
+ else
+ gUnknown_Debug_030043A4++;
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ debug_sub_80125A0();
+ }
+ if (gMain.newKeysRaw == DPAD_LEFT)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A0 != 0)
+ {
+ gUnknown_Debug_030043A0--;
+ }
+ else
+ {
+ if (gUnknown_Debug_03004360 != 0)
+ {
+ gUnknown_Debug_03004360 = 0;
+ gUnknown_Debug_030043A0 = 4;
+ gBattle_BG1_X = 0;
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ }
+ debug_sub_80125A0();
+ }
+ if (gMain.newKeysRaw == DPAD_RIGHT)
+ {
+ debug_sub_80125E4();
+ if (gUnknown_Debug_030043A0 != 4)
+ {
+ gUnknown_Debug_030043A0++;
+ }
+ else
+ {
+ if (gUnknown_Debug_03004360 == 0)
+ {
+ gUnknown_Debug_03004360 = 1;
+ gUnknown_Debug_030043A0 = 0;
+ gBattle_BG1_X = 0x100;
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ }
+ debug_sub_80125A0();
+ }
+ if (gMain.newAndRepeatedKeys & B_BUTTON)
+ {
+ switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5)
+ {
+ case 31:
+ debug_sub_8010818();
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 32:
+ debug_sub_80132C8(31, gUnknown_Debug_2023A76, 0xEC);
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 33:
+ debug_sub_8013294(31, gUnknown_Debug_2023A76, 0xEC);
+ break;
+ case 34:
+ if (gUnknown_Debug_2023A76_[0][6][4] != 0)
+ {
+ gUnknown_Debug_2023A76_[0][6][4]--;
+ gUnknown_Debug_2023A76_[1][6][4]--;
+ }
+ else
+ {
+ gUnknown_Debug_2023A76_[0][6][4] = 8;
+ gUnknown_Debug_2023A76_[1][6][4] = 8;
+ }
+ debug_sub_8012540();
+ break;
+ case 30:
+ debug_sub_8010B80(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5);
+ break;
+ default:
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]--;
+ if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3];
+ }
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ }
+ }
+ if (gMain.newAndRepeatedKeys & A_BUTTON)
+ {
+ switch (gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5)
+ {
+ case 31:
+ debug_sub_8010818();
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 32:
+ debug_sub_80132C8(31, gUnknown_Debug_2023A76, 0xEC);
+ debug_sub_8011E5C();
+ debug_sub_8011E74();
+ debug_sub_8012540();
+ debug_nullsub_3();
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ case 33:
+ debug_sub_8013294(31, gUnknown_Debug_2023A76, 0xEC);
+ break;
+ case 34:
+ if (gUnknown_Debug_2023A76_[0][6][4] < 8)
+ {
+ gUnknown_Debug_2023A76_[0][6][4]++;
+ gUnknown_Debug_2023A76_[1][6][4]++;
+ }
+ else
+ {
+ gUnknown_Debug_2023A76_[0][6][4] = 0;
+ gUnknown_Debug_2023A76_[1][6][4] = 0;
+ }
+ debug_sub_8012540();
+ break;
+ case 30:
+ debug_sub_8010B80(1);
+ debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5);
+ break;
+ default:
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]++;
+ if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] = gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4];
+ }
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ debug_sub_8011EA0(gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ break;
+ }
+ }
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ else
+ {
+ if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30)
+ {
+ debug_sub_8010B80(2);
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= 10;
+ while (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] < gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][4])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3];
+ }
+ }
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ if (gUnknown_Debug_030043A0 == 4 && gUnknown_Debug_030043A4 < 6)
+ {
+ debug_sub_8010AAC(1);
+ }
+ else
+ {
+ if (gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0 == 30)
+ {
+ debug_sub_8010B80(3);
+ }
+ else
+ {
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] += 10;
+ while (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] > gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3])
+ gUnknown_Debug_2023A76[gUnknown_Debug_03004360][gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0] -= gUnknown_Debug_821F424[gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0][3];
+ }
+ }
+ if (gUnknown_Debug_030043A0 == 0)
+ {
+ debug_sub_8010AAC(0);
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + 4);
+ }
+ debug_sub_8011EA0(gUnknown_Debug_030043A4 * 5 + gUnknown_Debug_030043A0);
+ debug_sub_80123D8(gUnknown_Debug_030043A4 * 5);
+ }
+ AnimateSprites();
+ BuildOamBuffer();
+}
+#endif
+
+extern u16 gUnknown_Debug_821F564[][5];
+
+void debug_sub_8011498(void)
+{
+ u8 r9 = gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5;
+
+ if (gMain.heldKeysRaw == (L_BUTTON | SELECT_BUTTON))
+ DoSoftReset();
+ if (gMain.newKeysRaw == SELECT_BUTTON)
+ {
+ debug_sub_8012658();
+ SetMainCallback2(debug_sub_8010CAC);
+ }
+ if (gMain.newKeysRaw == START_BUTTON)
+ debug_sub_801174C();
+ if (gMain.newKeysRaw == DPAD_UP || gMain.newKeysRaw == DPAD_DOWN)
+ {
+ debug_sub_8012658();
+ gUnknown_Debug_030043A8 ^= 2;
+ debug_sub_8012628();
+ }
+ if (gMain.newKeysRaw == DPAD_LEFT || gMain.newKeysRaw == DPAD_RIGHT)
+ {
+ debug_sub_8012658();
+ gUnknown_Debug_030043A8 ^= 1;
+ debug_sub_8012628();
+ }
+ if (gMain.newAndRepeatedKeys & B_BUTTON)
+ {
+ gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8]--;
+ if (gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] < gUnknown_Debug_821F564[gUnknown_Debug_030043A8][4])
+ gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] = gUnknown_Debug_821F564[gUnknown_Debug_030043A8][3];
+ debug_sub_8012294();
+ }
+ if (gMain.newAndRepeatedKeys & A_BUTTON)
+ {
+ gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8]++;
+ if (gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] > gUnknown_Debug_821F564[gUnknown_Debug_030043A8][3])
+ gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] = gUnknown_Debug_821F564[gUnknown_Debug_030043A8][4];
+ debug_sub_8012294();
+ }
+ if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] -= 10;
+ while (gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] < gUnknown_Debug_821F564[gUnknown_Debug_030043A8][4])
+ gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] += gUnknown_Debug_821F564[gUnknown_Debug_030043A8][3];
+ debug_sub_8012294();
+ }
+ if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] += 10;
+ while (gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] > gUnknown_Debug_821F564[gUnknown_Debug_030043A8][3])
+ gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r9 / 5][gUnknown_Debug_030043A8] -= gUnknown_Debug_821F564[gUnknown_Debug_030043A8][3];
+ debug_sub_8012294();
+ }
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+extern const u16 gUnknown_Debug_821F598[];
+extern const u8 str_821F631[][6];
+extern const u8 Str_821F649[];
+extern const struct Pokeblock gUnknown_Debug_821F5AC[];
+
+extern u8 gUnknown_020297ED;
+
+extern void unref_sub_800D684(void);
+
+void debug_sub_801174C(void)
+{
+ u8 r9 = 0;
+ u8 r6;
+ s32 i;
+ s32 spC;
+ u16 sp10;
+
+ gUnknown_020297ED = 1;
+ r6 = Random() % 4;
+ StringCopy(gSaveBlock2.playerName, str_821F631[r6]);
+ gSaveBlock2.playerGender = r6 >> 1;
+ ZeroPlayerPartyMons();
+ ZeroEnemyPartyMons();
+ i = gUnknown_Debug_2023A76[0][30];
+ spC = 0;
+ if (i >= 10)
+ {
+ spC = 0;
+ while (i >= 10)
+ {
+ i -= 10;
+ spC++;
+ }
+ }
+ gBattleTypeFlags = gUnknown_Debug_821F598[i - 1];
+ gUnknown_02023A14_50 = 8;
+ gBattleTerrain = spC;
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ EnterSafariMode();
+ if (gUnknown_Debug_2023A76[0][30] >= 2 && gUnknown_Debug_2023A76[0][30] <= 4)
+ gTrainerBattleOpponent = (Random() & 7) + 1;
+
+ gPlayerPartyCount = 0;
+ for (i = 0; i < 30; i += 5)
+ {
+ if (gUnknown_Debug_2023A76[0][i] != 0)
+ {
+ switch (gUnknown_Debug_2023A76[0][i + 4])
+ {
+ case 0:
+ case 2:
+ r6 = 0;
+ break;
+ case 1:
+ case 3:
+ r6 = 0xFE;
+ break;
+ default:
+ r6 = 0xFF;
+ break;
+ }
+ if (gUnknown_Debug_2023A76[0][i] == 0xC9 && i + 5 < 30)
+ r9 = gUnknown_Debug_2023A76[0][i + 7];
+ else
+ r9 = 0;
+ CreateMonWithGenderNatureLetter(
+ &gEnemyParty[i / 5],
+ gUnknown_Debug_2023A76[0][i],
+ gUnknown_Debug_2023A76[0][i + 1],
+ 0,
+ r6,
+ 0,
+ r9);
+ }
+ SetMonData(&gEnemyParty[i / 5], MON_DATA_HELD_ITEM, &gUnknown_Debug_2023A76[0][i + 2]);
+ sp10 = gUnknown_Debug_2023A76[0][i + 2] - 1;
+ if (sp10 <= 11)
+ SetMonData(&gEnemyParty[i / 5], MON_DATA_POKEBALL, &gUnknown_Debug_2023A76[0][i + 2]);
+ if (gUnknown_Debug_2023A76[0][i + 3] != 0 && gUnknown_Debug_2023A76[0][i + 3] != 3)
+ {
+ if (gUnknown_Debug_2023A76[0][i + 3] <= 2)
+ spC = gUnknown_Debug_2023A76[0][i + 3] - 1;
+ else
+ spC = gUnknown_Debug_2023A76[0][i + 3] - 4;
+ SetMonData(&gEnemyParty[i / 5], MON_DATA_ALT_ABILITY, &spC);
+ }
+
+ if (gUnknown_Debug_2023A76[1][i] != 0)
+ {
+ switch (gUnknown_Debug_2023A76[1][i + 4])
+ {
+ case 0:
+ case 2:
+ r6 = 0;
+ break;
+ case 1:
+ case 3:
+ r6 = 0xFE;
+ break;
+ default:
+ r6 = 0xFF;
+ break;
+ }
+ if (gUnknown_Debug_2023A76[1][i] == 0xC9 && i + 5 < 30)
+ r9 = gUnknown_Debug_2023A76[1][i + 7];
+ else
+ r9 = 0;
+ CreateMonWithGenderNatureLetter(
+ &gPlayerParty[i / 5],
+ gUnknown_Debug_2023A76[1][i],
+ gUnknown_Debug_2023A76[1][i + 1],
+ 0,
+ r6,
+ 0,
+ r9);
+ gPlayerPartyCount++;
+ }
+ SetMonData(&gPlayerParty[i / 5], MON_DATA_HELD_ITEM, &gUnknown_Debug_2023A76[1][i + 2]);
+ sp10 = gUnknown_Debug_2023A76[0][i + 2] - 1;
+ if (sp10 <= 11)
+ SetMonData(&gPlayerParty[i / 5], MON_DATA_POKEBALL, &gUnknown_Debug_2023A76[1][i + 2]);
+ if (gUnknown_Debug_2023A76[1][i + 3] != 0 && gUnknown_Debug_2023A76[1][i + 3] != 3)
+ {
+ if (gUnknown_Debug_2023A76[1][i + 3] <= 2)
+ spC = gUnknown_Debug_2023A76[1][i + 3] - 1;
+ else
+ spC = gUnknown_Debug_2023A76[1][i + 3] - 4;
+ SetMonData(&gPlayerParty[i / 5], MON_DATA_ALT_ABILITY, &spC);
+ }
+ if (gUnknown_Debug_2023A76[1][i + 3] > 2)
+ {
+ SetMonData(&gPlayerParty[i / 5], MON_DATA_OT_NAME, Str_821F649);
+ gUnknown_02023A14_50 |= 0x40;
+ }
+ }
+
+ for (spC = 0; spC < 6; spC++)
+ {
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gEnemyParty[spC], MON_DATA_MOVE1 + i, &gUnknown_Debug_2023B02[0][spC][i]);
+ SetMonData(&gEnemyParty[spC], MON_DATA_PP1 + i, &gBattleMoves[gUnknown_Debug_2023B02[0][spC][i]].pp);
+ SetMonData(&gPlayerParty[spC], MON_DATA_MOVE1 + i, &gUnknown_Debug_2023B02[1][spC][i]);
+ SetMonData(&gPlayerParty[spC], MON_DATA_PP1 + i, &gBattleMoves[gUnknown_Debug_2023B02[1][spC][i]].pp);
+ }
+ }
+
+ if (gUnknown_Debug_2023A76[0][0x22] == 8)
+ {
+ gUnknown_02023A14_50 |= 0x80;
+ sub_80408BC();
+ }
+ else if (gUnknown_Debug_2023A76[0][0x22] == 7)
+ {
+ gUnknown_02023A14_50 |= 0x20;
+ sub_80408BC();
+ }
+ else if (gUnknown_Debug_2023A76[0][0x22] == 6)
+ {
+ gUnknown_02023A14_50 |= 0x10;
+ if (gUnknown_Debug_2023A76[0][2] > 5)
+ gSharedMem[0x160A3] = gUnknown_Debug_2023A76[0][2] - 2;
+ else
+ gSharedMem[0x160A3] = gUnknown_Debug_2023A76[0][2];
+ sub_80408BC();
+ }
+ else if (gUnknown_Debug_2023A76[0][0x22] == 5)
+ {
+ gUnknown_02023A14_50 |= 0x21;
+ sub_80408BC();
+ }
+ else
+ {
+ if (!(gUnknown_Debug_2023A76[0][0x22] & 1))
+ sub_80408BC();
+ if (gUnknown_Debug_2023A76[0][0x22] & 2)
+ gUnknown_02023A14_50 |= 4;
+ if (gUnknown_Debug_2023A76[0][0x22] & 4)
+ gUnknown_02023A14_50 |= 6;
+ }
+
+ gMain.savedCallback = debug_sub_80108B8;
+ SetMainCallback2(unref_sub_800D684);
+
+ ClearBag();
+
+ AddBagItem(ITEM_MASTER_BALL, 10);
+ AddBagItem(ITEM_ULTRA_BALL, 10);
+ AddBagItem(ITEM_GREAT_BALL, 10);
+ AddBagItem(ITEM_POKE_BALL, 10);
+ AddBagItem(ITEM_SAFARI_BALL, 10);
+ AddBagItem(ITEM_NET_BALL, 10);
+ AddBagItem(ITEM_DIVE_BALL, 10);
+ AddBagItem(ITEM_NEST_BALL, 10);
+ AddBagItem(ITEM_REPEAT_BALL, 10);
+ AddBagItem(ITEM_TIMER_BALL, 10);
+ AddBagItem(ITEM_LUXURY_BALL, 10);
+ AddBagItem(ITEM_PREMIER_BALL, 10);
+
+ AddBagItem(ITEM_FULL_RESTORE, 99);
+ AddBagItem(ITEM_MAX_POTION, 99);
+ AddBagItem(ITEM_MAX_REVIVE, 99);
+ AddBagItem(ITEM_ETHER, 99);
+ AddBagItem(ITEM_MAX_ETHER, 99);
+ AddBagItem(ITEM_MAX_ELIXIR, 99);
+
+ AddBagItem(ITEM_GUARD_SPEC, 99);
+ AddBagItem(ITEM_DIRE_HIT, 99);
+ AddBagItem(ITEM_X_ATTACK, 99);
+ AddBagItem(ITEM_X_DEFEND, 99);
+ AddBagItem(ITEM_X_SPEED, 99);
+ AddBagItem(ITEM_X_ACCURACY, 99);
+ // hmm... no X Special? Why do we need Poke Doll?
+ AddBagItem(ITEM_POKE_DOLL, 99);
+
+ for (i = 0; i < 15; i++)
+ sub_810CA34(&gUnknown_Debug_821F5AC[i]);
+}
+
+void debug_sub_8011D40(void)
+{
+ DmaCopy16(3, gSharedMem, (void *)(VRAM + 0x4000), 0x1000);
+ REG_BG0HOFS = gBattle_BG0_X;
+ REG_BG0VOFS = gBattle_BG0_Y;
+ REG_BG1HOFS = gBattle_BG1_X;
+ REG_BG1VOFS = gBattle_BG1_Y;
+ REG_BG2HOFS = gBattle_BG2_X;
+ REG_BG2VOFS = gBattle_BG2_Y;
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
+ LoadOam();
+ ProcessSpriteCopyRequests();
+}
+
+void debug_nullsub_45()
+{
+}
+
+void debug_sub_8011DD4(void)
+{
+ REG_BG0CNT = 0x9803;
+
+ REG_BG0HOFS = gBattle_BG0_X;
+ REG_BG0VOFS = gBattle_BG0_Y;
+
+ REG_BG1HOFS = gBattle_BG1_X;
+ REG_BG1VOFS = gBattle_BG1_Y;
+
+ REG_BG2HOFS = gBattle_BG2_X;
+ REG_BG2VOFS = gBattle_BG2_Y;
+
+ REG_BG3HOFS = gBattle_BG3_X;
+ REG_BG3VOFS = gBattle_BG3_Y;
+
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ ScanlineEffect_InitHBlankDmaTransfer();
+}
+
+void debug_sub_8011E5C(void)
+{
+ s32 i;
+
+ for (i = 0; i < 31; i++)
+ debug_sub_8011EA0(i);
+}
+
+extern u8 gUnknown_Debug_030043A8;
+
+void debug_sub_8011E74(void)
+{
+ u8 r5 = gUnknown_Debug_030043A8;
+
+ for (gUnknown_Debug_030043A8 = 0; gUnknown_Debug_030043A8 < 4; gUnknown_Debug_030043A8++)
+ debug_sub_8012294();
+
+ gUnknown_Debug_030043A8 = r5;
+}
+
+extern const u8 Str_821F624[];
+
+void debug_sub_8011EA0(u8 a)
+{
+ u32 length;
+
+ switch (a)
+ {
+ case 0:
+ case 5:
+ case 10:
+ case 15:
+ case 20:
+ case 25:
+ debug_sub_8010A7C(0, 20);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F424[a][0],
+ gUnknown_Debug_821F424[a][1],
+ gUnknown_Debug_821F424[a][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a], 2, 3);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ 422,
+ gUnknown_Debug_03004360 * 32 + 25,
+ 0);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ gBattleTextBuff1[0] = EOS;
+ StringAppend(gBattleTextBuff1, gSpeciesNames[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a]]);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F424[a][0],
+ gUnknown_Debug_821F424[a][1],
+ gUnknown_Debug_821F424[a][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ break;
+ case 1:
+ case 6:
+ case 11:
+ case 16:
+ case 21:
+ case 26:
+ case 30:
+ ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a], 2, 3);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F424[a][0],
+ gUnknown_Debug_821F424[a][1],
+ gUnknown_Debug_821F424[a][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ break;
+ case 2:
+ case 7:
+ case 12:
+ case 17:
+ case 22:
+ case 27:
+ debug_sub_8010A7C(0, 24);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F424[a][0],
+ gUnknown_Debug_821F424[a][1],
+ gUnknown_Debug_821F424[a][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a], 2, 3);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ 422,
+ gUnknown_Debug_03004360 * 32 + 25,
+ 0);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ gBattleTextBuff1[0] = EOS;
+ if (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a] != 0)
+ StringAppend(gBattleTextBuff1, ItemId_GetName(gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a]));
+ else
+ StringAppend(gBattleTextBuff1, Str_821F624);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F424[a][0],
+ gUnknown_Debug_821F424[a][1],
+ gUnknown_Debug_821F424[a][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ break;
+ case 4:
+ case 9:
+ case 14:
+ case 19:
+ case 24:
+ case 29:
+ debug_sub_8010A7C(0, 4);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F424[a][0],
+ gUnknown_Debug_821F424[a][1],
+ gUnknown_Debug_821F424[a][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ length = 0;
+ switch (gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a])
+ {
+ case 0:
+ gBattleTextBuff1[0] = CHAR_MALE;
+ length = 1;
+ break;
+ case 1:
+ gBattleTextBuff1[0] = CHAR_FEMALE;
+ length = 1;
+ break;
+ case 2:
+ gBattleTextBuff1[0] = CHAR_MALE;
+ gBattleTextBuff1[1] = CHAR_MALE;
+ length = 2;
+ break;
+ case 3:
+ gBattleTextBuff1[0] = CHAR_FEMALE;
+ gBattleTextBuff1[1] = CHAR_FEMALE;
+ length = 2;
+ break;
+ default:
+ gBattleTextBuff1[length] = CHAR_QUESTION_MARK;
+ length++;
+ break;
+ }
+ gBattleTextBuff1[length] = EOS;
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F424[a][0],
+ gUnknown_Debug_821F424[a][1],
+ gUnknown_Debug_821F424[a][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ break;
+ case 3:
+ case 8:
+ case 13:
+ case 18:
+ case 23:
+ case 28:
+ default:
+ ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a], 2, 1);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F424[a][0],
+ gUnknown_Debug_821F424[a][1],
+ gUnknown_Debug_821F424[a][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ break;
+ case 31:
+ case 32:
+ case 33:
+ case 34:
+ break;
+ }
+}
+
+void debug_sub_8012294(void)
+{
+ u8 r5 = gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5;
+
+ if (r5 < 30)
+ {
+ debug_sub_8010A7C(0, 24);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F564[gUnknown_Debug_030043A8][0],
+ gUnknown_Debug_821F564[gUnknown_Debug_030043A8][1],
+ gUnknown_Debug_821F564[gUnknown_Debug_030043A8][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r5 / 5][gUnknown_Debug_030043A8], 2, 3);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ 422,
+ gUnknown_Debug_03004360 * 32 + 25,
+ 0);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ gBattleTextBuff1[0] = EOS;
+ StringAppend(gBattleTextBuff1, gMoveNames[gUnknown_Debug_2023B02[gUnknown_Debug_03004360][r5 / 5][gUnknown_Debug_030043A8]]);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F564[gUnknown_Debug_030043A8][0],
+ gUnknown_Debug_821F564[gUnknown_Debug_030043A8][1],
+ gUnknown_Debug_821F564[gUnknown_Debug_030043A8][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ }
+}
+
+extern const u16 gUnknown_Debug_821F58C[];
+
+void debug_sub_80123D8(u8 a)
+{
+ if (a < 30)
+ {
+ debug_sub_8010A7C(0, 18);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F58C[0],
+ gUnknown_Debug_821F58C[1],
+ gUnknown_Debug_821F58C[2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ StringCopy(gBattleTextBuff1, gAbilityNames[gBaseStats[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a]].ability1]);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F58C[0],
+ gUnknown_Debug_821F58C[1],
+ gUnknown_Debug_821F58C[2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ debug_sub_8010A7C(0, 18);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F58C[3],
+ gUnknown_Debug_821F58C[4],
+ gUnknown_Debug_821F58C[5]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ StringCopy(gBattleTextBuff1, gAbilityNames[gBaseStats[gUnknown_Debug_2023A76[gUnknown_Debug_03004360][a]].ability2]);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F58C[3],
+ gUnknown_Debug_821F58C[4],
+ gUnknown_Debug_821F58C[5]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ }
+ else
+ {
+ StringCopy(gBattleTextBuff1, gAbilityNames[0]);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F58C[0],
+ gUnknown_Debug_821F58C[1],
+ gUnknown_Debug_821F58C[2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F58C[3],
+ gUnknown_Debug_821F58C[4],
+ gUnknown_Debug_821F58C[5]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+ }
+}
+
+void debug_sub_8012540(void)
+{
+ ConvertIntToDecimalStringN(gBattleTextBuff1, gUnknown_Debug_2023A76[0][0x22], 0, 1);
+ Text_InitWindow(
+ &gUnknown_Debug_03004370,
+ gBattleTextBuff1,
+ gUnknown_Debug_821F424[31][0],
+ gUnknown_Debug_821F424[31][1],
+ gUnknown_Debug_821F424[31][2]);
+ Text_PrintWindow8002F44(&gUnknown_Debug_03004370);
+}
+
+void debug_nullsub_3(void)
+{
+}
+
+extern const u32 gUnknown_Debug_821F680[][0x23];
+
+void debug_sub_80125A0(void)
+{
+ gSharedMem[gUnknown_Debug_821F680[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]] = 0x6D;
+}
+
+void debug_sub_80125E4(void)
+{
+ gSharedMem[gUnknown_Debug_821F680[gUnknown_Debug_03004360][gUnknown_Debug_030043A0 + gUnknown_Debug_030043A4 * 5]] = 0x81;
+}
+
+void debug_sub_8012628(void)
+{
+ gSharedMem[gUnknown_Debug_821F798[gUnknown_Debug_03004360][gUnknown_Debug_030043A8]] = 0x6D;
+}
+
+void debug_sub_8012658(void)
+{
+ gSharedMem[gUnknown_Debug_821F798[gUnknown_Debug_03004360][gUnknown_Debug_030043A8]] = 0x81;
+}
+
+void debug_sub_8012688(void)
+{
+ s32 i;
+ u8 spriteId;
+ u8 taskId;
+
+ for (i = 0; i < 411; i++)
+ gUnknown_Debug_2023B62[i] = 0;
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ DmaFill32(3, 0, (void *)VRAM, VRAM_SIZE);
+ REG_MOSAIC = 0;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6C58);
+ ResetPaletteFade();
+ gBattle_BG0_X = 0;
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
+ 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 = 9;
+ sub_800D6D4();
+ sub_800DAB8();
+ ResetSpriteData();
+ ResetTasks();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ gCurrentMove = 1;
+ Text_InitWindowWithTemplate(&gUnknown_03004210, &gWindowTemplate_81E6C58);
+ DecompressPicFromTable_2(
+ &gMonFrontPicTable[gCurrentMove],
+ gMonFrontPicCoords[gCurrentMove].coords,
+ gMonFrontPicCoords[gCurrentMove].y_offset,
+ (void *)0x02000000,
+ gUnknown_081FAF4C[1],
+ gCurrentMove);
+ LoadCompressedPalette(gMonPaletteTable[gCurrentMove].data, 272, 32);
+ GetMonSpriteTemplate_803C56C(gCurrentMove, 1);
+ spriteId = CreateSprite(&gUnknown_02024E8C, 176, 40 + gMonFrontPicCoords[gCurrentMove].y_offset, 40);
+ gSprites[spriteId].callback = nullsub_37;
+ gSprites[spriteId].oam.paletteNum = 1;
+ REG_DISPCNT = 0x1F40;
+ SetHBlankCallback(debug_nullsub_45);
+ SetVBlankCallback(debug_sub_8011DD4);
+ m4aMPlayAllStop();
+ taskId = CreateTask(debug_sub_8012D10, 0);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = spriteId;
+ SetMainCallback2(debug_sub_8012878);
+}
+
+void debug_sub_8012878(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ Text_UpdateWindowInBattle(&gUnknown_03004210);
+ UpdatePaletteFade();
+ RunTasks();
+ if (gMain.heldKeys == (SELECT_BUTTON | R_BUTTON))
+ SetMainCallback2(debug_sub_80108B8);
+}
+
+void debug_sub_80128B4(void)
+{
+ debug_sub_8010A7C(0, 9);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ ConvertIntToDecimalStringN(gBattleTextBuff1, gCurrentMove, 2, 3);
+ gBattleTextBuff1[3] = CHAR_SPACE;
+ gBattleTextBuff1[4] = EOS;
+ StringAppend(gBattleTextBuff1, gSpeciesNames[gCurrentMove]);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+}
+
+void debug_sub_8012938(u8 taskId)
+{
+ debug_sub_8010A7C(0, 7);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ StringCopy(gBattleTextBuff1, Str_821F7B8);
+ ConvertIntToDecimalStringN(gBattleTextBuff1 + 4, gUnknown_Debug_2023B62[gCurrentMove - 1], 2, 3);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ gSprites[gTasks[taskId].data[1]].pos2.y = -gUnknown_Debug_2023B62[gCurrentMove - 1];
+}
+
+void debug_sub_80129F8(u8 taskId)
+{
+ DecompressPicFromTable_2(
+ &gMonFrontPicTable[gCurrentMove],
+ gMonFrontPicCoords[gCurrentMove].coords,
+ gMonFrontPicCoords[gCurrentMove].y_offset,
+ (void *)0x02000000,
+ gUnknown_081FAF4C[1],
+ gCurrentMove);
+ LoadCompressedPalette(gMonPaletteTable[gCurrentMove].data, 272, 32);
+ gSprites[gTasks[taskId].data[1]].pos1.y = gMonFrontPicCoords[gCurrentMove].y_offset + 40;
+ gSprites[gTasks[taskId].data[1]].pos2.y = -gUnknown_Debug_2023B62[gCurrentMove - 1];
+ StartSpriteAnim(&gSprites[gTasks[taskId].data[1]], 0);
+}
+
+void debug_sub_8012AC0(s8 a, u8 taskId)
+{
+ do
+ {
+ gCurrentMove += a;
+ if (gCurrentMove == 0)
+ gCurrentMove = 411;
+ if (gCurrentMove == 411)
+ gCurrentMove = 1;
+ } while (gBaseStats[gCurrentMove].type1 != 2 && gBaseStats[gCurrentMove].type2 != 2);
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+}
+
+void debug_sub_8012B2C(u8 a)
+{
+ *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 0) * 0x20) = 1;
+ *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 2) * 0x20) = 2;
+}
+
+void debug_sub_8012B4C(u8 a)
+{
+ *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 0) * 0x20) = 0x1016;
+ *(u16 *)(VRAM + 0xC000 + 0x772 + (a * 4 + 2) * 0x20) = 0x1016;
+}
+
+void debug_sub_8012B70(u8 taskId, u8 b)
+{
+ if (b != 0)
+ {
+ sub_802BBD4(24, 28, 29, 33, 1);
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+ gTasks[taskId].data[0] = 1;
+ }
+ else
+ {
+ sub_802BBD4(24, 28, 29, 33, 0);
+ gTasks[taskId].data[0] = 2;
+ Text_InitWindow(&gUnknown_03004210, Str_821F7DA, 656, 26, 29);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ gTasks[taskId].data[3] = 0;
+ debug_sub_8012B2C(0);
+ }
+}
+
+void debug_sub_8012C08(u8 taskId, u8 b)
+{
+ debug_sub_8010A7C(0, 9);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 144, 2, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ debug_sub_8010A7C(0, 7);
+ Text_InitWindow(&gUnknown_03004210, gBattleTextBuff1, 162, 2, 37);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ sub_802BBD4(24, 28, 29, 33, 0);
+ if (b != 0)
+ {
+ gTasks[taskId].data[0] = 4;
+ Text_InitWindow(&gUnknown_03004210, gUnknown_Debug_821F7F3, 144, 2, 35);
+ }
+ else
+ {
+ gTasks[taskId].data[0] = 3;
+ Text_InitWindow(&gUnknown_03004210, Str_821F7EA, 144, 2, 35);
+ }
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ Text_InitWindow(&gUnknown_03004210, BattleText_YesNo, 656, 26, 29);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ gTasks[taskId].data[3] = 1;
+ debug_sub_8012B2C(1);
+}
+
+void debug_sub_8012D10(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ Text_InitWindow(&gUnknown_03004210, Str_821F7BD, 400, 19, 35);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ gTasks[taskId].data[0]++;
+ sub_802E3E4(gTasks[taskId].data[2], 0);
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gTasks[taskId].data[2]);
+ gTasks[taskId].data[2] &= ~2;
+ sub_802E3E4(gTasks[taskId].data[2], 0);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gTasks[taskId].data[2]);
+ gTasks[taskId].data[2] |= 2;
+ sub_802E3E4(gTasks[taskId].data[2], 0);
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gTasks[taskId].data[2]);
+ gTasks[taskId].data[2] &= ~1;
+ sub_802E3E4(gTasks[taskId].data[2], 0);
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gTasks[taskId].data[2]);
+ gTasks[taskId].data[2] |= 1;
+ sub_802E3E4(gTasks[taskId].data[2], 0);
+ }
+ else if (gMain.newAndRepeatedKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] < 64)
+ {
+ gUnknown_Debug_2023B62[gCurrentMove - 1] += 1;
+ debug_sub_8012938(taskId);
+ }
+ break;
+ case 1:
+ debug_sub_8012AC0(1, taskId);
+ break;
+ case 2:
+ if (gCurrentMove < 411)
+ gCurrentMove++;
+ else
+ gCurrentMove = 1;
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+ break;
+ case 3:
+ debug_sub_8012B70(taskId, 0);
+ break;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 0)
+ {
+ gUnknown_Debug_2023B62[gCurrentMove - 1] -= 1;
+ debug_sub_8012938(taskId);
+ }
+ break;
+ case 1:
+ debug_sub_8012AC0(-1, taskId);
+ break;
+ case 2:
+ if (gCurrentMove > 1)
+ gCurrentMove--;
+ else
+ gCurrentMove = 411;
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+ break;
+ case 3:
+ debug_sub_8012B70(taskId, 0);
+ break;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & R_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] < 64)
+ {
+ gUnknown_Debug_2023B62[gCurrentMove - 1] += 8;
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 64)
+ gUnknown_Debug_2023B62[gCurrentMove - 1] = 64;
+ debug_sub_8012938(taskId);
+ }
+ break;
+ case 1:
+ debug_sub_8012AC0(1, taskId);
+ break;
+ case 2:
+ if (gCurrentMove + 10 < 412)
+ gCurrentMove += 10;
+ else
+ gCurrentMove -= 400;
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+ break;
+ case 3:
+ debug_sub_8012B70(taskId, 0);
+ break;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & L_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ switch (gTasks[taskId].data[2])
+ {
+ case 0:
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 0)
+ {
+ if (gUnknown_Debug_2023B62[gCurrentMove - 1] > 8)
+ gUnknown_Debug_2023B62[gCurrentMove - 1] -= 8;
+ else
+ gUnknown_Debug_2023B62[gCurrentMove - 1] = 0;
+ debug_sub_8012938(taskId);
+ }
+ break;
+ case 1:
+ debug_sub_8012AC0(-1, taskId);
+ break;
+ case 2:
+ if (gCurrentMove - 10 > 1)
+ gCurrentMove -= 10;
+ else
+ gCurrentMove += 400;
+ debug_sub_80128B4();
+ debug_sub_8012938(taskId);
+ debug_sub_80129F8(taskId);
+ break;
+ case 3:
+ debug_sub_8012B70(taskId, 0);
+ break;
+ }
+ }
+ break;
+ case 2:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 0;
+ debug_sub_8012B2C(0);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 1;
+ debug_sub_8012B2C(1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012C08(taskId, gTasks[taskId].data[3]);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ asm("");
+ debug_sub_8012B70(taskId, 1);
+ }
+ return;
+ case 3:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 0;
+ debug_sub_8012B2C(0);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 1;
+ debug_sub_8012B2C(1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gTasks[taskId].data[3] == 0)
+ debug_sub_80132C8(31, gUnknown_Debug_2023B62, 411);
+ debug_sub_8012B70(taskId, 1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B70(taskId, 1);
+ }
+ break;
+ case 4:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 0;
+ debug_sub_8012B2C(0);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B4C(gTasks[taskId].data[3]);
+ gTasks[taskId].data[3] = 1;
+ debug_sub_8012B2C(1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gTasks[taskId].data[3] == 0)
+ debug_sub_8013294(31, gUnknown_Debug_2023B62, 411);
+ debug_sub_8012B70(taskId, 1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ debug_sub_8012B70(taskId, 1);
+ }
+ break;
+ }
+}
+
+u8 debug_sub_8013240(void)
+{
+ if (IdentifyFlash() == 0)
+ return 0;
+ else
+ return 1;
+}
+
+u32 debug_sub_8013258(u16 sectorNum, u8 *data, u32 size)
+{
+ while (1)
+ {
+ if (ProgramFlashSectorAndVerify(sectorNum, data) != 0)
+ return 0;
+ if (size <= 0x1000)
+ break;
+ size -= 0x1000;
+ data += 0x1000;
+ sectorNum++;
+ }
+ return 1;
+}
+
+u32 debug_sub_8013294(u8 sectorNum, void *data, u32 size)
+{
+ u32 result;
+
+ if (debug_sub_8013240() != 0)
+ return 0;
+ m4aSoundVSyncOff();
+ result = debug_sub_8013258(sectorNum, data, size);
+ m4aSoundVSyncOn();
+ return result;
+}
+
+void debug_sub_80132C8(u8 a, void *b, u32 c)
+{
+ if (debug_sub_8013240() == 0)
+ ReadFlash(a, 0, b, c);
+}
+#endif
+
void oac_poke_opponent(struct Sprite *sprite)
{
sprite->callback = sub_8010278;
@@ -1480,7 +3483,7 @@ void dp11b_obj_instanciate(u8 bank, u8 b, s8 c, s8 d)
}
else
{
- objectID = gObjectBankIDs[bank];
+ objectID = gBankSpriteIds[bank];
ewram17810[bank].unk3 = spriteId;
ewram17810[bank].unk0_2 = 1;
gSprites[spriteId].data[0] = 0xC0;
@@ -1542,12 +3545,68 @@ void sub_8010800(void)
gBattleMainFunc = bc_8012FAC;
}
-void sub_8010824(void)
+#if DEBUG
+void debug_sub_80138CC(void)
{
- gBattleMainFunc();
+ if (GetBankSide(gActiveBank) == 0)
+ {
+ switch (gSharedMem[0x160FD])
+ {
+ case 0:
+ if (gBattleBankFunc[gActiveBank] == sub_802C098)
+ gSharedMem[0x160FD]++;
+ break;
+ case 1:
+ gMain.heldKeys = A_BUTTON;
+ gMain.newKeys = A_BUTTON;
+ gSharedMem[0x160FD]++;
+ gSharedMem[0x160FE] = 0x80;
+ break;
+ case 2:
+ gSharedMem[0x160FE]--;
+ if (gSharedMem[0x160FE] == 0)
+ {
+ gMain.heldKeys = A_BUTTON;
+ gMain.newKeys = A_BUTTON;
+ gSharedMem[0x160FD]++;
+ gSharedMem[0x160FE] = 0x80;
+ }
+ break;
+ case 3:
+ gSharedMem[0x160FE]--;
+ if (gSharedMem[0x160FE] == 0)
+ {
+ gMain.heldKeys = A_BUTTON;
+ gMain.newKeys = A_BUTTON;
+ gSharedMem[0x160FD]++;
+ }
+ break;
+ case 4:
+ gSharedMem[0x160FD] = 0;
+ break;
+ }
+ }
+}
+#endif
- for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
- gBattleBankFunc[gActiveBank]();
+void sub_8010824(void)
+{
+#if DEBUG
+ if (gUnknown_02023A14_50 & 0x80)
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ debug_sub_80138CC();
+ gBattleMainFunc();
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ gBattleBankFunc[gActiveBank]();
+ }
+ else
+#endif
+ {
+ gBattleMainFunc();
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ gBattleBankFunc[gActiveBank]();
+ }
}
void sub_8010874(void)
@@ -1650,6 +3709,10 @@ void sub_8010874(void)
gBattleResults.pokeString2[i] = 0;
gBattleResults.caughtNick[i] = 0;
}
+#if DEBUG
+ gSharedMem[0x1609E] = 0;
+ gSharedMem[0x1609F] = 0;
+#endif
}
void SwitchInClearSetData(void)
@@ -4129,6 +6192,7 @@ void SetActionsAndBanksTurnOrder(void)
}
}
}
+
gBattleMainFunc = CheckFocusPunch_ClearVarsBeforeTurnStarts;
eFocusPunchBank = 0;
}
@@ -4709,9 +6773,8 @@ void HandleAction_UseItem(void)
}
else
{
- ewram16003 = gBankAttacker;
- switch (ewram160D8(gBankAttacker))
+ switch (ewram160D8((ewram16003 = gBankAttacker)))
{
case AI_ITEM_FULL_RESTORE:
case AI_ITEM_HEAL_HP:
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
index 81f406165..bff5ba104 100644
--- a/src/battle/battle_4.c
+++ b/src/battle/battle_4.c
@@ -95,6 +95,7 @@ enum
};
//extern needed variables
+extern u8 gUnknown_02023A14_50;
extern u8 gCritMultiplier;
extern s32 gBattleMoveDamage;
extern u32 gStatuses3[BATTLE_BANKS_COUNT];
@@ -5017,20 +5018,26 @@ _0801F610: .4byte BattleScript_SAtkDown2\n\
}
#endif // NONMATCHING
-
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] & 0x80 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+
+ if (DEBUG && (gUnknown_02023A14_50 & 4)
+ && !(gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ SetMoveEffect(0, 0);
+ }
+ else if ((gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80) && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
{
gBattleCommunication[MOVE_EFFECT_BYTE] &= 0x7F;
SetMoveEffect(0, 0x80);
}
- else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] != 0 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
{
if (PercentChance >= 100)
SetMoveEffect(0, 0x80);
@@ -5038,7 +5045,10 @@ static void atk15_seteffectwithchance(void)
SetMoveEffect(0, 0);
}
else
+ {
gBattlescriptCurrInstr++;
+ }
+
gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
gBattleStruct->unk16112 = 0;
}
@@ -12619,6 +12629,193 @@ static void atk9D_mimicattackcopy(void)
}
}
+#if DEBUG
+__attribute__((naked))
+static void atk9E_metronome(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ ldr r6, ._3076 @ gBankAttacker\n\
+ ldrb r2, [r6]\n\
+ lsl r1, r2, #0x1\n\
+ ldr r0, ._3076 + 4 @ \n\
+ add r3, r1, r0\n\
+ ldr r5, ._3076 + 8 @ \n\
+ mov r4, #0x58\n\
+ add r0, r2, #0\n\
+ mul r0, r0, r4\n\
+ add r1, r0, r5\n\
+ ldrh r0, [r1, #0xe]\n\
+ cmp r0, #0\n\
+ bne ._3071 @cond_branch\n\
+ ldrh r2, [r1, #0x10]\n\
+ cmp r2, #0\n\
+ beq ._3071 @cond_branch\n\
+ ldrh r0, [r1, #0x12]\n\
+ cmp r0, #0\n\
+ beq ._3071 @cond_branch\n\
+ ldrh r0, [r3]\n\
+ cmp r0, #0\n\
+ bne ._3072 @cond_branch\n\
+ strh r2, [r3]\n\
+._3072:\n\
+ ldr r1, ._3076 + 12 @ \n\
+ ldrh r0, [r3]\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r6]\n\
+ mul r0, r0, r4\n\
+ add r0, r0, r5\n\
+ ldrh r5, [r0, #0x10]\n\
+ ldrh r2, [r0, #0x12]\n\
+ add r7, r1, #0\n\
+ cmp r5, r2\n\
+ bcs ._3073 @cond_branch\n\
+ ldrh r0, [r3]\n\
+ cmp r0, r2\n\
+ beq ._3074 @cond_branch\n\
+ add r0, r0, #0x1\n\
+ b ._3079\n\
+._3077:\n\
+ .align 2, 0\n\
+._3076:\n\
+ .word gBankAttacker\n\
+ .word +0x20160b4\n\
+ .word gBattleMons\n\
+ .word gCurrentMove\n\
+._3073:\n\
+ ldrh r4, [r3]\n\
+ add r1, r4, #0\n\
+ mov r0, #0xb1\n\
+ lsl r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ bne ._3078 @cond_branch\n\
+ mov r0, #0x1\n\
+ b ._3079\n\
+._3078:\n\
+ cmp r1, r2\n\
+ bne ._3080 @cond_branch\n\
+._3074:\n\
+ strh r5, [r3]\n\
+ b ._3081\n\
+._3080:\n\
+ add r0, r4, #1\n\
+._3079:\n\
+ strh r0, [r3]\n\
+._3081:\n\
+ ldr r4, ._3083 @ gHitMarker\n\
+ ldr r2, [r4]\n\
+ ldr r0, ._3083 + 4 @ 0xfffffbff\n\
+ and r2, r2, r0\n\
+ str r2, [r4]\n\
+ ldr r6, ._3083 + 8 @ gBattlescriptCurrInstr\n\
+ ldr r5, ._3083 + 12 @ gBattleScriptsForMoveEffects\n\
+ ldr r3, ._3083 + 16 @ gBattleMoves\n\
+ ldrh r1, [r7]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r5\n\
+ ldr r0, [r0]\n\
+ str r0, [r6]\n\
+ mov r0, #0x80\n\
+ lsl r0, r0, #0x4\n\
+ orr r2, r2, r0\n\
+ str r2, [r4]\n\
+ ldrh r0, [r7]\n\
+ b ._3082\n\
+._3084:\n\
+ .align 2, 0\n\
+._3083:\n\
+ .word gHitMarker\n\
+ .word 0xfffffbff\n\
+ .word gBattlescriptCurrInstr\n\
+ .word gBattleScriptsForMoveEffects\n\
+ .word gBattleMoves\n\
+._3071:\n\
+ ldr r7, ._3090 @ gCurrentMove\n\
+ mov r6, #0xb1\n\
+ lsl r6, r6, #0x1\n\
+ ldr r5, ._3090 + 4 @ sMovesForbiddenToCopy\n\
+ ldr r0, ._3090 + 8 @ gBattlescriptCurrInstr\n\
+ mov r8, r0\n\
+._3089:\n\
+ bl Random\n\
+ ldr r2, ._3090 + 12 @ 0x1ff\n\
+ add r1, r2, #0\n\
+ and r0, r0, r1\n\
+ add r0, r0, #0x1\n\
+ strh r0, [r7]\n\
+ cmp r0, r6\n\
+ bhi ._3089 @cond_branch\n\
+ mov r0, #0x3\n\
+._3086:\n\
+ sub r0, r0, #0x1\n\
+ cmp r0, #0\n\
+ bge ._3086 @cond_branch\n\
+ ldr r4, ._3090 @ gCurrentMove\n\
+ ldrh r2, [r4]\n\
+ ldr r3, ._3090 + 16 @ 0xffff\n\
+ sub r0, r5, #2\n\
+._3088:\n\
+ add r0, r0, #0x2\n\
+ ldrh r1, [r0]\n\
+ cmp r1, r2\n\
+ beq ._3087 @cond_branch\n\
+ cmp r1, r3\n\
+ bne ._3088 @cond_branch\n\
+._3087:\n\
+ ldr r0, ._3090 + 16 @ 0xffff\n\
+ cmp r1, r0\n\
+ bne ._3089 @cond_branch\n\
+ ldr r2, ._3090 + 20 @ gHitMarker\n\
+ ldr r0, [r2]\n\
+ ldr r1, ._3090 + 24 @ 0xfffffbff\n\
+ and r0, r0, r1\n\
+ str r0, [r2]\n\
+ ldr r3, ._3090 + 28 @ gBattleScriptsForMoveEffects\n\
+ ldr r2, ._3090 + 32 @ gBattleMoves\n\
+ ldrh r1, [r4]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldr r0, [r0]\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ ldrh r0, [r4]\n\
+._3082:\n\
+ mov r1, #0x0\n\
+ bl GetMoveTarget\n\
+ ldr r1, ._3090 + 36 @ gBankTarget\n\
+ strb r0, [r1]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._3091:\n\
+ .align 2, 0\n\
+._3090:\n\
+ .word gCurrentMove\n\
+ .word sMovesForbiddenToCopy\n\
+ .word gBattlescriptCurrInstr\n\
+ .word 0x1ff\n\
+ .word 0xffff\n\
+ .word gHitMarker\n\
+ .word 0xfffffbff\n\
+ .word gBattleScriptsForMoveEffects\n\
+ .word gBattleMoves\n\
+ .word gBankTarget");
+}
+#else
#ifdef NONMATCHING
static void atk9E_metronome(void)
{
@@ -12720,6 +12917,7 @@ _0802795C: .4byte gBankTarget\n\
.syntax divided");
}
#endif // NONMATCHING
+#endif
static void atk9F_dmgtolevel(void)
{
diff --git a/src/battle/battle_7.c b/src/battle/battle_7.c
index b4c71b9c2..85c1d4aed 100644
--- a/src/battle/battle_7.c
+++ b/src/battle/battle_7.c
@@ -26,7 +26,7 @@ extern u8 gActiveBank;
extern u8 gNoOfAllBanks;
extern u16 gBattlePartyID[];
extern u8 gBanksBySide[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u16 gUnknown_02024DE8;
extern u8 gDoingBattleAnim;
extern u32 gTransformedPersonalities[];
@@ -169,9 +169,9 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e)
}
if (ewram17800[a].substituteSprite && sub_803163C(d) == 0)
return TRUE;
- if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible)
+ if (ewram17800[a].substituteSprite && d == 2 && gSprites[gBankSpriteIds[a]].invisible)
{
- refresh_graphics_maybe(a, 1, gObjectBankIDs[a]);
+ refresh_graphics_maybe(a, 1, gBankSpriteIds[a]);
sub_80324E0(a);
return TRUE;
}
@@ -592,12 +592,12 @@ void sub_8031F24(void)
s32 i;
for (i = 0; i < gNoOfAllBanks; i++)
- ewram17800[i].invisible = gSprites[gObjectBankIDs[i]].invisible;
+ ewram17800[i].invisible = gSprites[gBankSpriteIds[i]].invisible;
}
void sub_8031F88(u8 a)
{
- ewram17800[a].invisible = gSprites[gObjectBankIDs[a]].invisible;
+ ewram17800[a].invisible = gSprites[gBankSpriteIds[a]].invisible;
}
void sub_8031FC4(u8 a, u8 b, bool8 c)
@@ -611,7 +611,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
if (c)
{
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], ewram17840.unk0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[a]], ewram17840.unk0);
paletteOffset = 0x100 + a * 16;
LoadPalette(ewram16400 + ewram17840.unk0 * 32, paletteOffset, 32);
gBattleMonForms[a] = ewram17840.unk0;
@@ -620,7 +620,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
- gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a);
+ gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a);
}
else
{
@@ -673,7 +673,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
gTransformedPersonalities[a]);
}
}
- DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gObjectBankIDs[a]].oam.tileNum * 32), 0x800);
+ DmaCopy32Defvars(3, gUnknown_081FAF4C[r10], (void *)(VRAM + 0x10000 + gSprites[gBankSpriteIds[a]].oam.tileNum * 32), 0x800);
paletteOffset = 0x100 + a * 16;
lzPaletteData = GetMonSpritePalFromOtIdPersonality(species, otId, personalityValue);
LZDecompressWram(lzPaletteData, gSharedMem);
@@ -692,8 +692,8 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
ewram17800[a].transformedSpecies = species;
gBattleMonForms[a] = gBattleMonForms[b];
}
- gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a);
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
+ gSprites[gBankSpriteIds[a]].pos1.y = sub_8077F68(a);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
}
}
@@ -833,15 +833,15 @@ void sub_80326EC(u8 a)
{
if (IsBankSpritePresent(i) != 0)
{
- gSprites[gObjectBankIDs[i]].oam.affineMode = a;
+ gSprites[gBankSpriteIds[i]].oam.affineMode = a;
if (a == 0)
{
- ewram17810[i].unk6 = gSprites[gObjectBankIDs[i]].oam.matrixNum;
- gSprites[gObjectBankIDs[i]].oam.matrixNum = 0;
+ ewram17810[i].unk6 = gSprites[gBankSpriteIds[i]].oam.matrixNum;
+ gSprites[gBankSpriteIds[i]].oam.matrixNum = 0;
}
else
{
- gSprites[gObjectBankIDs[i]].oam.matrixNum = ewram17810[i].unk6;
+ gSprites[gBankSpriteIds[i]].oam.matrixNum = ewram17810[i].unk6;
}
}
}
@@ -867,7 +867,7 @@ void sub_80328A4(struct Sprite *sprite)
{
bool8 invisible = FALSE;
u8 r4 = sprite->data[0];
- struct Sprite *r7 = &gSprites[gObjectBankIDs[r4]];
+ struct Sprite *r7 = &gSprites[gBankSpriteIds[r4]];
if (!r7->inUse || IsBankSpritePresent(r4) == 0)
{
diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c
index 2ac9df2b9..629a57d25 100644
--- a/src/battle/battle_ai.c
+++ b/src/battle/battle_ai.c
@@ -13,6 +13,8 @@
#include "util.h"
#include "ewram.h"
+extern u8 gUnknown_02023A14_50;
+extern u32 gUnknown_02023A14_4C;
extern u16 gBattleTypeFlags;
extern u16 gBattleWeather;
extern u8 gActiveBank;
@@ -336,11 +338,15 @@ void BattleAI_SetupAIData(void)
else if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE)
AI_THINKING_STRUCT->aiFlags = 0x80000000;
#ifdef GERMAN
- else if (gBattleTypeFlags & 0x900 || gTrainerBattleOpponent == 0x400)
+ else if (gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER) || gTrainerBattleOpponent == 0x400)
AI_THINKING_STRUCT->aiFlags = 7;
#endif
else // otherwise, just set aiFlags to whatever flags the trainer has set in their data.
AI_THINKING_STRUCT->aiFlags = gTrainers[gTrainerBattleOpponent].aiFlags;
+#if DEBUG
+ if (gUnknown_02023A14_50 & 1)
+ AI_THINKING_STRUCT->aiFlags = gUnknown_02023A14_4C;
+#endif
}
u8 BattleAI_GetAIActionToUse(void)
diff --git a/src/battle/battle_anim.c b/src/battle/battle_anim.c
index 2714768ab..a91e166c4 100644
--- a/src/battle/battle_anim.c
+++ b/src/battle/battle_anim.c
@@ -14,6 +14,7 @@
#include "task.h"
#include "ewram.h"
#include "graphics.h"
+#include "constants/battle_anim.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)
@@ -1287,7 +1288,7 @@ const struct BattleAnimBackground gBattleAnimBackgroundTable[] =
};
extern u16 gBattlePartyID[4];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u8 gBankAttacker;
extern u8 gBankTarget;
EWRAM_DATA const u8 *sBattleAnimScriptPtr = NULL;
@@ -1319,7 +1320,7 @@ extern struct MusicPlayerInfo gMPlay_BGM;
extern struct MusicPlayerInfo gMPlay_SE1;
extern struct MusicPlayerInfo gMPlay_SE2;
-extern const u16 gUnknown_081C7160[];
+extern const u16 gSingingMoves[];
extern const u8 *const gBattleAnims_Moves[];
static void RunAnimScriptCommand(void);
@@ -1513,10 +1514,11 @@ void LaunchBattleAnimation(const u8 *const moveAnims[], u16 move, u8 isMoveAnim)
if (isMoveAnim)
{
- for (i = 0; gUnknown_081C7160[i] != 0xFFFF; i++)
+ for (i = 0; gSingingMoves[i] != 0xFFFF; i++)
{
- if (move == gUnknown_081C7160[i])
+ if (move == gSingingMoves[i])
{
+ // Lower the volume for the short song that gets played.
m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 128);
break;
}
@@ -1599,28 +1601,28 @@ static void RunAnimScriptCommand(void)
static void ScriptCmd_loadspritegfx(void)
{
- u16 index;
+ u16 tag;
sBattleAnimScriptPtr++;
- index = T1_READ_16(sBattleAnimScriptPtr);
- LoadCompressedObjectPic(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)]);
- LoadCompressedObjectPalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(index)]);
+ tag = T1_READ_16(sBattleAnimScriptPtr);
+ LoadCompressedObjectPic(&gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)]);
+ LoadCompressedObjectPalette(&gBattleAnimPaletteTable[GET_TRUE_SPRITE_INDEX(tag)]);
sBattleAnimScriptPtr += 2;
- AddSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
+ AddSpriteIndex(GET_TRUE_SPRITE_INDEX(tag));
gAnimFramesToWait = 1;
gAnimScriptCallback = WaitAnimFrameCount;
}
static void ScriptCmd_unloadspritegfx(void)
{
- u16 index;
+ u16 tag;
sBattleAnimScriptPtr++;
- index = T1_READ_16(sBattleAnimScriptPtr);
- FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag);
- FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(index)].tag);
+ tag = T1_READ_16(sBattleAnimScriptPtr);
+ FreeSpriteTilesByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)].tag);
+ FreeSpritePaletteByTag(gBattleAnimPicTable[GET_TRUE_SPRITE_INDEX(tag)].tag);
sBattleAnimScriptPtr += 2;
- ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(index));
+ ClearSpriteIndex(GET_TRUE_SPRITE_INDEX(tag));
}
static void ScriptCmd_createsprite(void)
@@ -1802,7 +1804,7 @@ static void ScriptCmd_monbg(void)
u8 bank;
u8 identity;
bool8 toBG_2;
- u16 r4;
+ u16 spriteId;
u8 taskId;
sBattleAnimScriptPtr++;
@@ -1826,12 +1828,12 @@ static void ScriptCmd_monbg(void)
else
toBG_2 = 1;
- sub_8076034(bank, toBG_2);
- r4 = gObjectBankIDs[bank];
+ MoveBattlerSpriteToBG(bank, toBG_2);
+ spriteId = gBankSpriteIds[bank];
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
- gTasks[taskId].data[0] = r4;
- gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x;
- gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
if (toBG_2 == 0)
{
gTasks[taskId].data[3] = gBattle_BG1_X;
@@ -1847,8 +1849,9 @@ static void ScriptCmd_monbg(void)
gMonAnimTaskIdArray[0] = taskId;
}
+
bank ^= 2;
- if (animBank > 1 && IsAnimBankSpriteVisible(bank))
+ if (animBank >= ANIM_BANK_ATK_PARTNER && IsAnimBankSpriteVisible(bank))
{
identity = GetBankIdentity(bank);
identity += 0xFF;
@@ -1856,12 +1859,12 @@ static void ScriptCmd_monbg(void)
toBG_2 = 0;
else
toBG_2 = 1;
- sub_8076034(bank, toBG_2);
- r4 = gObjectBankIDs[bank];
+ MoveBattlerSpriteToBG(bank, toBG_2);
+ spriteId = gBankSpriteIds[bank];
taskId = CreateTask(task_pA_ma0A_obj_to_bg_pal, 10);
- gTasks[taskId].data[0] = r4;
- gTasks[taskId].data[1] = gSprites[r4].pos1.x + gSprites[r4].pos2.x;
- gTasks[taskId].data[2] = gSprites[r4].pos1.y + gSprites[r4].pos2.y;
+ gTasks[taskId].data[0] = spriteId;
+ gTasks[taskId].data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
+ gTasks[taskId].data[2] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
if (toBG_2 == 0)
{
gTasks[taskId].data[3] = gBattle_BG1_X;
@@ -1894,17 +1897,17 @@ bool8 IsAnimBankSpriteVisible(u8 bank)
return FALSE;
if (IsContest())
return TRUE; // this line wont ever be reached.
- if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gObjectBankIDs[bank]].invisible)
+ if (!(EWRAM_17800[bank].unk0 & 1) || !gSprites[gBankSpriteIds[bank]].invisible)
return TRUE;
return FALSE;
}
-void sub_8076034(u8 a, u8 b)
+void MoveBattlerSpriteToBG(u8 bank, u8 toBG_2)
{
u8 spriteId;
- if (b == 0)
+ if (toBG_2 == 0)
{
volatile u8 pointlessZero;
struct UnknownStruct2 s;
@@ -1920,23 +1923,23 @@ void sub_8076034(u8 a, u8 b)
REG_BG1CNT_BITFIELD.screenSize = 1;
REG_BG1CNT_BITFIELD.areaOverflowMode = 0;
- spriteId = gObjectBankIDs[a];
+ spriteId = gBankSpriteIds[bank];
gBattle_BG1_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
if (IsContest() != 0 && IsSpeciesNotUnown(EWRAM_19348) != 0)
gBattle_BG1_X--;
gBattle_BG1_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
+ gSprites[gBankSpriteIds[bank]].invisible = TRUE;
REG_BG1HOFS = gBattle_BG1_X;
REG_BG1VOFS = gBattle_BG1_Y;
- LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, s.unk8 * 16, 32);
- DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + a * 16, (u16 *)PLTT + s.unk8 * 16, 32);
+ LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, s.unk8 * 16, 32);
+ DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (u16 *)PLTT + s.unk8 * 16, 32);
if (IsContest() != 0)
r2 = 0;
else
- r2 = GetBankIdentity(a);
+ r2 = GetBankIdentity(bank);
sub_80E4EF8(0, 0, r2, s.unk8, (u32)s.unk0, (((s32)s.unk4 - VRAM) / 2048), REG_BG1CNT_BITFIELD.charBaseBlock);
if (IsContest() != 0)
sub_8076380();
@@ -1954,18 +1957,18 @@ void sub_8076034(u8 a, u8 b)
REG_BG2CNT_BITFIELD.screenSize = 1;
REG_BG2CNT_BITFIELD.areaOverflowMode = 0;
- spriteId = gObjectBankIDs[a];
+ spriteId = gBankSpriteIds[bank];
gBattle_BG2_X = -(gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x) + 32;
gBattle_BG2_Y = -(gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) + 32;
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
+ gSprites[gBankSpriteIds[bank]].invisible = TRUE;
REG_BG2HOFS = gBattle_BG2_X;
REG_BG2VOFS = gBattle_BG2_Y;
- LoadPalette(gPlttBufferUnfaded + 0x100 + a * 16, 0x90, 32);
- DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + a * 16, (void *)(PLTT + 0x120), 32);
+ LoadPalette(gPlttBufferUnfaded + 0x100 + bank * 16, 0x90, 32);
+ DmaCopy32Defvars(3, gPlttBufferUnfaded + 0x100 + bank * 16, (void *)(PLTT + 0x120), 32);
- sub_80E4EF8(0, 0, GetBankIdentity(a), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock);
+ sub_80E4EF8(0, 0, GetBankIdentity(bank), 9, 0x6000, 0x1E, REG_BG2CNT_BITFIELD.charBaseBlock);
}
}
@@ -2088,9 +2091,9 @@ static void ScriptCmd_clearmonbg(void)
bank = gAnimBankTarget;
if (gMonAnimTaskIdArray[0] != 0xFF)
- gSprites[gObjectBankIDs[bank]].invisible = FALSE;
+ gSprites[gBankSpriteIds[bank]].invisible = FALSE;
if (animBankId > 1 && gMonAnimTaskIdArray[1] != 0xFF)
- gSprites[gObjectBankIDs[bank ^ 2]].invisible = FALSE;
+ gSprites[gBankSpriteIds[bank ^ 2]].invisible = FALSE;
else
animBankId = 0;
@@ -2158,8 +2161,8 @@ static void ScriptCmd_monbg_22(void)
r1 = 0;
else
r1 = 1;
- sub_8076034(bank, r1);
- gSprites[gObjectBankIDs[bank]].invisible = FALSE;
+ MoveBattlerSpriteToBG(bank, r1);
+ gSprites[gBankSpriteIds[bank]].invisible = FALSE;
}
bank ^= 2;
@@ -2171,8 +2174,8 @@ static void ScriptCmd_monbg_22(void)
r1 = 0;
else
r1 = 1;
- sub_8076034(bank, r1);
- gSprites[gObjectBankIDs[bank]].invisible = FALSE;
+ MoveBattlerSpriteToBG(bank, r1);
+ gSprites[gBankSpriteIds[bank]].invisible = FALSE;
}
sBattleAnimScriptPtr++;
}
@@ -2197,9 +2200,9 @@ static void ScriptCmd_clearmonbg_23(void)
bank = gAnimBankTarget;
if (IsAnimBankSpriteVisible(bank))
- gSprites[gObjectBankIDs[bank]].invisible = FALSE;
+ gSprites[gBankSpriteIds[bank]].invisible = FALSE;
if (animBankId > 1 && IsAnimBankSpriteVisible(bank ^ 2))
- gSprites[gObjectBankIDs[bank ^ 2]].invisible = FALSE;
+ gSprites[gBankSpriteIds[bank ^ 2]].invisible = FALSE;
else
animBankId = 0;
@@ -2236,13 +2239,13 @@ static void sub_80769A4(u8 taskId)
static void ScriptCmd_setalpha(void)
{
- u16 half1, half2;
+ u16 spriteAlpha, bgAlpha;
sBattleAnimScriptPtr++;
- half1 = *(sBattleAnimScriptPtr++);
- half2 = *(sBattleAnimScriptPtr++) << 8;
- REG_BLDCNT = 0x3F40;
- REG_BLDALPHA = half1 | half2;
+ spriteAlpha = *(sBattleAnimScriptPtr++);
+ bgAlpha = *(sBattleAnimScriptPtr++) << 8;
+ REG_BLDCNT = BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_EFFECT_BLEND;
+ REG_BLDALPHA = spriteAlpha | bgAlpha;
}
static void ScriptCmd_setbldcnt(void)
@@ -2691,13 +2694,13 @@ s16 CalculatePanIncrement(s16 sourcePan, s16 targetPan, s16 incrementPan)
static void ScriptCmd_playsewithpan(void)
{
- u16 songId;
+ u16 soundId;
s8 pan;
sBattleAnimScriptPtr++;
- songId = T1_READ_16(sBattleAnimScriptPtr);
+ soundId = T1_READ_16(sBattleAnimScriptPtr);
pan = T1_READ_8(sBattleAnimScriptPtr + 2);
- PlaySE12WithPanning(songId, BattleAnimAdjustPanning(pan));
+ PlaySE12WithPanning(soundId, BattleAnimAdjustPanning(pan));
sBattleAnimScriptPtr += 3;
}
diff --git a/src/battle/battle_anim_807B69C.c b/src/battle/battle_anim_807B69C.c
index 058a45769..6043efb0c 100644
--- a/src/battle/battle_anim_807B69C.c
+++ b/src/battle/battle_anim_807B69C.c
@@ -15,7 +15,7 @@ extern bool8 gAnimScriptActive;
extern void (*gAnimScriptCallback)(void);
extern s16 gBattleAnimArgs[];
extern u8 gAnimBankTarget;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
extern const u8 *const gBattleAnims_StatusConditions[];
@@ -72,7 +72,7 @@ static void sub_807BDAC(u8);
u8 unref_sub_807B69C(u8 a, u8 b)
{
- u8 spriteId1 = gObjectBankIDs[a];
+ u8 spriteId1 = gBankSpriteIds[a];
u8 taskId = CreateTask(sub_807B7E0, 10);
u8 spriteId2;
u8 i;
diff --git a/src/battle/battle_anim_80A7E7C.c b/src/battle/battle_anim_80A7E7C.c
index f109333e3..a8b0ec329 100644
--- a/src/battle/battle_anim_80A7E7C.c
+++ b/src/battle/battle_anim_80A7E7C.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle.h"
#include "battle_anim.h"
#include "rom_8077ABC.h"
#include "sprite.h"
@@ -9,34 +10,34 @@
extern s16 gBattleAnimArgs[8];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern s32 gAnimMoveDmg;
extern u16 gAnimMovePower;
extern u8 gAnimBankAttacker;
extern u8 gAnimBankTarget;
-static void sub_80A7EF0(u8 taskId);
-static void sub_80A808C(u8 taskId);
-static void sub_80A81D8(u8 taskId);
-static void sub_80A8374(u8 taskId);
+static void AnimTask_ShakeMonStep(u8 taskId);
+static void AnimTask_ShakeMon2Step(u8 taskId);
+static void AnimTask_ShakeMonInPlaceStep(u8 taskId);
+static void AnimTask_ShakeAndSinkMonStep(u8 taskId);
static void sub_80A8488(u8 taskId);
-static void sub_80A8530(struct Sprite *sprite);
-static void sub_80A85A4(struct Sprite *sprite);
-static void sub_80A85C8(struct Sprite *sprite);
-static void sub_80A8614(struct Sprite* sprite);
-static void sub_80A8638(struct Sprite *sprite);
-static void sub_80A86F4(struct Sprite *sprite);
-static void sub_80A8764(struct Sprite *sprite);
+static void DoHorizontalLunge(struct Sprite *sprite);
+static void ReverseHorizontalLungeDirection(struct Sprite *sprite);
+static void DoVerticalDip(struct Sprite *sprite);
+static void ReverseVerticalDipDirection(struct Sprite* sprite);
+static void SlideMonToOriginalPos(struct Sprite *sprite);
+static void SlideMonToOriginalPosStep(struct Sprite *sprite);
+static void SlideMonToOffset(struct Sprite *sprite);
static void sub_80A8818(struct Sprite *sprite);
static void sub_80A88F0(struct Sprite *sprite);
-static void sub_80A89B4(u8 taskId);
-static void sub_80A8A18(u8 taskId);
-static void sub_80A8C0C(u8 taskId);
-static void sub_80A8D8C(u8 taskId);
+static void AnimTask_WindUpLungePart1(u8 taskId);
+static void AnimTask_WindUpLungePart2(u8 taskId);
+static void AnimTask_SwayMonStep(u8 taskId);
+static void AnimTask_ScaleMonAndRestoreStep(u8 taskId);
static void sub_80A8FD8(u8 taskId);
static void sub_80A913C(u8 taskId);
-const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FB0 =
+const struct SpriteTemplate gHorizontalLungeSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -44,10 +45,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FB0 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A8530,
+ .callback = DoHorizontalLunge,
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FC8 =
+const struct SpriteTemplate gVerticalDipSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -55,10 +56,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FC8 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A85C8,
+ .callback = DoVerticalDip,
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FE0 =
+const struct SpriteTemplate gSlideMonToOriginalPosSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -66,10 +67,10 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FE0 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A8638,
+ .callback = SlideMonToOriginalPos,
};
-const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FF8 =
+const struct SpriteTemplate gSlideMonToOffsetSpriteTemplate =
{
.tileTag = 0,
.paletteTag = 0,
@@ -77,7 +78,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C1FF8 =
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80A8764,
+ .callback = SlideMonToOffset,
};
const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 =
@@ -91,28 +92,35 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_83C2010 =
.callback = sub_80A8818,
};
-void sub_80A7E7C(u8 taskId)
+// Task to facilitate simple shaking of a pokemon's picture in battle.
+// The shaking alternates between the original position and the target position.
+// arg 0: anim battler
+// arg 1: x pixel offset
+// arg 2: y pixel offset
+// arg 3: num times to shake
+// arg 4: frame delay
+void AnimTask_ShakeMon(u8 taskId)
{
- u8 sprite;
- sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
- if (sprite == 0xff)
+ u8 spriteId;
+ spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ if (spriteId == 0xff)
{
DestroyAnimVisualTask(taskId);
return;
}
- gSprites[sprite].pos2.x = gBattleAnimArgs[1];
- gSprites[sprite].pos2.y = gBattleAnimArgs[2];
- TASK.data[0] = sprite;
+ gSprites[spriteId].pos2.x = gBattleAnimArgs[1];
+ gSprites[spriteId].pos2.y = gBattleAnimArgs[2];
+ TASK.data[0] = spriteId;
TASK.data[1] = gBattleAnimArgs[3];
TASK.data[2] = gBattleAnimArgs[4];
TASK.data[3] = gBattleAnimArgs[4];
TASK.data[4] = gBattleAnimArgs[1];
TASK.data[5] = gBattleAnimArgs[2];
- TASK.func = sub_80A7EF0;
- sub_80A7EF0(taskId);
+ TASK.func = AnimTask_ShakeMonStep;
+ AnimTask_ShakeMonStep(taskId);
}
-static void sub_80A7EF0(u8 taskId)
+static void AnimTask_ShakeMonStep(u8 taskId)
{
if (TASK.data[3] == 0)
{
@@ -147,13 +155,19 @@ static void sub_80A7EF0(u8 taskId)
}
}
-
-void sub_80A7FA0(u8 taskId)
+// Task to facilitate simple shaking of a pokemon's picture in battle.
+// The shaking alternates between the positive and negative versions of the specified pixel offsets.
+// arg 0: anim battler
+// arg 1: x pixel offset
+// arg 2: y pixel offset
+// arg 3: num times to shake
+// arg 4: frame delay
+void AnimTask_ShakeMon2(u8 taskId)
{
u8 sprite;
- bool8 r6;
+ bool8 destroy;
u8 side;
- r6 = 0;
+ destroy = FALSE;
if (gBattleAnimArgs[0] < 4)
{
sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
@@ -181,21 +195,23 @@ void sub_80A7FA0(u8 taskId)
side = GetBankByIdentity(3);
break;
}
+
if (IsAnimBankSpriteVisible(side) == FALSE)
- {
- r6 = 1;
- }
- sprite = gObjectBankIDs[side];
+ destroy = TRUE;
+
+ sprite = gBankSpriteIds[side];
}
else
{
- sprite = gObjectBankIDs[gAnimBankAttacker];
+ sprite = gBankSpriteIds[gAnimBankAttacker];
}
- if (r6)
+
+ if (destroy)
{
DestroyAnimVisualTask(taskId);
return;
}
+
gSprites[sprite].pos2.x = gBattleAnimArgs[1];
gSprites[sprite].pos2.y = gBattleAnimArgs[2];
TASK.data[0] = sprite;
@@ -204,30 +220,24 @@ void sub_80A7FA0(u8 taskId)
TASK.data[3] = gBattleAnimArgs[4];
TASK.data[4] = gBattleAnimArgs[1];
TASK.data[5] = gBattleAnimArgs[2];
- TASK.func = sub_80A808C;
- sub_80A808C(taskId);
+ TASK.func = AnimTask_ShakeMon2Step;
+ TASK.func(taskId);
}
-static void sub_80A808C(u8 taskId)
+static void AnimTask_ShakeMon2Step(u8 taskId)
{
if (TASK.data[3] == 0)
{
if (SPRITE.pos2.x == TASK.data[4])
- {
SPRITE.pos2.x = -TASK.data[4];
- }
else
- {
SPRITE.pos2.x = TASK.data[4];
- }
+
if (SPRITE.pos2.y == TASK.data[5])
- {
SPRITE.pos2.y = -TASK.data[5];
- }
else
- {
SPRITE.pos2.y = TASK.data[5];
- }
+
TASK.data[3] = TASK.data[2];
if (--TASK.data[1] == 0)
{
@@ -243,29 +253,37 @@ static void sub_80A808C(u8 taskId)
}
}
-void sub_80A8154(u8 taskId)
+// Task to facilitate simple shaking of a pokemon's picture in battle.
+// The shaking alternates between the positive and negative versions of the specified pixel offsets
+// with respect to the current location of the mon's picture.
+// arg 0: battler
+// arg 1: x offset
+// arg 2: y offset
+// arg 3: num shakes
+// arg 4: delay
+void AnimTask_ShakeMonInPlace(u8 taskId)
{
- u8 sprite;
- sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
- if (sprite == 0xff)
+ u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ if (spriteId == 0xff)
{
DestroyAnimVisualTask(taskId);
return;
}
- gSprites[sprite].pos2.x += gBattleAnimArgs[1];
- gSprites[sprite].pos2.y += gBattleAnimArgs[2];
- TASK.data[0] = sprite;
+
+ gSprites[spriteId].pos2.x += gBattleAnimArgs[1];
+ gSprites[spriteId].pos2.y += gBattleAnimArgs[2];
+ TASK.data[0] = spriteId;
TASK.data[1] = 0;
TASK.data[2] = gBattleAnimArgs[3];
TASK.data[3] = 0;
TASK.data[4] = gBattleAnimArgs[4];
TASK.data[5] = gBattleAnimArgs[1] * 2;
TASK.data[6] = gBattleAnimArgs[2] * 2;
- TASK.func = sub_80A81D8;
- sub_80A81D8(taskId);
+ TASK.func = AnimTask_ShakeMonInPlaceStep;
+ TASK.func(taskId);
}
-static void sub_80A81D8(u8 taskId)
+static void AnimTask_ShakeMonInPlaceStep(u8 taskId)
{
if (TASK.data[3] == 0)
{
@@ -302,7 +320,13 @@ static void sub_80A81D8(u8 taskId)
}
}
-void sub_80A8314(u8 taskId)
+// Shakes a mon bg horizontally and moves it downward linearly.
+// arg 0: battler
+// arg 1: x offset
+// arg 2: frame delay between each movement
+// arg 3: downward speed (subpixel)
+// arg 4: duration
+void AnimTask_ShakeAndSinkMon(u8 taskId)
{
u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
gSprites[sprite].pos2.x = gBattleAnimArgs[1];
@@ -311,11 +335,11 @@ void sub_80A8314(u8 taskId)
TASK.data[2] = gBattleAnimArgs[2];
TASK.data[3] = gBattleAnimArgs[3];
TASK.data[4] = gBattleAnimArgs[4];
- TASK.func = sub_80A8374;
- sub_80A8374(taskId);
+ TASK.func = AnimTask_ShakeAndSinkMonStep;
+ TASK.func(taskId);
}
-static void sub_80A8374(u8 taskId)
+static void AnimTask_ShakeAndSinkMonStep(u8 taskId)
{
s16 x;
u8 sprite;
@@ -325,11 +349,11 @@ static void sub_80A8374(u8 taskId)
{
TASK.data[8] = 0;
if (gSprites[sprite].pos2.x == x)
- {
x = -x;
- }
+
gSprites[sprite].pos2.x += x;
}
+
TASK.data[1] = x;
TASK.data[9] += TASK.data[3];
gSprites[sprite].pos2.y = TASK.data[9] >> 8;
@@ -340,89 +364,109 @@ static void sub_80A8374(u8 taskId)
}
}
-void sub_80A8408(u8 taskId)
+// Moves a mon bg picture along an elliptical path that begins
+// and ends at the mon's origin location.
+// arg 0: battler
+// arg 1: ellipse width
+// arg 2: ellipse height
+// arg 3: num loops
+// arg 4: speed (valid values are 0-5)
+void AnimTask_TranslateMonElliptical(u8 taskId)
{
u8 i;
- u8 sprite;
- u8 v1;
- v1 = 1;
- sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ u8 spriteId;
+ u8 wavePeriod;
+
+ wavePeriod = 1;
+ spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
if (gBattleAnimArgs[4] > 5)
- {
gBattleAnimArgs[4] = 5;
- }
+
for (i = 0; i < gBattleAnimArgs[4]; i++)
{
- v1 <<= 1;
+ wavePeriod <<= 1;
}
- TASK.data[0] = sprite;
+
+ TASK.data[0] = spriteId;
TASK.data[1] = gBattleAnimArgs[1];
TASK.data[2] = gBattleAnimArgs[2];
TASK.data[3] = gBattleAnimArgs[3];
- TASK.data[4] = v1;
+ TASK.data[4] = wavePeriod;
TASK.func = sub_80A8488;
- sub_80A8488(taskId);
+ TASK.func(taskId);
}
static void sub_80A8488(u8 taskId)
{
- u8 sprite;
- sprite = TASK.data[0];
- gSprites[sprite].pos2.x = Sin(TASK.data[5], TASK.data[1]);
- gSprites[sprite].pos2.y = -Cos(TASK.data[5], TASK.data[2]);
- gSprites[sprite].pos2.y += TASK.data[2];
+ u8 spriteId = TASK.data[0];
+ gSprites[spriteId].pos2.x = Sin(TASK.data[5], TASK.data[1]);
+ gSprites[spriteId].pos2.y = -Cos(TASK.data[5], TASK.data[2]);
+ gSprites[spriteId].pos2.y += TASK.data[2];
TASK.data[5] += TASK.data[4];
TASK.data[5] &= 0xff;
+
if (TASK.data[5] == 0)
- {
TASK.data[3]--;
- }
+
if (TASK.data[3] == 0)
{
- gSprites[sprite].pos2.x = 0;
- gSprites[sprite].pos2.y = 0;
+ gSprites[spriteId].pos2.x = 0;
+ gSprites[spriteId].pos2.y = 0;
DestroyAnimVisualTask(taskId);
return;
}
}
-void sub_80A8500(u8 taskId)
+// Moves a mon bg picture along an elliptical path that begins
+// and ends at the mon's origin location. Reverses the direction
+// of the path if it's not on the player's side of the battle.
+// arg 0: battler
+// arg 1: ellipse width
+// arg 2: ellipse height
+// arg 3: num loops
+// arg 4: speed (valid values are 0-5)
+void AnimTask_TranslateMonEllipticalRespectSide(u8 taskId)
{
- if (GetBankSide(gAnimBankAttacker))
- {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- }
- sub_80A8408(taskId);
+
+ AnimTask_TranslateMonElliptical(taskId);
}
-static void sub_80A8530(struct Sprite *sprite)
+// Performs a simple horizontal lunge, where the mon moves
+// horizontally, and then moves back in the opposite direction.
+// arg 0: duration of single lunge direction
+// arg 1: x pixel delta that is applied each frame
+static void DoHorizontalLunge(struct Sprite *sprite)
{
sprite->invisible = TRUE;
- if (GetBankSide(gAnimBankAttacker))
- {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
sprite->data[1] = -gBattleAnimArgs[1];
- }
else
- {
sprite->data[1] = gBattleAnimArgs[1];
- }
+
sprite->data[0] = gBattleAnimArgs[0];
sprite->data[2] = 0;
- sprite->data[3] = gObjectBankIDs[gAnimBankAttacker];
+ sprite->data[3] = gBankSpriteIds[gAnimBankAttacker];
sprite->data[4] = gBattleAnimArgs[0];
- StoreSpriteCallbackInData(sprite, sub_80A85A4);
- sprite->callback = sub_8078458;
+ StoreSpriteCallbackInData(sprite, ReverseHorizontalLungeDirection);
+ sprite->callback = TranslateMonBGUntil;
}
-static void sub_80A85A4(struct Sprite *sprite)
+static void ReverseHorizontalLungeDirection(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[1] = -sprite->data[1];
- sprite->callback = sub_8078458;
+ sprite->callback = TranslateMonBGUntil;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
-static void sub_80A85C8(struct Sprite *sprite)
+// Performs a simple vertical dipping motion, where moves vertically, and then
+// moves back in the opposite direction.
+// arg 0: duration of single dip direction
+// arg 1: y pixel delta that is applied each frame
+// arg 2: battler
+static void DoVerticalDip(struct Sprite *sprite)
{
u8 spriteId;
sprite->invisible = TRUE;
@@ -432,73 +476,72 @@ static void sub_80A85C8(struct Sprite *sprite)
sprite->data[2] = gBattleAnimArgs[1];
sprite->data[3] = spriteId;
sprite->data[4] = gBattleAnimArgs[0];
- StoreSpriteCallbackInData(sprite, sub_80A8614);
- sprite->callback = sub_8078458;
+ StoreSpriteCallbackInData(sprite, ReverseVerticalDipDirection);
+ sprite->callback = TranslateMonBGUntil;
}
-static void sub_80A8614(struct Sprite *sprite)
+static void ReverseVerticalDipDirection(struct Sprite *sprite)
{
sprite->data[0] = sprite->data[4];
sprite->data[2] = -sprite->data[2];
- sprite->callback = sub_8078458;
+ sprite->callback = TranslateMonBGUntil;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
-static void sub_80A8638(struct Sprite *sprite)
+// Linearly slides a mon's bg picture back to its original sprite position.
+// The sprite parameter is a dummy sprite used for facilitating the movement with its callback.
+// arg 0: 1 = target or 0 = attacker
+// arg 1: direction (0 = horizontal and vertical, 1 = horizontal only, 2 = vertical only)
+// arg 2: duration
+static void SlideMonToOriginalPos(struct Sprite *sprite)
{
int something;
- int spriteId;
+ int monSpriteId;
if (!gBattleAnimArgs[0])
- {
- spriteId = gObjectBankIDs[gAnimBankAttacker];
- }
+ monSpriteId = gBankSpriteIds[gAnimBankAttacker];
else
- {
- spriteId = gObjectBankIDs[gAnimBankTarget];
- }
+ monSpriteId = gBankSpriteIds[gAnimBankTarget];
+
sprite->data[0] = gBattleAnimArgs[2];
- sprite->data[1] = gSprites[spriteId].pos1.x + gSprites[spriteId].pos2.x;
- sprite->data[2] = gSprites[spriteId].pos1.x;
- sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
- sprite->data[4] = gSprites[spriteId].pos1.y;
+ sprite->data[1] = gSprites[monSpriteId].pos1.x + gSprites[monSpriteId].pos2.x;
+ sprite->data[2] = gSprites[monSpriteId].pos1.x;
+ sprite->data[3] = gSprites[monSpriteId].pos1.y + gSprites[monSpriteId].pos2.y;
+ sprite->data[4] = gSprites[monSpriteId].pos1.y;
something = 0;
- sub_8078A5C(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = something;
sprite->data[4] = something;
- sprite->data[5] = gSprites[spriteId].pos2.x;
- sprite->data[6] = gSprites[spriteId].pos2.y;
+ sprite->data[5] = gSprites[monSpriteId].pos2.x;
+ sprite->data[6] = gSprites[monSpriteId].pos2.y;
sprite->invisible = TRUE;
+
if (gBattleAnimArgs[1] == 1)
- {
sprite->data[2] = something;
- }
else if (gBattleAnimArgs[1] == 2)
- {
sprite->data[1] = something;
- }
+
sprite->data[7] = gBattleAnimArgs[1];
- sprite->data[7] |= spriteId << 8;
- sprite->callback = sub_80A86F4;
+ sprite->data[7] |= monSpriteId << 8;
+ sprite->callback = SlideMonToOriginalPosStep;
}
-static void sub_80A86F4(struct Sprite *sprite)
+static void SlideMonToOriginalPosStep(struct Sprite *sprite)
{
- s8 spriteId;
+ s8 monSpriteId;
u8 lo;
- struct Sprite *sprite2;
+ struct Sprite *monSprite;
+
lo = sprite->data[7] & 0xff;
- spriteId = sprite->data[7] >> 8;
- sprite2 = &gSprites[spriteId];
+ monSpriteId = sprite->data[7] >> 8;
+ monSprite = &gSprites[monSpriteId];
if (sprite->data[0] == 0)
{
if (lo < 2)
- {
- sprite2->pos2.x = 0;
- }
+ monSprite->pos2.x = 0;
+
if (lo == 2 || lo == 0)
- {
- sprite2->pos2.y = 0;
- }
+ monSprite->pos2.y = 0;
+
DestroyAnimSprite(sprite);
}
else
@@ -506,25 +549,30 @@ static void sub_80A86F4(struct Sprite *sprite)
sprite->data[0]--;
sprite->data[3] += sprite->data[1];
sprite->data[4] += sprite->data[2];
- sprite2->pos2.x = (s8)(sprite->data[3] >> 8) + sprite->data[5];
- sprite2->pos2.y = (s8)(sprite->data[4] >> 8) + sprite->data[6];
+ monSprite->pos2.x = (s8)(sprite->data[3] >> 8) + sprite->data[5];
+ monSprite->pos2.y = (s8)(sprite->data[4] >> 8) + sprite->data[6];
}
}
-static void sub_80A8764(struct Sprite *sprite)
+// Linearly translates a mon to a target offset. The horizontal offset
+// is mirrored for the opponent's pokemon, and the vertical offset
+// is only mirrored if arg 3 is set to 1.
+// arg 0: 0 = attacker, 1 = target
+// arg 1: target x pixel offset
+// arg 2: target y pixel offset
+// arg 3: mirror vertical translation for opposite battle side
+// arg 4: duration
+static void SlideMonToOffset(struct Sprite *sprite)
{
- u8 v1;
- u8 spriteId;
+ u8 battler;
+ u8 monSpriteId;
if (!gBattleAnimArgs[0])
- {
- v1 = gAnimBankAttacker;
- }
+ battler = gAnimBankAttacker;
else
- {
- v1 = gAnimBankTarget;
- }
- spriteId = gObjectBankIDs[v1];
- if (GetBankSide(v1))
+ battler = gAnimBankTarget;
+
+ monSpriteId = gBankSpriteIds[battler];
+ if (GetBankSide(battler) != SIDE_PLAYER)
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
if (gBattleAnimArgs[3] == 1)
@@ -532,18 +580,19 @@ static void sub_80A8764(struct Sprite *sprite)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
}
}
+
sprite->data[0] = gBattleAnimArgs[4];
- sprite->data[1] = gSprites[spriteId].pos1.x;
- sprite->data[2] = gSprites[spriteId].pos1.x + gBattleAnimArgs[1];
- sprite->data[3] = gSprites[spriteId].pos1.y;
- sprite->data[4] = gSprites[spriteId].pos1.y + gBattleAnimArgs[2];
- sub_8078A5C(sprite);
+ sprite->data[1] = gSprites[monSpriteId].pos1.x;
+ sprite->data[2] = gSprites[monSpriteId].pos1.x + gBattleAnimArgs[1];
+ sprite->data[3] = gSprites[monSpriteId].pos1.y;
+ sprite->data[4] = gSprites[monSpriteId].pos1.y + gBattleAnimArgs[2];
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = 0;
sprite->data[4] = 0;
- sprite->data[5] = spriteId;
+ sprite->data[5] = monSpriteId;
sprite->invisible = TRUE;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
- sprite->callback = sub_80784A8;
+ sprite->callback = TranslateMonBGSubPixelUntil;
}
static void sub_80A8818(struct Sprite *sprite)
@@ -559,7 +608,7 @@ static void sub_80A8818(struct Sprite *sprite)
{
v1 = gAnimBankTarget;
}
- spriteId = gObjectBankIDs[v1];
+ spriteId = gBankSpriteIds[v1];
if (GetBankSide(v1))
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
@@ -573,7 +622,7 @@ static void sub_80A8818(struct Sprite *sprite)
sprite->data[2] = sprite->data[1] + gBattleAnimArgs[1];
sprite->data[3] = gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y;
sprite->data[4] = sprite->data[3] + gBattleAnimArgs[2];
- sub_8078A5C(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->data[3] = gSprites[spriteId].pos2.x << 8;
sprite->data[4] = gSprites[spriteId].pos2.y << 8;
sprite->data[5] = spriteId;
@@ -586,7 +635,7 @@ static void sub_80A8818(struct Sprite *sprite)
{
StoreSpriteCallbackInData(sprite, sub_80A88F0);
}
- sprite->callback = sub_80784A8;
+ sprite->callback = TranslateMonBGSubPixelUntil;
}
@@ -597,11 +646,20 @@ static void sub_80A88F0(struct Sprite *sprite)
DestroyAnimSprite(sprite);
}
-void sub_80A8920(u8 taskId)
+// Task to facilitate a two-part translation animation, in which the sprite
+// is first translated in an arc to one position. Then, it "lunges" to a target
+// x offset. Used in TAKE_DOWN, for example.
+// arg 0: anim bank
+// arg 1: horizontal speed (subpixel)
+// arg 2: wave amplitude
+// arg 3: first duration
+// arg 4: delay before starting lunge
+// arg 5: target x offset for lunge
+// arg 6: lunge duration
+void AnimTask_WindUpLunge(u8 taskId)
{
- s16 r7;
- r7 = 0x8000 / gBattleAnimArgs[3];
- if (GetBankSide(gAnimBankAttacker))
+ s16 wavePeriod = 0x8000 / gBattleAnimArgs[3];
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
{
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
gBattleAnimArgs[5] = -gBattleAnimArgs[5];
@@ -613,11 +671,11 @@ void sub_80A8920(u8 taskId)
TASK.data[4] = gBattleAnimArgs[4];
TASK.data[5] = (gBattleAnimArgs[5] << 8) / gBattleAnimArgs[6];
TASK.data[6] = gBattleAnimArgs[6];
- TASK.data[7] = r7;
- TASK.func = sub_80A89B4;
+ TASK.data[7] = wavePeriod;
+ TASK.func = AnimTask_WindUpLungePart1;
}
-static void sub_80A89B4(u8 taskId)
+static void AnimTask_WindUpLungePart1(u8 taskId)
{
u8 spriteId;
spriteId = TASK.data[0];
@@ -627,11 +685,11 @@ static void sub_80A89B4(u8 taskId)
TASK.data[10] += TASK.data[7];
if (--TASK.data[3] == 0)
{
- TASK.func = sub_80A8A18;
+ TASK.func = AnimTask_WindUpLungePart2;
}
}
-static void sub_80A8A18(u8 taskId)
+static void AnimTask_WindUpLungePart2(u8 taskId)
{
u8 spriteId;
if (TASK.data[4] > 0)
@@ -668,7 +726,7 @@ void sub_80A8A80(u8 taskId)
DestroyAnimVisualTask(taskId);
return;
}
- spriteId = gObjectBankIDs[gAnimBankAttacker ^ 2];
+ spriteId = gBankSpriteIds[gAnimBankAttacker ^ 2];
break;
case 3:
if (!IsAnimBankSpriteVisible(gAnimBankTarget ^ 2))
@@ -676,7 +734,7 @@ void sub_80A8A80(u8 taskId)
DestroyAnimVisualTask(taskId);
return;
}
- spriteId = gObjectBankIDs[gAnimBankTarget ^ 2];
+ spriteId = gBankSpriteIds[gAnimBankTarget ^ 2];
break;
default:
DestroyAnimVisualTask(taskId);
@@ -705,59 +763,67 @@ static void sub_80A8B3C(u8 taskId)
}
}
-void sub_80A8B88(u8 taskId)
+// Task that facilitates translating the mon bg picture back and forth
+// in a swaying motion (uses Sine wave). It can sway either horizontally
+// or vertically, but not both.
+// arg 0: direction (0 = horizontal, 1 = vertical)
+// arg 1: wave amplitude
+// arg 2: wave period
+// arg 3: num sways
+// arg 4: which mon (0 = attacker, 1`= target)
+void AnimTask_SwayMon(u8 taskId)
{
u8 spriteId;
- if (GetBankSide(gAnimBankAttacker))
- {
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
gBattleAnimArgs[1] = -gBattleAnimArgs[1];
- }
+
spriteId = GetAnimBankSpriteId(gBattleAnimArgs[4]);
TASK.data[0] = gBattleAnimArgs[0];
TASK.data[1] = gBattleAnimArgs[1];
TASK.data[2] = gBattleAnimArgs[2];
TASK.data[3] = gBattleAnimArgs[3];
TASK.data[4] = spriteId;
+
if (gBattleAnimArgs[4] == 0)
- {
TASK.data[5] = gAnimBankAttacker;
- }
else
- {
TASK.data[5] = gAnimBankTarget;
- }
+
TASK.data[12] = 1;
- TASK.func = sub_80A8C0C;
+ TASK.func = AnimTask_SwayMonStep;
}
-static void sub_80A8C0C(u8 taskId)
+static void AnimTask_SwayMonStep(u8 taskId)
{
- s16 y;
+ s16 sineValue;
u8 spriteId;
- int index;
- u16 val;
+ int waveIndex;
+ u16 sineIndex;
+
spriteId = TASK.data[4];
- val = TASK.data[10] + TASK.data[2];
- TASK.data[10] = val;
- index = val >> 8;
- y = Sin(index, TASK.data[1]);
+ sineIndex = TASK.data[10] + TASK.data[2];
+ TASK.data[10] = sineIndex;
+ waveIndex = sineIndex >> 8;
+ sineValue = Sin(waveIndex, TASK.data[1]);
+
if (TASK.data[0] == 0)
{
- gSprites[spriteId].pos2.x = y;
+ gSprites[spriteId].pos2.x = sineValue;
}
else
{
- if (GetBankSide(TASK.data[5]) == 0)
+ if (GetBankSide(TASK.data[5]) == SIDE_PLAYER)
{
- gSprites[spriteId].pos2.y = (y >= 0) ? y : -y;
+ gSprites[spriteId].pos2.y = (sineValue >= 0) ? sineValue : -sineValue;
}
else
{
- gSprites[spriteId].pos2.y = (y >= 0) ? -y : y;
+ gSprites[spriteId].pos2.y = (sineValue >= 0) ? -sineValue : sineValue;
}
}
- if (((index >= 0x80u) && (TASK.data[11] == 0) && (TASK.data[12] == 1))
- || ((index < 0x7fu) && (TASK.data[11] == 1) && (TASK.data[12] == 0)))
+
+ if (((waveIndex >= 0x80u) && (TASK.data[11] == 0) && (TASK.data[12] == 1))
+ || ((waveIndex < 0x7fu) && (TASK.data[11] == 1) && (TASK.data[12] == 0)))
{
TASK.data[11] ^= 1;
TASK.data[12] ^= 1;
@@ -771,7 +837,13 @@ static void sub_80A8C0C(u8 taskId)
}
}
-void sub_80A8D34(u8 taskId)
+// Scales a mon's sprite, and then scales back to its original dimensions.
+// arg 0: x scale delta
+// arg 1: y scale delta
+// arg 2: duration
+// arg 3: anim bank
+// arg 4: sprite object mode
+void AnimTask_ScaleMonAndRestore(u8 taskId)
{
u8 spriteId;
spriteId = GetAnimBankSpriteId(gBattleAnimArgs[3]);
@@ -783,10 +855,10 @@ void sub_80A8D34(u8 taskId)
TASK.data[4] = spriteId;
TASK.data[10] = 0x100;
TASK.data[11] = 0x100;
- TASK.func = sub_80A8D8C;
+ TASK.func = AnimTask_ScaleMonAndRestoreStep;
}
-static void sub_80A8D8C(u8 taskId)
+static void AnimTask_ScaleMonAndRestoreStep(u8 taskId)
{
u8 spriteId;
TASK.data[10] += TASK.data[0];
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c
index d01c60b22..e08f865da 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -27,7 +27,7 @@ struct MovePpInfo
extern u8 gActiveBank;
extern u8 gBattleBufferA[][0x200];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u16 gBattlePartyID[];
extern u8 gHealthboxIDs[];
extern u16 gBattleTypeFlags;
@@ -71,7 +71,7 @@ extern void sub_80313A0(struct Sprite *);
extern void sub_803757C(void);
extern void oamt_add_pos2_onto_pos1();
extern void StoreSpriteCallbackInData();
-extern void sub_8078B34(struct Sprite *);
+extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void sub_80375B4(void);
extern void sub_8010384(struct Sprite *);
extern void sub_8037B78(void);
@@ -264,18 +264,18 @@ void sub_803752C(void)
void sub_803757C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
LinkOpponentBufferExecCompleted();
}
void sub_80375B4(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
- sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam);
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data[5];
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8031B74(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBank]].data[5];
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
LinkOpponentBufferExecCompleted();
}
}
@@ -379,8 +379,8 @@ void sub_8037840(void)
void sub_8037A74(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE
- && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBank]].animEnded == TRUE
+ && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
{
if (!ewram17810[gActiveBank].unk0_7)
{
@@ -412,7 +412,7 @@ void sub_8037B24(void)
void sub_8037B78(void)
{
- if (!gSprites[gObjectBankIDs[gActiveBank]].inUse)
+ if (!gSprites[gBankSpriteIds[gActiveBank]].inUse)
{
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkOpponentBufferExecCompleted();
@@ -423,8 +423,8 @@ void sub_8037BBC(void)
{
if (!ewram17810[gActiveBank].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8032A08(gActiveBank);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkOpponentBufferExecCompleted();
@@ -439,7 +439,7 @@ void sub_8037C2C(void)
void dp01t_0F_4_move_anim(void)
{
- u8 spriteId = gObjectBankIDs[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBank];
if (gSprites[spriteId].data[1] == 32)
{
@@ -483,7 +483,7 @@ void sub_8037D64(void)
ewram17810[gActiveBank].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
sub_8045A5C(
gHealthboxIDs[gActiveBank],
&gEnemyParty[gBattlePartyID[gActiveBank]],
@@ -1153,15 +1153,15 @@ void LinkOpponentHandleLoadPokeSprite(void)
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(gActiveBank, 2),
sub_8077F68(gActiveBank),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]);
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
gBattleBankFunc[gActiveBank] = sub_8037A74;
}
@@ -1183,18 +1183,18 @@ void sub_8039430(u8 a, u8 b)
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
- gObjectBankIDs[a] = CreateSprite(
+ gBankSpriteIds[a] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(a, 2),
sub_8077F68(a),
sub_8079E90(a));
- gSprites[gUnknown_0300434C[a]].data[1] = gObjectBankIDs[a];
- gSprites[gObjectBankIDs[a]].data[0] = a;
- gSprites[gObjectBankIDs[a]].data[2] = species;
- gSprites[gObjectBankIDs[a]].oam.paletteNum = a;
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
- gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
+ gSprites[gBankSpriteIds[a]].data[0] = a;
+ gSprites[gBankSpriteIds[a]].data[2] = species;
+ gSprites[gBankSpriteIds[a]].oam.paletteNum = a;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
+ gSprites[gBankSpriteIds[a]].invisible = TRUE;
+ gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFE);
}
@@ -1207,8 +1207,8 @@ void LinkOpponentHandleReturnPokeToBall(void)
}
else
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8032A08(gActiveBank);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkOpponentBufferExecCompleted();
@@ -1255,17 +1255,17 @@ void LinkOpponentHandleTrainerThrow(void)
}
sub_8031A6C(gender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
176 + xOffset, 40 + 4 * (8 - gTrainerFrontPicCoords[gender].coords),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag);
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum;
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag);
- gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = gender;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[gender].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[gender].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = gender;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_803757C;
}
@@ -1276,12 +1276,12 @@ void LinkOpponentHandleTrainerSlide(void)
void LinkOpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_80375B4;
}
@@ -1297,7 +1297,7 @@ void LinkOpponentHandlecmd10(void)
{
ewram17810[gActiveBank].unk4 = 0;
PlaySE12WithPanning(SE_POKE_DEAD, 63);
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8010384;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8010384;
gBattleBankFunc[gActiveBank] = sub_8037B78;
}
}
@@ -1572,14 +1572,14 @@ void LinkOpponentHandlecmd40(void)
void LinkOpponentHandleHitAnimation(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
{
LinkOpponentBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
sub_8047858(gActiveBank);
gBattleBankFunc[gActiveBank] = dp01t_0F_4_move_anim;
}
@@ -1627,12 +1627,12 @@ void LinkOpponentHandleTrainerBallThrow(void)
{
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_803A3A8);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_803A3A8);
taskId = CreateTask(sub_803A2C4, 5);
gTasks[taskId].data[0] = gActiveBank;
if (ewram17810[gActiveBank].unk0_0)
@@ -1731,7 +1731,7 @@ void LinkOpponentHandleSpriteInvisibility(void)
{
if (IsBankSpritePresent(gActiveBank) != 0)
{
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
}
LinkOpponentBufferExecCompleted();
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c
index 654cf363a..bace48f72 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -35,7 +35,7 @@ extern u8 gBattleBufferA[][0x200];
extern u8 gActiveBank;
extern u32 gBattleExecBuffer;
extern u16 gBattlePartyID[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u8 gBattleOutcome;
extern u16 gUnknown_02024DE8;
extern u8 gUnknown_02024E68[];
@@ -74,7 +74,7 @@ extern u8 sub_8031720();
extern u8 mplay_80342A4();
extern void oamt_add_pos2_onto_pos1();
extern void StoreSpriteCallbackInData();
-extern void sub_8078B34(struct Sprite *);
+extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void sub_80105EC(struct Sprite *);
extern s32 sub_803FC34(u16);
extern void LoadPlayerTrainerBankSprite();
@@ -258,17 +258,17 @@ void LinkPartnerBufferRunCommand(void)
void sub_811DAE4(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
LinkPartnerBufferExecCompleted();
}
void sub_811DB1C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
nullsub_10(0);
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
LinkPartnerBufferExecCompleted();
}
}
@@ -336,8 +336,8 @@ void sub_811DCA0(void)
void sub_811DDE8(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].animEnded
- && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBank]].animEnded
+ && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
LinkPartnerBufferExecCompleted();
}
@@ -360,11 +360,11 @@ void bx_t3_healthbar_update(void)
void sub_811DE98(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > 160)
+ if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > 160)
{
nullsub_9(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkPartnerBufferExecCompleted();
}
@@ -374,8 +374,8 @@ void sub_811DF34(void)
{
if (!ewram17810[gActiveBank].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkPartnerBufferExecCompleted();
}
@@ -389,7 +389,7 @@ void sub_811DFA0(void)
void bx_blink_t3(void)
{
- u8 spriteId = gObjectBankIDs[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBank];
if (gSprites[spriteId].data[1] == 32)
{
gSprites[spriteId].data[1] = 0;
@@ -433,7 +433,7 @@ void sub_811E0CC(void)
FreeSpritePaletteByTag(0x27F9);
CreateTask(c3_0802FDF4, 10);
HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0);
sub_804777C(gActiveBank);
sub_8043DFC(gHealthboxIDs[gActiveBank]);
@@ -1102,15 +1102,15 @@ void LinkPartnerHandleLoadPokeSprite(void)
GetMonSpriteTemplate_803C56C(
GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(gActiveBank, 2),
sub_8077F68(gActiveBank),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]);
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
gBattleBankFunc[gActiveBank] = sub_811DDE8;
}
@@ -1132,18 +1132,18 @@ void sub_811F864(u8 a, u8 b)
species = GetMonData(&gPlayerParty[gBattlePartyID[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
- gObjectBankIDs[a] = CreateSprite(
+ gBankSpriteIds[a] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(a, 2),
sub_8077F68(a),
sub_8079E90(a));
- gSprites[gUnknown_0300434C[a]].data[1] = gObjectBankIDs[a];
- gSprites[gObjectBankIDs[a]].data[0] = a;
- gSprites[gObjectBankIDs[a]].data[2] = species;
- gSprites[gObjectBankIDs[a]].oam.paletteNum = a;
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
- gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
+ gSprites[gBankSpriteIds[a]].data[0] = a;
+ gSprites[gBankSpriteIds[a]].data[2] = species;
+ gSprites[gBankSpriteIds[a]].oam.paletteNum = a;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
+ gSprites[gBankSpriteIds[a]].invisible = TRUE;
+ gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFF);
}
@@ -1156,8 +1156,8 @@ void LinkPartnerHandleReturnPokeToBall(void)
}
else
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
LinkPartnerBufferExecCompleted();
}
@@ -1203,14 +1203,14 @@ void LinkPartnerHandleTrainerThrow(void)
}
LoadPlayerTrainerBankSprite(gender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
80 + xOffset, 80 + 4 * (8 - gTrainerBackPicCoords[gender].coords),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_811DAE4;
}
@@ -1221,12 +1221,12 @@ void LinkPartnerHandleTrainerSlide(void)
void LinkPartnerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_811DB1C;
}
@@ -1243,9 +1243,9 @@ void LinkPartnerHandlecmd10(void)
ewram17810[gActiveBank].unk4 = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 5;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80105EC;
gBattleBankFunc[gActiveBank] = sub_811DE98;
}
}
@@ -1517,14 +1517,14 @@ void LinkPartnerHandlecmd40(void)
void LinkPartnerHandleHitAnimation(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
{
LinkPartnerBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
sub_8047858(gActiveBank);
gBattleBankFunc[gActiveBank] = bx_blink_t3;
}
@@ -1573,19 +1573,19 @@ void LinkPartnerHandleTrainerBallThrow(void)
u8 r4;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gActiveBank;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
r4 = AllocSpritePalette(0xD6F9);
LoadCompressedPalette(
gTrainerBackPicPaletteTable[gLinkPlayers[sub_803FC34(gActiveBank)].gender].data,
0x100 + r4 * 16, 0x20);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = r4;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = r4;
taskId = CreateTask(sub_812071C, 5);
gTasks[taskId].data[0] = gActiveBank;
if (ewram17810[gActiveBank].unk0_0)
@@ -1671,7 +1671,7 @@ void LinkPartnerHandleSpriteInvisibility(void)
{
if (IsBankSpritePresent(gActiveBank) != 0)
{
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
}
LinkPartnerBufferExecCompleted();
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index 435a5ed24..88680470b 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -30,10 +30,11 @@ struct MovePpInfo
u8 ppBonuses;
};
+extern u8 gUnknown_02023A14_50;
extern u8 gActiveBank;
extern u8 gBattleBufferA[][0x200];
extern u16 gBattlePartyID[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u8 gBattleMonForms[];
extern struct SpriteTemplate gUnknown_02024E8C;
extern void (*gBattleBankFunc[])(void);
@@ -81,7 +82,7 @@ extern void sub_80313A0(struct Sprite *);
extern void sub_8032B4C(void);
extern void sub_8031A6C(u16, u8);
extern void sub_8032B84(void);
-extern void sub_8078B34(struct Sprite *);
+extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void sub_8032BBC(void);
extern void oamt_add_pos2_onto_pos1();
extern void StoreSpriteCallbackInData();
@@ -277,25 +278,25 @@ void OpponentBufferRunCommand(void)
void sub_8032B4C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
OpponentBufferExecCompleted();
}
// Duplicate of sub_8032B4C
void sub_8032B84(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
OpponentBufferExecCompleted();
}
void sub_8032BBC(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
- sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam);
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data[5];
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8031B74(gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = gSprites[gBankSpriteIds[gActiveBank]].data[5];
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
OpponentBufferExecCompleted();
}
}
@@ -383,8 +384,8 @@ void sub_8032E2C(void)
void sub_8033018(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE
- && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBank]].animEnded == TRUE
+ && gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
{
if (!ewram17810[gActiveBank].unk0_7)
{
@@ -416,7 +417,7 @@ void sub_80330C8(void)
void sub_803311C(void)
{
- if (!gSprites[gObjectBankIDs[gActiveBank]].inUse)
+ if (!gSprites[gBankSpriteIds[gActiveBank]].inUse)
{
sub_8043DB0(gHealthboxIDs[gActiveBank]);
OpponentBufferExecCompleted();
@@ -427,8 +428,8 @@ void sub_8033160(void)
{
if (!ewram17810[gActiveBank].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8032A08(gActiveBank);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
OpponentBufferExecCompleted();
@@ -443,7 +444,7 @@ void sub_80331D0(void)
void bx_blink_t7(void)
{
- u8 spriteId = gObjectBankIDs[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBank];
if (gSprites[spriteId].data[1] == 32)
{
@@ -487,7 +488,7 @@ void sub_8033308(void)
ewram17810[gActiveBank].unk1_0 = 0;
FreeSpriteTilesByTag(0x27F9);
FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 0);
sub_8045A5C(
gHealthboxIDs[gActiveBank],
&gEnemyParty[gBattlePartyID[gActiveBank]],
@@ -1123,16 +1124,16 @@ void OpponentHandleLoadPokeSprite(void)
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(gActiveBank, 2),
sub_8077F68(gActiveBank),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = species;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], gBattleMonForms[gActiveBank]);
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = species;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], gBattleMonForms[gActiveBank]);
sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
gBattleBankFunc[gActiveBank] = sub_8033018;
}
@@ -1155,18 +1156,18 @@ void sub_803495C(u8 a, u8 b)
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
- gObjectBankIDs[a] = CreateSprite(
+ gBankSpriteIds[a] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(a, 2),
sub_8077F68(a),
sub_8079E90(a));
- gSprites[gObjectBankIDs[a]].data[0] = a;
- gSprites[gObjectBankIDs[a]].data[2] = species;
- gSprites[gUnknown_0300434C[a]].data[1] = gObjectBankIDs[a];
- gSprites[gObjectBankIDs[a]].oam.paletteNum = a;
- StartSpriteAnim(&gSprites[gObjectBankIDs[a]], gBattleMonForms[a]);
- gSprites[gObjectBankIDs[a]].invisible = TRUE;
- gSprites[gObjectBankIDs[a]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[a]].data[0] = a;
+ gSprites[gBankSpriteIds[a]].data[2] = species;
+ gSprites[gUnknown_0300434C[a]].data[1] = gBankSpriteIds[a];
+ gSprites[gBankSpriteIds[a]].oam.paletteNum = a;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[a]], gBattleMonForms[a]);
+ gSprites[gBankSpriteIds[a]].invisible = TRUE;
+ gSprites[gBankSpriteIds[a]].callback = SpriteCallbackDummy;
gSprites[gUnknown_0300434C[a]].data[0] = sub_8046400(0, 0xFE);
}
@@ -1179,8 +1180,8 @@ void OpponentHandleReturnPokeToBall(void)
}
else
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8032A08(gActiveBank);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
OpponentBufferExecCompleted();
@@ -1211,29 +1212,38 @@ void OpponentHandleTrainerThrow(void)
{
u32 trainerPicIndex;
- if (gTrainerBattleOpponent == 0x400)
- trainerPicIndex = GetSecretBaseTrainerPicIndex();
- else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
- trainerPicIndex = get_trainer_class_pic_index();
- else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
- trainerPicIndex = GetEReaderTrainerPicIndex();
+#if DEBUG
+ if (gUnknown_02023A14_50 & 0x10)
+ {
+ trainerPicIndex = gSharedMem[0x160A3];
+ }
else
- trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
+#endif
+ {
+ if (gTrainerBattleOpponent == 0x400)
+ trainerPicIndex = GetSecretBaseTrainerPicIndex();
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ trainerPicIndex = get_trainer_class_pic_index();
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ trainerPicIndex = GetEReaderTrainerPicIndex();
+ else
+ trainerPicIndex = gTrainers[gTrainerBattleOpponent].trainerPic;
+ }
sub_8031A6C(trainerPicIndex, gActiveBank);
GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
0xB0,
40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum;
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicIndex;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_8032B4C;
}
@@ -1252,30 +1262,30 @@ void OpponentHandleTrainerSlide(void)
sub_8031A6C(trainerPicIndex, gActiveBank);
GetMonSpriteTemplate_803C5A0(trainerPicIndex, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
0xB0,
40 + 4 * (8 - gTrainerFrontPicCoords[trainerPicIndex].coords),
0x1E);
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 96;
- gSprites[gObjectBankIDs[gActiveBank]].pos1.x += 32;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2;
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum;
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
- gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam = trainerPicIndex;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 96;
+ gSprites[gBankSpriteIds[gActiveBank]].pos1.x += 32;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = IndexOfSpritePaletteTag(gTrainerFrontPicPaletteTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.tileNum = GetSpriteTileStartByTag(gTrainerFrontPicTable[trainerPicIndex].tag);
+ gSprites[gBankSpriteIds[gActiveBank]].oam.affineParam = trainerPicIndex;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_8032B84;
}
void OpponentHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
gBattleBankFunc[gActiveBank] = sub_8032BBC;
}
@@ -1291,7 +1301,7 @@ void OpponentHandlecmd10(void)
{
ewram17810[gActiveBank].unk4 = 0;
PlaySE12WithPanning(SE_POKE_DEAD, 63);
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8010384;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_8010384;
gBattleBankFunc[gActiveBank] = sub_803311C;
}
}
@@ -1425,6 +1435,315 @@ void OpponentHandlecmd19(void)
OpponentBufferExecCompleted();
}
+#if DEBUG
+__attribute__((naked))
+void OpponentHandlecmd20(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, sl\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5, r6, r7}\n\
+ ldr r6, ._549 @ gActiveBank\n\
+ ldrb r0, [r6]\n\
+ lsl r0, r0, #0x9\n\
+ ldr r1, ._549 + 4 @ gBattleBufferA\n\
+ add r5, r0, r1\n\
+ ldr r2, ._549 + 8 @ gUnknown_02023A14_50\n\
+ ldrb r1, [r2]\n\
+ mov r0, #0x4\n\
+ and r0, r0, r1\n\
+ mov sl, r6\n\
+ cmp r0, #0\n\
+ beq ._546 @cond_branch\n\
+ ldr r0, ._549 + 12 @ gBattleMoves\n\
+ mov r9, r0\n\
+ ldr r1, ._549 + 16 @ \n\
+ mov ip, r1\n\
+ add r7, r6, #0\n\
+ mov r0, #0x2\n\
+ mov r8, r0\n\
+ ldr r6, ._549 + 20 @ \n\
+._552:\n\
+ ldrb r1, [r7]\n\
+ mov r0, r8\n\
+ and r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x19\n\
+ add r0, r0, r6\n\
+ mov r1, ip\n\
+ add r3, r0, r1\n\
+ ldrb r1, [r3]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r5, r0\n\
+ ldrh r2, [r0]\n\
+ add r4, r1, #0\n\
+ cmp r2, #0\n\
+ beq ._547 @cond_branch\n\
+ add r0, r4, #1\n\
+ strb r0, [r3]\n\
+ b ._548\n\
+._550:\n\
+ .align 2, 0\n\
+._549:\n\
+ .word gActiveBank\n\
+ .word gBattleBufferA+4\n\
+ .word gUnknown_02023A14_50\n\
+ .word gBattleMoves\n\
+ .word +0x2000000\n\
+ .word 0x1609e\n\
+._547:\n\
+ strb r2, [r3]\n\
+._548:\n\
+ ldrb r0, [r7]\n\
+ mov r1, r8\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x19\n\
+ add r1, r1, r6\n\
+ add r1, r1, ip\n\
+ ldrb r0, [r1]\n\
+ cmp r0, #0x3\n\
+ bls ._551 @cond_branch\n\
+ mov r0, #0x0\n\
+ strb r0, [r1]\n\
+._551:\n\
+ cmp r2, #0\n\
+ beq ._552 @cond_branch\n\
+ lsl r0, r2, #0x1\n\
+ add r0, r0, r2\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r9\n\
+ ldrb r3, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r3\n\
+ cmp r0, #0\n\
+ beq ._553 @cond_branch\n\
+ mov r1, sl\n\
+ ldrb r0, [r1]\n\
+ b ._561\n\
+._553:\n\
+ ldr r0, ._559 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._557 @cond_branch\n\
+ ldr r0, ._559 + 4 @ gUnknown_02023A14_50\n\
+ ldrb r1, [r0]\n\
+ mov r5, #0x2\n\
+ add r0, r5, #0\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._556 @cond_branch\n\
+ cmp r3, #0\n\
+ bne ._557 @cond_branch\n\
+ mov r1, sl\n\
+ ldrb r0, [r1]\n\
+ bl GetBankIdentity\n\
+ mov r1, #0x2\n\
+ eor r0, r0, r1\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+ b ._558\n\
+._560:\n\
+ .align 2, 0\n\
+._559:\n\
+ .word gBattleTypeFlags\n\
+ .word gUnknown_02023A14_50\n\
+._556:\n\
+ bl Random\n\
+ add r1, r5, #0\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x10\n\
+ lsr r0, r1, #0x10\n\
+ b ._561\n\
+._557:\n\
+ mov r0, #0x0\n\
+._558:\n\
+ bl GetBankByIdentity\n\
+ lsl r0, r0, #0x18\n\
+ lsr r0, r0, #0x18\n\
+._561:\n\
+ lsl r2, r0, #0x8\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+._569:\n\
+ bl Emitcmd33\n\
+._573:\n\
+ bl OpponentBufferExecCompleted\n\
+ b ._562\n\
+._546:\n\
+ ldr r0, ._567 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x93\n\
+ lsl r0, r0, #0x3\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._563 @cond_branch\n\
+ bl BattleAI_SetupAIData\n\
+ bl BattleAI_GetAIActionToUse\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0x4\n\
+ beq ._564 @cond_branch\n\
+ cmp r4, #0x5\n\
+ bne ._565 @cond_branch\n\
+ mov r0, #0x1\n\
+ mov r1, #0x4\n\
+ b ._566\n\
+._568:\n\
+ .align 2, 0\n\
+._567:\n\
+ .word gBattleTypeFlags\n\
+._564:\n\
+ mov r0, #0x1\n\
+ mov r1, #0x3\n\
+._566:\n\
+ mov r2, #0x0\n\
+ b ._569\n\
+._565:\n\
+ ldr r3, ._574 @ gBattleMoves\n\
+ lsl r0, r4, #0x1\n\
+ add r2, r5, r0\n\
+ ldrh r1, [r2]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._570 @cond_branch\n\
+ ldr r1, ._574 + 4 @ gBankTarget\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1]\n\
+._570:\n\
+ ldrh r1, [r2]\n\
+ lsl r0, r1, #0x1\n\
+ add r0, r0, r1\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r3\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x8\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._572 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl GetBankByIdentity\n\
+ ldr r5, ._574 + 4 @ gBankTarget\n\
+ strb r0, [r5]\n\
+ ldr r0, ._574 + 8 @ gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r2, ._574 + 12 @ gBitTable\n\
+ ldrb r0, [r5]\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r2\n\
+ ldr r0, [r0]\n\
+ and r1, r1, r0\n\
+ cmp r1, #0\n\
+ beq ._572 @cond_branch\n\
+ mov r0, #0x2\n\
+ bl GetBankByIdentity\n\
+ strb r0, [r5]\n\
+._572:\n\
+ ldr r0, ._574 + 4 @ gBankTarget\n\
+ ldrb r2, [r0]\n\
+ lsl r2, r2, #0x8\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+ b ._573\n\
+._575:\n\
+ .align 2, 0\n\
+._574:\n\
+ .word gBattleMoves\n\
+ .word gBankTarget\n\
+ .word gAbsentBankFlags\n\
+ .word gBitTable\n\
+._563:\n\
+ mov r6, #0x3\n\
+._576:\n\
+ bl Random\n\
+ add r4, r0, #0\n\
+ and r4, r4, r6\n\
+ lsl r0, r4, #0x1\n\
+ add r0, r5, r0\n\
+ ldrh r2, [r0]\n\
+ cmp r2, #0\n\
+ beq ._576 @cond_branch\n\
+ ldr r1, ._579 @ gBattleMoves\n\
+ lsl r0, r2, #0x1\n\
+ add r0, r0, r2\n\
+ lsl r0, r0, #0x2\n\
+ add r0, r0, r1\n\
+ ldrb r1, [r0, #0x6]\n\
+ mov r0, #0x12\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._577 @cond_branch\n\
+ ldr r0, ._579 + 4 @ gActiveBank\n\
+ ldrb r2, [r0]\n\
+ lsl r2, r2, #0x8\n\
+ b ._578\n\
+._580:\n\
+ .align 2, 0\n\
+._579:\n\
+ .word gBattleMoves\n\
+ .word gActiveBank\n\
+._577:\n\
+ ldr r0, ._583 @ gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ mov r0, #0x1\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._581 @cond_branch\n\
+ bl Random\n\
+ mov r1, #0x2\n\
+ and r1, r1, r0\n\
+ lsl r1, r1, #0x18\n\
+ lsr r1, r1, #0x18\n\
+ add r0, r1, #0\n\
+ bl GetBankByIdentity\n\
+ add r2, r0, #0\n\
+ lsl r2, r2, #0x18\n\
+ lsr r2, r2, #0x10\n\
+._578:\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+ b ._582\n\
+._584:\n\
+ .align 2, 0\n\
+._583:\n\
+ .word gBattleTypeFlags\n\
+._581:\n\
+ mov r0, #0x0\n\
+ bl GetBankByIdentity\n\
+ add r2, r0, #0\n\
+ lsl r2, r2, #0x18\n\
+ lsr r2, r2, #0x10\n\
+ orr r2, r2, r4\n\
+ mov r0, #0x1\n\
+ mov r1, #0xa\n\
+ bl Emitcmd33\n\
+._582:\n\
+ bl OpponentBufferExecCompleted\n\
+._562:\n\
+ pop {r3, r4, r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov sl, r5\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0");
+}
+#else
#ifdef NONMATCHING
void OpponentHandlecmd20(void)
{
@@ -1499,7 +1818,7 @@ void OpponentHandlecmd20(void)
ldr r6, _0803545C @ =gActiveBank\n\
ldrb r0, [r6]\n\
lsls r0, 9\n\
- ldr r1, _08035460 @ =gUnknown_02023A64\n\
+ ldr r1, _08035460 @ =gBattleBufferA+4\n\
adds r5, r0, r1\n\
ldr r0, _08035464 @ =gBattleTypeFlags\n\
ldrh r1, [r0]\n\
@@ -1521,7 +1840,7 @@ void OpponentHandlecmd20(void)
b _0803546C\n\
.align 2, 0\n\
_0803545C: .4byte gActiveBank\n\
-_08035460: .4byte gUnknown_02023A64\n\
+_08035460: .4byte gBattleBufferA+4\n\
_08035464: .4byte gBattleTypeFlags\n\
_08035468:\n\
movs r0, 0x1\n\
@@ -1668,6 +1987,7 @@ _0803558A:\n\
.syntax divided\n");
}
#endif
+#endif
void OpponentHandleOpenBag(void)
{
@@ -1844,14 +2164,14 @@ void OpponentHandlecmd40(void)
void OpponentHandleHitAnimation(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
{
OpponentBufferExecCompleted();
}
else
{
gDoingBattleAnim = TRUE;
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
sub_8047858(gActiveBank);
gBattleBankFunc[gActiveBank] = bx_blink_t7;
}
@@ -1899,12 +2219,12 @@ void OpponentHandleTrainerBallThrow(void)
{
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 35;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 280;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8035C10);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 35;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 280;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8035C10);
taskId = CreateTask(sub_8035C44, 5);
gTasks[taskId].data[0] = gActiveBank;
if (ewram17810[gActiveBank].unk0_0)
@@ -2003,7 +2323,7 @@ void OpponentHandleSpriteInvisibility(void)
{
if (IsBankSpritePresent(gActiveBank) != 0)
{
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
}
OpponentBufferExecCompleted();
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index cb463d0ad..9f82a53b9 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -39,6 +39,10 @@ extern struct Window gUnknown_03004210;
extern void (*gBattleBankFunc[])(void);
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u32 gOamMatrixAllocBitmap;
+extern u8 gUnknown_020297ED;
extern u8 gActiveBank;
extern u8 gActionSelectionCursor[];
extern u8 gDisplayedStringBattle[];
@@ -48,7 +52,7 @@ extern u8 gBankInMenu;
extern u16 gBattlePartyID[];
extern u8 gHealthboxIDs[];
extern u8 gDoingBattleAnim;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u16 gBattleTypeFlags;
extern u8 gBattleOutcome;
extern void (*gAnimScriptCallback)(void);
@@ -90,7 +94,7 @@ extern void sub_8047858();
extern u8 GetBankSide(u8);
extern void StartBattleIntroAnim();
extern void oamt_add_pos2_onto_pos1();
-extern void sub_8078B34(struct Sprite *);
+extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void StoreSpriteCallbackInData();
extern void BattleLoadPlayerMonSprite();
extern bool8 IsDoubleBattle(void);
@@ -103,7 +107,6 @@ extern void sub_802D18C(void);
extern void sub_802DF18(void);
extern void BufferStringBattle();
extern void sub_80326EC();
-extern void DoMoveAnim();
extern void sub_8031F24(void);
extern void sub_80324BC();
extern u8 sub_8031720();
@@ -131,7 +134,7 @@ extern bool8 gDoingBattleAnim;
extern u16 gBattleTypeFlags;
extern u32 gBattleExecBuffer;
extern u8 gBattleBufferA[][0x200];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u8 gActionSelectionCursor[];
extern u8 gMoveSelectionCursor[];
extern u8 gAbsentBankFlags;
@@ -356,7 +359,7 @@ void PlayerBufferRunCommand(void)
void bx_0802E404(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ if (gSprites[gBankSpriteIds[gActiveBank]].pos2.x == 0)
PlayerBufferExecCompleted();
}
@@ -484,7 +487,7 @@ void sub_802C2EC(void)
{
DestroyMenuCursor();
PlaySE(SE_SELECT);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8));
dp11b_obj_free(gUnknown_03004344, 1);
PlayerBufferExecCompleted();
@@ -493,7 +496,7 @@ void sub_802C2EC(void)
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
gBattleBankFunc[gActiveBank] = sub_802C68C;
dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
@@ -502,7 +505,7 @@ void sub_802C2EC(void)
else if (gMain.newKeys & 0x60)
{
PlaySE(SE_SELECT);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
do
{
u8 var = GetBankIdentity(gUnknown_03004344);
@@ -543,13 +546,13 @@ void sub_802C2EC(void)
if (gAbsentBankFlags & gBitTable[gUnknown_03004344])
i = 0;
} while (i == 0);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520;
}
//_0802C540
else if (gMain.newKeys & 0x90)
{
PlaySE(SE_SELECT);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010574;
do
{
u8 var = GetBankIdentity(gUnknown_03004344);
@@ -589,7 +592,7 @@ void sub_802C2EC(void)
if (gAbsentBankFlags & gBitTable[gUnknown_03004344])
i = 0;
} while (i == 0);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520;
}
}
@@ -605,9 +608,14 @@ struct ChooseMoveStruct
const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}");
+void debug_sub_8030C24(void);
+
void sub_802C68C(void)
{
u32 r8 = 0;
+#if DEBUG
+ u8 count = 0;
+#endif
struct ChooseMoveStruct *r6 = (struct ChooseMoveStruct *)(gBattleBufferA[gActiveBank] + 4);
if (gMain.newKeys & A_BUTTON)
@@ -660,7 +668,7 @@ void sub_802C68C(void)
gUnknown_03004344 = GetBankByIdentity(3);
else
gUnknown_03004344 = GetBankByIdentity(1);
- gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ gSprites[gBankSpriteIds[gUnknown_03004344]].callback = sub_8010520;
}
}
else if (gMain.newKeys & B_BUTTON)
@@ -738,6 +746,43 @@ void sub_802C68C(void)
gBattleBankFunc[gActiveBank] = sub_802CA60;
}
}
+#if DEBUG
+ else if (gUnknown_020297ED == 1 && (gMain.newKeys & START_BUTTON))
+ {
+ const u8 *moveName;
+ s32 i;
+
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x3A);
+ moveName = gMoveNames[GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1)];
+ Text_InitWindowAndPrintText(&gUnknown_03004210, moveName, 0x100, 2, 0x37);
+ ConvertIntToDecimalStringN(
+ gDisplayedStringBattle,
+ GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1),
+ 2, 3);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x110, 10, 0x37);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gString_TurnJP, 0x116, 1, 0x39);
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x11C, 4, 0x39);
+ for (i = 0; i < 64; i++)
+ {
+ if (gSprites[i].inUse)
+ count++;
+ }
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x122, 8, 0x39);
+ count = GetTaskCount();
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x126, 11, 0x39);
+ for (i = 0, count = 0; i < 32; i++)
+ {
+ if (gOamMatrixAllocBitmap & (1 << i))
+ count++;
+ }
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 0x12A, 14, 0x39);
+ gBattleBankFunc[gActiveBank] = debug_sub_8030C24;
+ }
+#endif
}
extern const u8 BattleText_Format[];
@@ -944,26 +989,186 @@ void sub_802D18C(void)
}
}
+#if DEBUG
+
+void debug_sub_803107C(void);
+
+void debug_sub_8030C24(void)
+{
+ s16 move = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1);
+
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case START_BUTTON:
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ gBankAttacker = gActiveBank;
+ if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ gBankTarget = gBankAttacker ^ 2;
+ else if ((gMain.heldKeysRaw & A_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ gBankTarget = GetBankByIdentity(3);
+ else
+ gBankTarget = GetBankByIdentity(1);
+ sub_80326EC(0);
+ DoMoveAnim(move);
+ gBattleBankFunc[gActiveBank] = debug_sub_803107C;
+ break;
+ case SELECT_BUTTON:
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ gBankTarget = gActiveBank;
+ if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ gBankAttacker = gBankTarget ^ 2;
+ else if ((gMain.heldKeysRaw & A_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ gBankAttacker = GetBankByIdentity(3);
+ else
+ gBankAttacker = GetBankByIdentity(1);
+ sub_80326EC(0);
+ DoMoveAnim(move);
+ gBattleBankFunc[gActiveBank] = debug_sub_803107C;
+ break;
+ case R_BUTTON:
+ if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ gBankAttacker = GetBankByIdentity(3);
+ gBankTarget = GetBankByIdentity(1);
+ sub_80326EC(0);
+ DoMoveAnim(move);
+ gBattleBankFunc[gActiveBank] = debug_sub_803107C;
+ }
+ else
+ {
+ move += 9;
+ case DPAD_RIGHT:
+ if (++move > 354)
+ move = 1;
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1, &move);
+ gBattleMons[gActiveBank].moves[0] = move;
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x38);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gMoveNames[move], 0x100, 2, 0x37);
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, move, 2, 3);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 272, 10, 0x37);
+ }
+ break;
+ case L_BUTTON:
+ if ((gMain.heldKeysRaw & B_BUTTON) && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ gBankAttacker = GetBankByIdentity(1);
+ gBankTarget = GetBankByIdentity(3);
+ sub_80326EC(0);
+ DoMoveAnim(move);
+ gBattleBankFunc[gActiveBank] = debug_sub_803107C;
+ }
+ else
+ {
+ move -= 9;
+ case DPAD_LEFT:
+ if (--move <= 0)
+ move = 354;
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1, &move);
+ gBattleMons[gActiveBank].moves[0] = move;
+ Text_FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 16, 0x38);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gMoveNames[move], 0x100, 2, 0x37);
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, move, 2, 3);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 272, 10, 0x37);
+ }
+ break;
+ case DPAD_UP:
+ case DPAD_DOWN:
+ if (gMain.newAndRepeatedKeys == DPAD_UP)
+ gAnimMoveTurn--;
+ else
+ gAnimMoveTurn++;
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, gAnimMoveTurn, 2, 3);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 284, 4, 0x39);
+ break;
+ }
+
+ if ((gMain.heldKeysRaw & (L_BUTTON | R_BUTTON)) == (L_BUTTON | R_BUTTON))
+ {
+ u8 i;
+ u32 move;
+
+ for (i = 0; i < 4; i++)
+ {
+ StringCopy(gDisplayedStringBattle, BattleText_Format);
+ move = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i);
+ StringAppend(gDisplayedStringBattle, gMoveNames[move]);
+ Text_InitWindow(
+ &gUnknown_03004210,
+ gDisplayedStringBattle,
+ 0x100 + i * 16,
+ (i & 1) ? 10 : 2,
+ (i < 2) ? 0x37 : 0x39);
+ Text_PrintWindow8002F44(&gUnknown_03004210);
+ }
+ gBattleBankFunc[gActiveBank] = sub_802C68C;
+ }
+}
+
+void debug_sub_803107C(void)
+{
+ u8 count = 0;
+
+ gAnimScriptCallback();
+ if (!gAnimScriptActive)
+ {
+ s32 i;
+
+ sub_80326EC(1);
+ dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
+ dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
+
+ for (i = 0, count = 0; i < MAX_SPRITES; i++)
+ {
+ if (gSprites[i].inUse)
+ count++;
+ }
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 290, 8, 0x39);
+
+ count = GetTaskCount();
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 294, 11, 0x39);
+
+ for (i = 0, count = 0; i < 32; i++)
+ {
+ if (gOamMatrixAllocBitmap & (1 << i))
+ count++;
+ }
+ ConvertIntToDecimalStringN(gDisplayedStringBattle, count, 2, 2);
+ Text_InitWindowAndPrintText(&gUnknown_03004210, gDisplayedStringBattle, 298, 14, 0x39);
+
+ gBattleBankFunc[gActiveBank] = debug_sub_8030C24;
+ }
+}
+
+#endif
+
void sub_802D204(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
PlayerBufferExecCompleted();
}
// duplicate of sub_802D204
void sub_802D23C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
PlayerBufferExecCompleted();
}
void sub_802D274(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
{
nullsub_10(gSaveBlock2.playerGender);
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
PlayerBufferExecCompleted();
}
}
@@ -1438,13 +1643,13 @@ void sub_802DDC4(u8 taskId)
void sub_802DE10(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
+ if (gSprites[gBankSpriteIds[gActiveBank]].pos1.y + gSprites[gBankSpriteIds[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
{
u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
nullsub_9(species);
- FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeOamMatrix(gSprites[gBankSpriteIds[gActiveBank]].oam.matrixNum);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
PlayerBufferExecCompleted();
}
@@ -1454,8 +1659,8 @@ void sub_802DEAC(void)
{
if (!ewram17810[gActiveBank].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
PlayerBufferExecCompleted();
}
@@ -1522,7 +1727,7 @@ void bx_wait_t1(void)
void bx_blink_t1(void)
{
- u8 spriteId = gObjectBankIDs[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBank];
if (gSprites[spriteId].data[1] == 32)
{
@@ -2282,7 +2487,7 @@ void PlayerHandlecmd3(void)
void PlayerHandleLoadPokeSprite(void)
{
BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
gBattleBankFunc[gActiveBank] = bx_0802E404;
}
@@ -2306,18 +2511,18 @@ void sub_802F934(u8 bank, u8 b)
species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
- gObjectBankIDs[bank] = CreateSprite(
+ gBankSpriteIds[bank] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(bank, 2),
sub_8077F68(bank),
sub_8079E90(bank));
- gSprites[gUnknown_0300434C[bank]].data[1] = gObjectBankIDs[bank];
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
- gSprites[gObjectBankIDs[bank]].data[2] = species;
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
- gSprites[gObjectBankIDs[bank]].invisible = TRUE;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ gSprites[gBankSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF);
}
@@ -2330,8 +2535,8 @@ void PlayerHandleReturnPokeToBall(void)
}
else
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
PlayerBufferExecCompleted();
}
@@ -2373,15 +2578,15 @@ void PlayerHandleTrainerThrow(void)
}
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
r7 + 80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_802D204;
}
@@ -2389,27 +2594,27 @@ void PlayerHandleTrainerSlide(void)
{
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
30);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_802D23C;
}
void PlayerHandleTrainerSlideBack(void)
{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], SpriteCallbackDummy);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
gBattleBankFunc[gActiveBank] = sub_802D274;
}
@@ -2428,9 +2633,9 @@ void PlayerHandlecmd10(void)
ewram17810[gActiveBank].unk4 = 0;
HandleLowHpMusicChange(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = 5;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = 5;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80105EC;
gBattleBankFunc[gActiveBank] = sub_802DE10;
}
}
@@ -2802,14 +3007,14 @@ void PlayerHandlecmd40(void)
void PlayerHandleHitAnimation(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
{
PlayerBufferExecCompleted();
}
else
{
gDoingBattleAnim = 1;
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
sub_8047858(gActiveBank);
gBattleBankFunc[gActiveBank] = bx_blink_t1;
}
@@ -2858,17 +3063,17 @@ void PlayerHandleTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gActiveBank;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
taskId = CreateTask(task05_08033660, 5);
gTasks[taskId].data[0] = gActiveBank;
if (ewram17810[gActiveBank].unk0_0)
@@ -2885,7 +3090,7 @@ void sub_8030E38(struct Sprite *sprite)
FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
DestroySprite(sprite);
BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4);
- StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[r4]], 0);
}
void task05_08033660(u8 taskId)
@@ -2964,7 +3169,7 @@ void PlayerHandleSpriteInvisibility(void)
{
if (IsBankSpritePresent(gActiveBank))
{
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ gSprites[gBankSpriteIds[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
}
PlayerBufferExecCompleted();
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
index 068c9a145..45745cc5a 100644
--- a/src/battle/battle_controller_safari.c
+++ b/src/battle/battle_controller_safari.c
@@ -1,6 +1,7 @@
#include "global.h"
#include "battle_anim_81258BC.h"
#include "battle.h"
+#include "battle_interface.h"
#include "battle_message.h"
#include "data2.h"
#include "link.h"
@@ -25,7 +26,7 @@ extern const u8 BattleText_MenuOptionsSafari[];
extern void *gBattleBankFunc[];
extern u8 gBattleBufferA[][0x200];
extern bool8 gDoingBattleAnim;
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern struct SpriteTemplate gUnknown_02024E8C;
extern u16 gBattleTypeFlags;
extern u32 gBattleExecBuffer;
@@ -270,11 +271,22 @@ void bx_battle_menu_t6_2(void)
sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
}
}
+#if DEBUG
+ else if (gMain.newKeys & R_BUTTON)
+ {
+ if (!ewram17810[gActiveBank].unk0_5)
+ move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, 4, 0);
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ sub_804454C();
+ }
+#endif
}
void sub_812B65C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
SafariBufferExecCompleted();
}
@@ -385,15 +397,15 @@ void SafariHandleTrainerThrow(void)
{
LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
80,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
30);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_812B65C;
}
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index 4432fff87..76e4640c7 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -31,7 +31,7 @@ extern u8 gActiveBank;
extern void (*gBattleBankFunc[])(void);
extern u32 gBattleExecBuffer;
extern u8 gBattleBufferA[][0x200];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern MainCallback gPreBattleCallback1;
extern bool8 gDoingBattleAnim;
extern u16 gBattlePartyID[];
@@ -85,7 +85,7 @@ extern void sub_80304A8(void);
extern void sub_8047858();
extern void StartBattleIntroAnim();
extern void oamt_add_pos2_onto_pos1();
-extern void sub_8078B34(struct Sprite *);
+extern void StartTranslateAnimSpriteByDeltas(struct Sprite *);
extern void sub_8030E38(struct Sprite *);
extern void StoreSpriteCallbackInData();
extern u8 sub_8046400();
@@ -323,7 +323,7 @@ void sub_81372BC(void)
void sub_813741C(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
WallyBufferExecCompleted();
}
@@ -434,7 +434,7 @@ void sub_81377B0(void)
void bx_blink_t5(void)
{
- u8 spriteId = gObjectBankIDs[gActiveBank];
+ u8 spriteId = gBankSpriteIds[gActiveBank];
if (gSprites[spriteId].data[1] == 32)
{
@@ -455,8 +455,8 @@ void sub_813789C(void)
{
if (!ewram17810[gActiveBank].unk0_6)
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
WallyBufferExecCompleted();
}
@@ -465,7 +465,7 @@ void sub_813789C(void)
// Duplicate of sub_813741C
void sub_8137908(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ if (gSprites[gBankSpriteIds[gActiveBank]].callback == SpriteCallbackDummy)
WallyBufferExecCompleted();
}
@@ -1091,8 +1091,8 @@ void WallyHandleReturnPokeToBall(void)
}
else
{
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ FreeSpriteOamMatrix(&gSprites[gBankSpriteIds[gActiveBank]]);
+ DestroySprite(&gSprites[gBankSpriteIds[gActiveBank]]);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
WallyBufferExecCompleted();
}
@@ -1102,14 +1102,14 @@ void WallyHandleTrainerThrow(void)
{
LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
30);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = 240;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = -2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_813741C;
}
@@ -1117,14 +1117,14 @@ void WallyHandleTrainerSlide(void)
{
LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
+ gBankSpriteIds[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
80, 80 + 4 * (8 - gTrainerBackPicCoords[2].coords),
30);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96;
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gBankSpriteIds[gActiveBank]].pos2.x = -96;
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 2;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = sub_80313A0;
gBattleBankFunc[gActiveBank] = sub_8137908;
}
@@ -1430,14 +1430,14 @@ void WallyHandlecmd40(void)
void WallyHandleHitAnimation(void)
{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ if (gSprites[gBankSpriteIds[gActiveBank]].invisible == TRUE)
{
WallyBufferExecCompleted();
}
else
{
gDoingBattleAnim = 1;
- gSprites[gObjectBankIDs[gActiveBank]].data[1] = 0;
+ gSprites[gBankSpriteIds[gActiveBank]].data[1] = 0;
sub_8047858(gActiveBank);
gBattleBankFunc[gActiveBank] = bx_blink_t5;
}
@@ -1478,17 +1478,17 @@ void WallyHandleTrainerBallThrow(void)
u8 paletteNum;
u8 taskId;
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data[0] = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data[2] = -40;
- gSprites[gObjectBankIDs[gActiveBank]].data[4] = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
- gSprites[gObjectBankIDs[gActiveBank]].data[5] = gActiveBank;
- StoreSpriteCallbackInData(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ oamt_add_pos2_onto_pos1(&gSprites[gBankSpriteIds[gActiveBank]]);
+ gSprites[gBankSpriteIds[gActiveBank]].data[0] = 50;
+ gSprites[gBankSpriteIds[gActiveBank]].data[2] = -40;
+ gSprites[gBankSpriteIds[gActiveBank]].data[4] = gSprites[gBankSpriteIds[gActiveBank]].pos1.y;
+ gSprites[gBankSpriteIds[gActiveBank]].callback = StartTranslateAnimSpriteByDeltas;
+ gSprites[gBankSpriteIds[gActiveBank]].data[5] = gActiveBank;
+ StoreSpriteCallbackInData(&gSprites[gBankSpriteIds[gActiveBank]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[gActiveBank]], 1);
paletteNum = AllocSpritePalette(0xD6F8);
LoadCompressedPalette(gTrainerBackPicPaletteTable[2].data, 0x100 + paletteNum * 16, 32);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum;
+ gSprites[gBankSpriteIds[gActiveBank]].oam.paletteNum = paletteNum;
taskId = CreateTask(sub_8139A2C, 5);
gTasks[taskId].data[0] = gActiveBank;
if (ewram17810[gActiveBank].unk0_0)
@@ -1506,18 +1506,18 @@ void sub_81398BC(u8 bank)
species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
- gObjectBankIDs[bank] = CreateSprite(
+ gBankSpriteIds[bank] = CreateSprite(
&gUnknown_02024E8C,
GetBankPosition(bank, 2),
sub_8077F68(bank),
sub_8079E90(bank));
- gSprites[gUnknown_0300434C[bank]].data[1] = gObjectBankIDs[bank];
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
- gSprites[gObjectBankIDs[bank]].data[2] = species;
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
- gSprites[gObjectBankIDs[bank]].invisible = TRUE;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[bank]].data[1] = gBankSpriteIds[bank];
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = species;
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
+ gSprites[gBankSpriteIds[bank]].invisible = TRUE;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
gSprites[gUnknown_0300434C[bank]].data[0] = sub_8046400(0, 0xFF);
}
diff --git a/src/battle/battle_interface.c b/src/battle/battle_interface.c
index 97568d254..9be026d53 100644
--- a/src/battle/battle_interface.c
+++ b/src/battle/battle_interface.c
@@ -79,8 +79,8 @@ extern const u16 gBattleInterfaceStatusIcons_DynPal[];
static void sub_8043D5C(struct Sprite *);
static const void *sub_8043CDC(u8);
-static void sub_8044210(u8, s16, u8);
-static void draw_status_ailment_maybe(u8);
+/*static*/ void sub_8044210(u8, s16, u8);
+/*static*/ void draw_status_ailment_maybe(u8);
extern void sub_8045180(struct Sprite *);
static void sub_8045110(struct Sprite *);
static void sub_8045048(struct Sprite *);
@@ -651,7 +651,7 @@ void sub_8043F44(u8 a)
#define CHAR_LV_SEPARATOR CHAR_PERIOD
#endif
-static void sub_8043FC0(u8 a, u8 b)
+/*static*/ void sub_8043FC0(u8 a, u8 b)
{
u8 str[30];
void *const *r7;
@@ -905,7 +905,7 @@ _0804420C: .4byte 0x04000008\n\
}
#endif
-static void sub_8044210(u8 a, s16 b, u8 c)
+/*static*/ void sub_8044210(u8 a, s16 b, u8 c)
{
u8 str[0x14];
u8 *ptr;
@@ -1277,6 +1277,8 @@ _08044548: .4byte 0x04000008\n\
}
#endif
+extern u8 gUnknown_020297ED;
+
void sub_804454C(void)
{
s32 i;
@@ -1285,7 +1287,11 @@ void sub_804454C(void)
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gSprites[gHealthboxIDs[i]].callback == SpriteCallbackDummy
+#if DEBUG
+ && (gUnknown_020297ED != 0 || GetBankSide(i) != 1)
+#else
&& GetBankSide(i) != 1
+#endif
&& (IsDoubleBattle() || GetBankSide(i) != 0))
{
u8 r6;
@@ -2359,7 +2365,7 @@ void sub_8045180(struct Sprite *sprite)
sprite->pos2.y = gSprites[spriteId].pos2.y;
}
-static void sub_80451A0(u8 a, struct Pokemon *pkmn)
+/*static*/ void sub_80451A0(u8 a, struct Pokemon *pkmn)
{
u8 nickname[POKEMON_NAME_LENGTH];
u8 gender;
@@ -2507,7 +2513,7 @@ static void sub_8045458(u8 a, u8 b)
}
}
-static void draw_status_ailment_maybe(u8 a)
+/*static*/ void draw_status_ailment_maybe(u8 a)
{
s32 r4;
s32 r4_2;
@@ -2649,7 +2655,7 @@ static u8 sub_80457E8(u8 a, u8 b)
return ret;
}
-static void sub_80458B0(u8 a)
+/*static*/ void sub_80458B0(u8 a)
{
u8 *r6;
u8 r8;
@@ -2675,7 +2681,7 @@ static void sub_80458B0(u8 a)
}
-static void sub_8045998(u8 a)
+/*static*/ void sub_8045998(u8 a)
{
u8 *r7;
u8 status;
@@ -2752,6 +2758,15 @@ void sub_8045A5C(u8 a, struct Pokemon *pkmn, u8 c)
{
if (c == 3 || c == 0)
sub_8043FC0(a, GetMonData(pkmn, MON_DATA_LEVEL));
+#if DEBUG
+ if (gUnknown_020297ED == 1)
+ {
+ if (c == 1 || c == 0)
+ sub_80440EC(a, GetMonData(pkmn, MON_DATA_HP), 0);
+ if (c == 2 || c == 0)
+ sub_80440EC(a, GetMonData(pkmn, MON_DATA_MAX_HP), 1);
+ }
+#endif
if (c == 5 || c == 0)
{
load_gfxc_health_bar(0);
diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c
index 4979760d7..8b9cf9ea0 100644
--- a/src/battle/battle_records.c
+++ b/src/battle/battle_records.c
@@ -8,9 +8,35 @@
#include "strings2.h"
#include "trainer_card.h"
+struct DebugStruct1
+{
+ u16 var0;
+ u8 var1[10];
+};
+
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[4];
extern u8 gBattleOutcome;
+#if DEBUG
+const struct DebugStruct1 gUnknown_Debug_4245CC[] =
+{
+ { 1, _("NUMBER1") },
+ { 2, _("ナンバー2") },
+ { 3, _("ナンバー3") },
+ { 4, _("ナンバー4") },
+ { 5, _("ナンバー5") },
+ { 6, _("ナンバー6") },
+ { 7, _("ナンバー7") },
+};
+
+const struct {u8 unk0; u8 unk1;} gUnknown_Debug_8424620[] =
+{
+ { 1, 1 },
+ { 2, 1 },
+ { 3, 1 },
+};
+#endif
+
static void InitLinkBattleRecord(struct LinkBattleRecord *record)
{
CpuFill16(0, record, sizeof(struct LinkBattleRecord));
@@ -38,7 +64,7 @@ static int GetLinkBattleRecordTotalBattles(struct LinkBattleRecord *record)
return record->wins + record->losses + record->draws;
}
-static int FindLinkBattleRecord(struct LinkBattleRecord *records, u8 *name, u16 trainerId)
+static int FindLinkBattleRecord(struct LinkBattleRecord *records, const u8 *name, u16 trainerId)
{
int i;
@@ -119,7 +145,7 @@ static void UpdateLinkBattleGameStats(int battleOutcome)
IncrementGameStat(stat);
}
-static void UpdateLinkBattleRecords_(struct LinkBattleRecord *records, u8 *name, u16 trainerId, int battleOutcome, u8 language)
+static void UpdateLinkBattleRecords_(struct LinkBattleRecord *records, const u8 *name, u16 trainerId, int battleOutcome, u8 language)
{
int index;
UpdateLinkBattleGameStats(battleOutcome);
@@ -197,6 +223,26 @@ void UpdateLinkBattleRecords(int id)
gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language);
}
+#if DEBUG
+void debug_sub_81257E0(void)
+{
+ u32 i;
+
+ InitLinkBattleRecords();
+ for (i = 0; i < 3; i++)
+ {
+ u32 id = gUnknown_Debug_8424620[i].unk0 - 1;
+
+ UpdateLinkBattleRecords_(
+ gSaveBlock1.linkBattleRecords,
+ gUnknown_Debug_4245CC[id].var1,
+ gUnknown_Debug_4245CC[id].var0,
+ gUnknown_Debug_8424620[i].unk1,
+ gLinkPlayers[gLinkPlayerMapObjects[id].linkPlayerId].language);
+ }
+}
+#endif
+
static void PrintLinkBattleWinsLossesDraws(struct LinkBattleRecord *records)
{
ConvertIntToDecimalStringN_DigitWidth6(gStringVar1, GetGameStat(GAME_STAT_LINK_BATTLE_WINS), STR_CONV_MODE_RIGHT_ALIGN, 4);
@@ -240,7 +286,8 @@ static void PrintLinkBattleRecord(struct LinkBattleRecord *record, u8 y)
}
}
-void ShowLinkBattleRecords(void) {
+void ShowLinkBattleRecords(void)
+{
s32 i;
Menu_DrawStdWindowFrame(1, 0, 28, 18);
sub_8072BD8(gOtherText_BattleResults, 0, 1, 240);
diff --git a/src/battle/battle_setup.c b/src/battle/battle_setup.c
index 15555f833..ec4a26bc5 100644
--- a/src/battle/battle_setup.c
+++ b/src/battle/battle_setup.c
@@ -6,7 +6,6 @@
#include "event_data.h"
#include "field_control_avatar.h"
#include "field_fadetransition.h"
-#include "field_map_obj_helpers.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_weather.h"
diff --git a/src/battle/battle_util.c b/src/battle/battle_util.c
index 87b6952ff..194a002d3 100644
--- a/src/battle/battle_util.c
+++ b/src/battle/battle_util.c
@@ -22,6 +22,8 @@
#include "constants/species.h"
#include "constants/weather.h"
+extern u8 gUnknown_02023A14_50;
+
extern const u8* gBattlescriptCurrInstr;
extern u8 gActiveBank;
extern u8 gBattleBufferB[4][0x200];
@@ -1736,17 +1738,14 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
else
moveType = gBattleMoves[move].type;
- //_080184AC
switch (caseID)
{
case ABILITYEFFECT_ON_SWITCHIN: // 0
- //_08018518
if (gBankAttacker >= gNoOfAllBanks)
gBankAttacker = bank;
switch (gLastUsedAbility)
{
case 0xFF: //weather from overworld
- //_08018586
switch (GetCurrentWeather())
{
case WEATHER_RAIN_LIGHT:
@@ -1786,7 +1785,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_DRIZZLE:
- //_08018680
if (!(gBattleWeather & WEATHER_RAIN_PERMANENT))
{
gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY);
@@ -1796,7 +1794,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_SAND_STREAM:
- //_080186B8
if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT))
{
gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
@@ -1806,7 +1803,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_DROUGHT:
- //_080186F0
if (!(gBattleWeather & WEATHER_SUN_PERMANENT))
{
gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
@@ -1816,7 +1812,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_INTIMIDATE:
- //_08018728
if (!(gSpecialStatuses[bank].intimidatedPoke))
{
gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES;
@@ -1824,7 +1819,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_FORECAST:
- //_0801875C
effect = CastformDataTypeChange(bank);
if (effect != 0)
{
@@ -1834,7 +1828,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_TRACE:
- //_080187A0
if (!(gSpecialStatuses[bank].traced))
{
gStatuses3[bank] |= STATUS3_TRACE;
@@ -1843,7 +1836,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
break;
case ABILITY_CLOUD_NINE:
case ABILITY_AIR_LOCK:
- //_080187DC
{
// that's a weird choice for a variable, why not use i or bank?
for (target1 = 0; target1 < gNoOfAllBanks; target1++)
@@ -1862,7 +1854,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ENDTURN: // 1
- //_08018814
if (gBattleMons[bank].hp != 0)
{
gBankAttacker = bank;
@@ -1922,7 +1913,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_MOVES_BLOCK: // 2
- //_08018A40
if (gLastUsedAbility == ABILITY_SOUNDPROOF)
{
for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++)
@@ -1940,7 +1930,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ABSORBING: // 3
- //_08018AD8
if (move)
{
switch (gLastUsedAbility)
@@ -2010,11 +1999,9 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CONTACT: // 4
- //_08018CF0
switch (gLastUsedAbility)
{
case ABILITY_COLOR_CHANGE:
- //_08018DCC
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& move != MOVE_STRUGGLE
&& gBattleMoves[move].power != 0
@@ -2035,7 +2022,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_ROUGH_SKIN:
- //_08018E94
if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
&& gBattleMons[gBankAttacker].hp != 0
&& !gProtectStructs[gBankAttacker].confusionSelfDmg
@@ -2051,100 +2037,195 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITY_EFFECT_SPORE:
- //_08018F54
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (Random() % 10) == 0)
- {
- do
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
- } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
- if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
- gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
- gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ {
+ do
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
+ } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 10) == 0)
+ {
+ do
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
+ } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_POISON_POINT:
- //_0801904C
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (Random() % 3) == 0)
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_STATIC:
- //_08019128
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (Random() % 3) == 0)
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_FLAME_BODY:
- //_08019204
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && (Random() % 3) == 0)
- {
- gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
- gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ }
break;
case ABILITY_CUTE_CHARM:
- //_080192E0
- if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
- && gBattleMons[gBankAttacker].hp != 0
- && !gProtectStructs[gBankAttacker].confusionSelfDmg
- && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
- && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
- && gBattleMons[gBankTarget].hp != 0
- && (Random() % 3) == 0
- && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
- && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
- && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
- && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
- && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
- {
- gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
- BattleScriptPushCursor();
- gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
- effect++;
- }
+ if (DEBUG && (gUnknown_02023A14_50 & 4))
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && gBattleMons[gBankTarget].hp != 0
+ && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
+ && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
+ && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
+ {
+ gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
+ effect++;
+ }
+ }
+ else
+ {
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && gBattleMons[gBankTarget].hp != 0
+ && (Random() % 3) == 0
+ && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
+ && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
+ && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
+ {
+ gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
+ BattleScriptPushCursor();
+ gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
+ effect++;
+ }
+ }
break;
}
break;
case ABILITYEFFECT_IMMUNITY: // 5
- //_08019448
{
for (bank = 0; bank < gNoOfAllBanks; bank++)
{
@@ -2228,7 +2309,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_FORECAST: // 6
- //_080197B4
{
for (bank = 0; bank < gNoOfAllBanks; bank++)
{
@@ -2247,7 +2327,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_SYNCHRONIZE: // 7
- //_08019804
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
@@ -2263,7 +2342,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8
- //_08019880
if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
{
gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
@@ -2279,7 +2357,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_INTIMIDATE1: // 9
- //_080198FC
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES)
@@ -2294,7 +2371,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_TRACE: // 11
- //_08019940
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE))
@@ -2308,7 +2384,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0
&& gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- //_080199AE
gActiveBank = GetBankByIdentity(((Random() & 1) * 2) | side);
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
@@ -2316,7 +2391,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0)
{
- //_08019A34
gActiveBank = target1;
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
@@ -2324,7 +2398,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
{
- //_08019A78
gActiveBank = target2;
gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
gLastUsedAbility = gBattleMons[gActiveBank].ability;
@@ -2332,7 +2405,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
}
else
- //_08019ABC
{
gActiveBank = target1;
if (gBattleMons[target1].ability && gBattleMons[target1].hp)
@@ -2364,7 +2436,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_INTIMIDATE2: // 10
- //_08019B1C
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES))
@@ -2380,7 +2451,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12
- //_08019B60
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2392,7 +2462,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_BANK_SIDE: // 13
- //_08019BBC
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2404,7 +2473,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_FIELD_SPORT: // 14
- //_08019C18
switch (gLastUsedAbility)
{
case 0xFD:
@@ -2434,7 +2502,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_ON_FIELD: // 19
- //_08019CD4
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0)
@@ -2445,7 +2512,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15
- //_08019D18
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ability && i != bank)
@@ -2456,7 +2522,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16
- //_08019D5C
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2468,7 +2533,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_BANK_SIDE: // 17
- //_08019DB8
side = GetBankSide(bank);
for (i = 0; i < gNoOfAllBanks; i++)
{
@@ -2480,7 +2544,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
case ABILITYEFFECT_COUNT_ON_FIELD: // 18
- //_08019F44
for (i = 0; i < gNoOfAllBanks; i++)
{
if (gBattleMons[i].ability == ability && i != bank)
@@ -2491,7 +2554,6 @@ u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
}
break;
}
- //_08019F76
if (effect && caseID < 0xC && gLastUsedAbility != 0xFF)
RecordAbilityBattle(bank, gLastUsedAbility);
}
@@ -3385,17 +3447,25 @@ u8 IsMonDisobedient(void)
if (gBattleTypeFlags & BATTLE_TYPE_LINK
|| GetBankSide(gBankAttacker) == 1
- || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName)
- || FlagGet(FLAG_BADGE08_GET))
- return 0;
+ || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName))
+ return 0;
- obedienceLevel = 10;
- if (FlagGet(FLAG_BADGE02_GET))
- obedienceLevel = 30;
- if (FlagGet(FLAG_BADGE04_GET))
- obedienceLevel = 50;
- if (FlagGet(FLAG_BADGE06_GET))
- obedienceLevel = 70;
+ if (DEBUG && (gUnknown_02023A14_50 & 0x40))
+ {
+ obedienceLevel = 10;
+ }
+ else
+ {
+ if (FlagGet(FLAG_BADGE08_GET))
+ return 0;
+ obedienceLevel = 10;
+ if (FlagGet(FLAG_BADGE02_GET))
+ obedienceLevel = 30;
+ if (FlagGet(FLAG_BADGE04_GET))
+ obedienceLevel = 50;
+ if (FlagGet(FLAG_BADGE06_GET))
+ obedienceLevel = 70;
+ }
if (gBattleMons[gBankAttacker].level <= obedienceLevel)
return 0;
diff --git a/src/battle/pokeball.c b/src/battle/pokeball.c
index 6f27469ce..20c6d8676 100644
--- a/src/battle/pokeball.c
+++ b/src/battle/pokeball.c
@@ -21,7 +21,7 @@ extern u16 gBattleTypeFlags;
extern u8 gBankTarget;
extern u8 gActiveBank;
extern u16 gBattlePartyID[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern u8 gDoingBattleAnim;
extern u8 gHealthboxIDs[];
@@ -297,8 +297,8 @@ const struct SpriteTemplate gBallSpriteTemplates[] =
};
extern u32 ball_number_to_ball_processing_index(u16); // not sure of return type
-extern void sub_80786EC();
-extern bool8 sub_8078718(struct Sprite *);
+extern void InitAnimSpriteTranslationOverDuration();
+extern bool8 TranslateAnimSpriteLinearAndSine(struct Sprite *);
extern u8 sub_814086C(u8, u8, int, int, u8);
extern u8 sub_8141314(u8, u8, int, u8);
@@ -397,7 +397,7 @@ static void sub_8046464(u8 taskId)
gSprites[spriteId].data[2] = GetBankPosition(gBankTarget, 0);
gSprites[spriteId].data[4] = GetBankPosition(gBankTarget, 1) - 16;
gSprites[spriteId].data[5] = -40;
- sub_80786EC(&gSprites[spriteId]);
+ InitAnimSpriteTranslationOverDuration(&gSprites[spriteId]);
gSprites[spriteId].oam.affineParam = taskId;
gTasks[taskId].data[4] = gBankTarget;
gTasks[taskId].func = TaskDummy;
@@ -406,7 +406,7 @@ static void sub_8046464(u8 taskId)
static void objc_0804ABD4(struct Sprite *sprite)
{
- if (sub_8078718(sprite))
+ if (TranslateAnimSpriteLinearAndSine(sprite))
{
u8 taskId = sprite->oam.affineParam;
u8 r5 = gTasks[taskId].data[4];
@@ -442,9 +442,9 @@ static void sub_80466F4(struct Sprite *sprite)
{
sprite->data[5] = 0;
sprite->callback = sub_8046760;
- StartSpriteAffineAnim(&gSprites[gObjectBankIDs[sprite->data[6]]], 2);
- AnimateSprite(&gSprites[gObjectBankIDs[sprite->data[6]]]);
- gSprites[gObjectBankIDs[sprite->data[6]]].data[1] = 0;
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->data[6]]], 2);
+ AnimateSprite(&gSprites[gBankSpriteIds[sprite->data[6]]]);
+ gSprites[gBankSpriteIds[sprite->data[6]]].data[1] = 0;
}
}
@@ -453,17 +453,17 @@ static void sub_8046760(struct Sprite *sprite)
sprite->data[5]++;
if (sprite->data[5] == 11)
PlaySE(SE_SUIKOMU);
- if (gSprites[gObjectBankIDs[sprite->data[6]]].affineAnimEnded)
+ if (gSprites[gBankSpriteIds[sprite->data[6]]].affineAnimEnded)
{
StartSpriteAnim(sprite, 2);
- gSprites[gObjectBankIDs[sprite->data[6]]].invisible = TRUE;
+ gSprites[gBankSpriteIds[sprite->data[6]]].invisible = TRUE;
sprite->data[5] = 0;
sprite->callback = sub_80467F8;
}
else
{
- gSprites[gObjectBankIDs[sprite->data[6]]].data[1] += 0x60;
- gSprites[gObjectBankIDs[sprite->data[6]]].pos2.y = -gSprites[gObjectBankIDs[sprite->data[6]]].data[1] >> 8;
+ gSprites[gBankSpriteIds[sprite->data[6]]].data[1] += 0x60;
+ gSprites[gBankSpriteIds[sprite->data[6]]].pos2.y = -gSprites[gBankSpriteIds[sprite->data[6]]].data[1] >> 8;
}
}
@@ -747,9 +747,9 @@ static void sub_8046C78(struct Sprite *sprite)
gTasks[taskId].data[2] = r4_2;
gTasks[taskId].data[15] = 0;
}
- StartSpriteAffineAnim(&gSprites[gObjectBankIDs[sprite->data[6]]], 1);
- AnimateSprite(&gSprites[gObjectBankIDs[sprite->data[6]]]);
- gSprites[gObjectBankIDs[sprite->data[6]]].data[1] = 0x1000;
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[sprite->data[6]]], 1);
+ AnimateSprite(&gSprites[gBankSpriteIds[sprite->data[6]]]);
+ gSprites[gBankSpriteIds[sprite->data[6]]].data[1] = 0x1000;
}
static void sub_8046E7C(struct Sprite *sprite)
@@ -766,25 +766,25 @@ static void sub_8046E9C(struct Sprite *sprite)
bool8 r7 = FALSE;
u8 r4 = sprite->data[6];
- gSprites[gObjectBankIDs[r4]].invisible = FALSE;
+ gSprites[gBankSpriteIds[r4]].invisible = FALSE;
if (sprite->animEnded)
sprite->invisible = TRUE;
- if (gSprites[gObjectBankIDs[r4]].affineAnimEnded)
+ if (gSprites[gBankSpriteIds[r4]].affineAnimEnded)
{
- StartSpriteAffineAnim(&gSprites[gObjectBankIDs[r4]], 0);
+ StartSpriteAffineAnim(&gSprites[gBankSpriteIds[r4]], 0);
r7 = TRUE;
}
else
{
- gSprites[gObjectBankIDs[r4]].data[1] -= 288;
- gSprites[gObjectBankIDs[r4]].pos2.y = gSprites[gObjectBankIDs[r4]].data[1] >> 8;
+ gSprites[gBankSpriteIds[r4]].data[1] -= 288;
+ gSprites[gBankSpriteIds[r4]].pos2.y = gSprites[gBankSpriteIds[r4]].data[1] >> 8;
}
if (sprite->animEnded && r7)
{
s32 i;
u32 r3;
- gSprites[gObjectBankIDs[r4]].pos2.y = 0;
+ gSprites[gBankSpriteIds[r4]].pos2.y = 0;
gDoingBattleAnim = 0;
ewram17810[r4].unk0_3 = 0;
FreeSpriteOamMatrix(sprite);
@@ -819,8 +819,8 @@ static void sub_8046FBC(struct Sprite *sprite)
}
else if (sprite->data[4] == 315)
{
- FreeOamMatrix(gSprites[gObjectBankIDs[sprite->data[6]]].oam.matrixNum);
- DestroySprite(&gSprites[gObjectBankIDs[sprite->data[6]]]);
+ FreeOamMatrix(gSprites[gBankSpriteIds[sprite->data[6]]].oam.matrixNum);
+ DestroySprite(&gSprites[gBankSpriteIds[sprite->data[6]]]);
DestroySpriteAndFreeResources(sprite);
if (gMain.inBattle)
ewram17810[r7].unk0_3 = 0;
@@ -834,7 +834,7 @@ static void sub_8047074(struct Sprite *sprite)
sprite->data[4] = GetBankPosition(sprite->data[6], 3) + 24;
sprite->data[5] = -30;
sprite->oam.affineParam = sprite->data[6];
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
sprite->callback = sub_80470C4;
}
@@ -858,7 +858,7 @@ static void sub_80470C4(struct Sprite *sprite)
StartSpriteAffineAnim(sprite, 4);
}
r4 = sprite->data[0];
- sub_8078B5C(sprite);
+ TranslateAnimSpriteByDeltas(sprite);
sprite->data[7] += sprite->data[6] / 3;
sprite->pos2.y += Sin(HIBYTE(sprite->data[7]), sprite->data[5]);
sprite->oam.affineParam += 0x100;
@@ -876,7 +876,7 @@ static void sub_80470C4(struct Sprite *sprite)
}
else
{
- if (sub_8078718(sprite))
+ if (TranslateAnimSpriteLinearAndSine(sprite))
{
sprite->pos1.x += sprite->pos2.x;
sprite->pos1.y += sprite->pos2.y;
diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c
index e676fca99..2235a2bbf 100644
--- a/src/battle/reshow_battle_screen.c
+++ b/src/battle/reshow_battle_screen.c
@@ -17,7 +17,7 @@ extern u8 gBankInMenu;
extern u16 gBattlePartyID[4];
extern u8 gNoOfAllBanks;
extern u16 gBattleTypeFlags;
-extern u8 gObjectBankIDs[4];
+extern u8 gBankSpriteIds[4];
extern u8 gBattleMonForms[4];
extern u8 gHealthboxIDs[4];
@@ -235,46 +235,46 @@ static void sub_807B184(u8 bank)
if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
return;
GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
- gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank));
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
- gSprites[gObjectBankIDs[bank]].data[2] = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
- StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
}
else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
{
GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(0));
- gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
(8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
sub_8079E90(0));
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
}
else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
{
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(0));
- gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
(8 - gTrainerBackPicCoords[2].coords) * 4 + 80,
sub_8079E90(0));
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
}
else
{
if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
return;
GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
- gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank));
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
- gSprites[gObjectBankIDs[bank]].data[0] = bank;
- gSprites[gObjectBankIDs[bank]].data[2] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
- StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ gBankSpriteIds[bank] = CreateSprite(&gUnknown_02024E8C, GetBankPosition(bank, 2), posY, sub_8079E90(bank));
+ gSprites[gBankSpriteIds[bank]].oam.paletteNum = bank;
+ gSprites[gBankSpriteIds[bank]].callback = SpriteCallbackDummy;
+ gSprites[gBankSpriteIds[bank]].data[0] = bank;
+ gSprites[gBankSpriteIds[bank]].data[2] = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ StartSpriteAnim(&gSprites[gBankSpriteIds[bank]], gBattleMonForms[bank]);
}
- gSprites[gObjectBankIDs[bank]].invisible = ewram17800[bank].invisible;
+ gSprites[gBankSpriteIds[bank]].invisible = ewram17800[bank].invisible;
}
}
diff --git a/src/field/battle_tower.c b/src/battle_tower.c
index ab2a818a7..8c44b71a3 100644
--- a/src/field/battle_tower.c
+++ b/src/battle_tower.c
@@ -28,12 +28,13 @@
#include "ewram.h"
#if ENGLISH
-#include "../data/battle_tower/trainers.h"
+#include "data/battle_tower/trainers.h"
#elif GERMAN
-#include "../data/battle_tower/trainers_de.h"
+#include "data/battle_tower/trainers_de.h"
#endif
-static const u16 sBattleTowerHeldItems[] = {
+static const u16 sBattleTowerHeldItems[] =
+{
ITEM_NONE,
ITEM_KINGS_ROCK,
ITEM_SITRUS_BERRY,
@@ -99,10 +100,11 @@ static const u16 sBattleTowerHeldItems[] = {
ITEM_GANLON_BERRY,
};
-#include "../data/battle_tower/level_50_mons.h"
-#include "../data/battle_tower/level_100_mons.h"
+#include "data/battle_tower/level_50_mons.h"
+#include "data/battle_tower/level_100_mons.h"
-static const u8 sMaleTrainerClasses[] = {
+static const u8 sMaleTrainerClasses[] =
+{
FACILITY_CLASS_RUIN_MANIAC,
FACILITY_CLASS_TUBER_M,
FACILITY_CLASS_COOL_TRAINER_M,
@@ -135,7 +137,8 @@ static const u8 sMaleTrainerClasses[] = {
FACILITY_CLASS_HIKER,
};
-static const u8 sFemaleTrainerClasses[] = {
+static const u8 sFemaleTrainerClasses[] =
+{
FACILITY_CLASS_AROMA_LADY,
FACILITY_CLASS_TUBER_F,
FACILITY_CLASS_COOL_TRAINER_F,
@@ -158,7 +161,8 @@ static const u8 sFemaleTrainerClasses[] = {
FACILITY_CLASS_LASS,
};
-static const u8 sMaleTrainerGfxIds[] = {
+static const u8 sMaleTrainerGfxIds[] =
+{
MAP_OBJ_GFX_HIKER,
MAP_OBJ_GFX_TUBER_M,
MAP_OBJ_GFX_MAN_4,
@@ -191,7 +195,8 @@ static const u8 sMaleTrainerGfxIds[] = {
MAP_OBJ_GFX_HIKER,
};
-static const u8 sFemaleTrainerGfxIds[] = {
+static const u8 sFemaleTrainerGfxIds[] =
+{
MAP_OBJ_GFX_WOMAN_3,
MAP_OBJ_GFX_TUBER_F,
MAP_OBJ_GFX_WOMAN_7,
@@ -214,7 +219,8 @@ static const u8 sFemaleTrainerGfxIds[] = {
MAP_OBJ_GFX_LASS,
};
-const u16 gBattleTowerBannedSpecies[] = {
+const u16 gBattleTowerBannedSpecies[] =
+{
SPECIES_MEW,
SPECIES_MEWTWO,
SPECIES_HO_OH,
@@ -229,7 +235,8 @@ const u16 gBattleTowerBannedSpecies[] = {
};
// Item prizes for battle tower streaks of 5 or fewer sets.
-/*static*/ const u16 sShortStreakPrizes[] = {
+static const u16 sShortStreakPrizes[] =
+{
ITEM_HP_UP,
ITEM_PROTEIN,
ITEM_IRON,
@@ -239,7 +246,8 @@ const u16 gBattleTowerBannedSpecies[] = {
};
// Item prizes for battle tower streaks of greater than 5 sets.
-/*static*/ const u16 sLongStreakPrizes[] = {
+static const u16 sLongStreakPrizes[] =
+{
ITEM_BRIGHT_POWDER,
ITEM_WHITE_HERB,
ITEM_QUICK_CLAW,
@@ -259,7 +267,6 @@ static void SaveCurrentWinStreak(void);
static void sub_8135CFC(void);
static void CheckMonBattleTowerBanlist(u16, u16, u16, u8, u8, u16 *, u16 *, u8 *);
static void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *);
-static void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer);
static void SetBattleTowerRecordChecksum(struct BattleTowerRecord *);
static void ClearBattleTowerRecord(struct BattleTowerRecord *);
@@ -293,9 +300,7 @@ void sub_8134548(void)
default:
ResetBattleTowerStreak(levelType);
if (!var1)
- {
VarSet(VAR_TEMP_0, 5);
- }
break;
case 1:
ResetBattleTowerStreak(levelType);
@@ -321,10 +326,8 @@ void sub_8134548(void)
}
if ((gSaveBlock2.battleTower.var_4AE[0] == 3 || gSaveBlock2.battleTower.var_4AE[0] == 6)
- && (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6))
- {
+ && (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6))
VarSet(VAR_TEMP_0, 5);
- }
ValidateBattleTowerRecordChecksums();
}
@@ -351,23 +354,18 @@ bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak)
ValidateEReaderTrainer();
if (gSpecialVar_Result != 0 || gSaveBlock2.battleTower.ereaderTrainer.winStreak != winStreak)
- {
return FALSE;
- }
- trainerTeamLevel = 50;
if (levelType != 0)
- {
trainerTeamLevel = 100;
- }
+ else
+ trainerTeamLevel = 50;
for (i = 0; i < 3; i++)
{
monLevel = gSaveBlock2.battleTower.ereaderTrainer.party[i].level;
if (gSaveBlock2.battleTower.ereaderTrainer.party[i].level != trainerTeamLevel)
- {
return FALSE;
- }
CheckMonBattleTowerBanlist(
gSaveBlock2.battleTower.ereaderTrainer.party[i].species,
@@ -380,7 +378,7 @@ bool8 ShouldBattleEReaderTrainer(u8 levelType, u16 winStreak)
&numValid);
}
- return numValid == 3;
+ return (numValid == 3);
}
bool8 sub_81346F4(void)
@@ -409,6 +407,7 @@ bool8 sub_81346F4(void)
struct BattleTowerRecord *record = &gSaveBlock2.battleTower.records[recordIndex];
u32 recordHasData = 0;
u32 checksum = 0;
+
for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32) - 1; i++)
{
recordHasData |= ((u32 *)record)[i];
@@ -416,9 +415,9 @@ bool8 sub_81346F4(void)
}
if (gSaveBlock2.battleTower.records[recordIndex].winStreak == winStreak
- && gSaveBlock2.battleTower.records[recordIndex].battleTowerLevelType == battleTowerLevelType
- && recordHasData
- && gSaveBlock2.battleTower.records[recordIndex].checksum == checksum)
+ && gSaveBlock2.battleTower.records[recordIndex].battleTowerLevelType == battleTowerLevelType
+ && recordHasData
+ && gSaveBlock2.battleTower.records[recordIndex].checksum == checksum)
{
trainerIds[numCandidates] = recordIndex;
numCandidates++;
@@ -785,19 +784,17 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
u8 trainerClass;
if (trainerIndex < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
- {
trainerClass = gBattleTowerTrainers[trainerIndex].trainerClass;
- }
else if (trainerIndex < BATTLE_TOWER_EREADER_TRAINER_ID)
- {
trainerClass = gSaveBlock2.battleTower.records[trainerIndex - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass;
- }
else
- {
trainerClass = gSaveBlock2.battleTower.ereaderTrainer.trainerClass;
- }
- for (i = 0; i < 30 && sMaleTrainerClasses[i] != trainerClass; i++);
+ for (i = 0; i < 30; i++)
+ {
+ if (sMaleTrainerClasses[i] == trainerClass)
+ break;
+ }
if (i != 30)
{
u8 trainerObjectGfxId = sMaleTrainerGfxIds[i];
@@ -805,7 +802,11 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex)
return;
}
- for (i = 0; i < 20 && sFemaleTrainerClasses[i] != trainerClass; i++);
+ for (i = 0; i < 20; i++)
+ {
+ if (sFemaleTrainerClasses[i] == trainerClass)
+ break;
+ }
if (i != 20)
{
u8 trainerObjectGfxId = sFemaleTrainerGfxIds[i];
@@ -1144,33 +1145,21 @@ _08134C70: .4byte gSaveBlock2\n\
u8 get_trainer_class_pic_index(void)
{
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
- {
return gTrainerClassToPicIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass];
- }
else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
- {
return gTrainerClassToPicIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass];
- }
else
- {
return gTrainerClassToPicIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass];
- }
}
u8 get_trainer_class_name_index(void)
{
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
- {
return gTrainerClassToNameIndex[gSaveBlock2.battleTower.ereaderTrainer.trainerClass];
- }
else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
- {
return gTrainerClassToNameIndex[gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass];
- }
else
- {
return gTrainerClassToNameIndex[gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass];
- }
}
void get_trainer_name(u8* dest)
@@ -1180,26 +1169,20 @@ void get_trainer_name(u8* dest)
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
{
for (i = 0; i < 7; i++)
- {
dest[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i];
- }
}
else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
{
for (i = 0; i < 7; i++)
- {
dest[i] = gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].name[i];
- }
}
else
{
for (i = 0; i < 7; i++)
- {
dest[i] = gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].name[i];
- }
}
- dest[i] = 0xFF;
+ dest[i] = EOS;
}
void FillBattleTowerTrainerParty(void)
@@ -1267,10 +1250,7 @@ void FillBattleTowerTrainerParty(void)
{
// Load E-Reader trainer's party.
for (partyIndex = 0; partyIndex < 3; partyIndex++)
- {
sub_803ADE8(&gEnemyParty[partyIndex], &gSaveBlock2.battleTower.ereaderTrainer.party[partyIndex]);
- }
-
return;
}
else
@@ -1282,7 +1262,6 @@ void FillBattleTowerTrainerParty(void)
&gEnemyParty[partyIndex],
&gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].party[partyIndex]);
}
-
return;
}
@@ -1330,10 +1309,8 @@ void FillBattleTowerTrainerParty(void)
for (i = 0; i < partyIndex; i++)
{
if (GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) != 0
- && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem])
- {
+ && GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM, NULL) == sBattleTowerHeldItems[battleTowerMons[battleMonIndex].heldItem])
break;
- }
}
if (i != partyIndex)
@@ -1342,7 +1319,12 @@ void FillBattleTowerTrainerParty(void)
// Ensure this exact pokemon index isn't a duplicate. This check doesn't seem necessary
// because the species and held items were already checked directly above. Perhaps this
// is leftover code before the logic for duplicate species and held items was added.
- for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++);
+ //for (i = 0; i < partyIndex && chosenMonIndices[i] != battleMonIndex; i++);
+ for (i = 0; i < partyIndex; i++)
+ {
+ if (chosenMonIndices[i] == battleMonIndex)
+ break;
+ }
if (i != partyIndex)
continue;
@@ -1362,10 +1344,7 @@ void FillBattleTowerTrainerParty(void)
{
SetMonMoveSlot(&gEnemyParty[partyIndex], battleTowerMons[battleMonIndex].moves[i], i);
if (battleTowerMons[battleMonIndex].moves[i] == MOVE_FRUSTRATION)
- {
- // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is.
- friendship = 0;
- }
+ friendship = 0; // MOVE_FRUSTRATION is more powerful the lower the pokemon's friendship is.
}
SetMonData(&gEnemyParty[partyIndex], MON_DATA_FRIENDSHIP, &friendship);
@@ -1386,9 +1365,7 @@ u32 CountBattleTowerBanlistCaught(void)
for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++)
{
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleTowerBannedSpecies[i]), FLAG_GET_CAUGHT))
- {
numCaught++;
- }
}
return numCaught;
@@ -1399,7 +1376,6 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT
if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(species), FLAG_GET_CAUGHT))
{
curIndexToAppend++;
-
switch (curIndexToAppend - 1)
{
case 0:
@@ -1409,24 +1385,15 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT
case 8:
case 10:
if (numToAppend == curIndexToAppend)
- {
StringAppend(gStringVar1, BattleText_Format3);
- }
else if (numToAppend > curIndexToAppend)
- {
StringAppend(gStringVar1, BattleText_Format4);
- }
break;
case 1:
if (curIndexToAppend == numToAppend)
- {
StringAppend(gStringVar1, BattleText_Format3);
- }
else
- {
StringAppend(gStringVar1, BattleText_Format4);
- }
-
StringAppend(gStringVar1, BattleText_Format7);
break;
case 3:
@@ -1435,18 +1402,12 @@ u8 AppendBattleTowerBannedSpeciesName(u16 species, u8 curIndexToAppend, s32 numT
case 9:
default:
if (curIndexToAppend == numToAppend)
- {
StringAppend(gStringVar1, BattleText_Format3);
- }
else
- {
StringAppend(gStringVar1, BattleText_Format4);
- }
-
StringAppend(gStringVar1, BattleText_Format6);
break;
}
-
StringAppend(gStringVar1, gSpeciesNames[species]);
}
@@ -1464,7 +1425,7 @@ void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowe
while (1)
{
if (gBattleTowerBannedSpecies[counter] == 0xFFFF)
- goto EXIT2; // Couldn't get the code to match without this GOTO
+ break;
if (gBattleTowerBannedSpecies[counter] == species)
break;
@@ -1475,7 +1436,6 @@ void CheckMonBattleTowerBanlist(u16 species, u16 heldItem, u16 hp, u8 battleTowe
if (gBattleTowerBannedSpecies[counter] != 0xFFFF)
return;
- EXIT2:
if (battleTowerLevelType == 0 && monLevel > 50)
return;
@@ -1528,9 +1488,7 @@ void CheckPartyBattleTowerBanlist(void)
numBanlistCaught = CountBattleTowerBanlistCaught();
for (i = 0; gBattleTowerBannedSpecies[i] != 0xFFFF; i++)
- {
counter = AppendBattleTowerBannedSpeciesName(gBattleTowerBannedSpecies[i], counter, numBanlistCaught);
- }
if (counter == 0)
{
@@ -1561,17 +1519,11 @@ void PrintBattleTowerTrainerMessage(u16 *easyChat)
void PrintBattleTowerTrainerGreeting(void)
{
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
- {
- PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat);
- }
+ PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting);
else if (gSaveBlock2.battleTower.battleTowerTrainerId < BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
- {
- PrintBattleTowerTrainerMessage((u16 *)gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].greeting.easyChat);
- }
+ PrintBattleTowerTrainerMessage((u16 *)gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].greeting);
else
- {
- PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting.easyChat);
- }
+ PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].greeting);
}
void sub_81354CC(void)
@@ -1643,9 +1595,7 @@ void StartSpecialBattle(void)
ZeroEnemyPartyMons();
for (i = 0; i < 3; i++)
- {
sub_803ADE8(&gEnemyParty[i], &gSaveBlock2.battleTower.ereaderTrainer.party[i]);
- }
gBattleTypeFlags = (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_TRAINER);
gTrainerBattleOpponent = 0;
@@ -1683,34 +1633,22 @@ void SetBattleTowerProperty(void)
break;
case 5:
for (i = 0; i < 3; i++)
- {
gSaveBlock2.battleTower.selectedPartyMons[i] = gSelectedOrderFromParty[i];
- }
break;
case 6:
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
- {
ClearEReaderTrainer(&gSaveBlock2.battleTower.ereaderTrainer);
- }
-
if (gSaveBlock2.battleTower.totalBattleTowerWins < 9999)
- {
gSaveBlock2.battleTower.totalBattleTowerWins++;
- }
-
gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType]++;
SaveCurrentWinStreak();
gSpecialVar_Result = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType];
-
gStringVar1[0] = gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] + 0xA1;
gStringVar1[1] = 0xFF;
break;
case 7:
if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] < 1430)
- {
gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType]++;
- }
-
SaveCurrentWinStreak();
gSpecialVar_Result = gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType];
break;
@@ -1724,9 +1662,7 @@ void SetBattleTowerProperty(void)
break;
case 11:
if (gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] != 3)
- {
ResetBattleTowerStreak(battleTowerLevelType);
- }
break;
case 12:
gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = ewram160FB;
@@ -1794,9 +1730,7 @@ void SetBattleTowerParty(void)
s32 i;
for (i = 0; i < 3; i++)
- {
gSelectedOrderFromParty[i] = gSaveBlock2.battleTower.selectedPartyMons[i];
- }
ReducePlayerPartyToThree();
}
@@ -1858,14 +1792,10 @@ void sub_8135AC4(void)
playerRecord->winStreak = GetCurrentBattleTowerWinStreak(battleTowerLevelType);
for (i = 0; i < 6; i++)
- {
- playerRecord->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i];
- }
+ playerRecord->greeting[i] = gSaveBlock1.easyChats.unk2B28[i];
for (i = 0; i < 3; i++)
- {
sub_803AF78(&gUnknown_030042FC[gSaveBlock2.battleTower.selectedPartyMons[i]], &playerRecord->party[i]);
- }
SetBattleTowerRecordChecksum(&gSaveBlock2.battleTower.playerRecord);
SaveCurrentWinStreak();
@@ -1878,10 +1808,8 @@ void SaveBattleTowerProgress(void)
if (gSpecialVar_0x8004 == 3 || gSpecialVar_0x8004 == 0)
{
if (gSaveBlock2.battleTower.curStreakChallengesNum[battleTowerLevelType] > 1
- || gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] > 1)
- {
+ || gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType] > 1)
sub_8135AC4();
- }
}
sub_8135CFC();
@@ -1889,9 +1817,7 @@ void SaveBattleTowerProgress(void)
gSaveBlock2.battleTower.battleOutcome = gBattleOutcome;
if (gSpecialVar_0x8004 != 3)
- {
gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004;
- }
VarSet(VAR_TEMP_0, 0);
gSaveBlock2.battleTower.unk_554 = 1;
@@ -1912,28 +1838,20 @@ void ValidateBattleTowerRecordChecksums(void)
checksum = 0;
for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
- {
checksum += ((u32 *)&gSaveBlock2.battleTower.playerRecord)[i];
- }
if (gSaveBlock2.battleTower.playerRecord.checksum != checksum)
- {
ClearBattleTowerRecord(&gSaveBlock2.battleTower.playerRecord);
- }
for (recordIndex = 0; recordIndex < 5; recordIndex++)
{
record = &gSaveBlock2.battleTower.records[recordIndex];
checksum = 0;
for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
- {
checksum += ((u32 *)record)[i];
- }
if (gSaveBlock2.battleTower.records[recordIndex].checksum != checksum)
- {
ClearBattleTowerRecord(&gSaveBlock2.battleTower.records[recordIndex]);
- }
}
}
@@ -1943,9 +1861,7 @@ void SetBattleTowerRecordChecksum(struct BattleTowerRecord *record)
record->checksum = 0;
for (i = 0; i < (sizeof(struct BattleTowerRecord) / sizeof(u32)) - 1; i++)
- {
record->checksum += ((u32 *)record)[i];
- }
}
void ClearBattleTowerRecord(struct BattleTowerRecord *record)
@@ -1953,9 +1869,7 @@ void ClearBattleTowerRecord(struct BattleTowerRecord *record)
u32 i;
for (i = 0; i < sizeof(struct BattleTowerRecord) / sizeof(u32); i++)
- {
((u32 *)record)[i] = 0;
- }
}
void sub_8135CFC(void)
@@ -1967,9 +1881,7 @@ void sub_8135CFC(void)
gSaveBlock2.battleTower.firstMonSpecies = gBattleMons[0].species;
for (i = 0; i < POKEMON_NAME_LENGTH; i++)
- {
gSaveBlock2.battleTower.firstMonNickname[i] = gBattleMons[0].nickname[i];
- }
}
u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType)
@@ -1978,11 +1890,9 @@ u16 GetCurrentBattleTowerWinStreak(u8 battleTowerLevelType)
+ gSaveBlock2.battleTower.curChallengeBattleNum[battleTowerLevelType];
if (winStreak > 9999)
- {
return 9999;
- }
-
- return winStreak;
+ else
+ return winStreak;
}
void DetermineBattleTowerPrize(void)
@@ -2019,11 +1929,10 @@ void AwardBattleTowerRibbons(void)
u8 ribbonType;
u8 battleTowerLevelType = gSaveBlock2.battleTower.battleTowerLevelType;
- ribbonType = MON_DATA_WINNING_RIBBON;
if (battleTowerLevelType != 0)
- {
ribbonType = MON_DATA_VICTORY_RIBBON;
- }
+ else
+ ribbonType = MON_DATA_WINNING_RIBBON;
gSpecialVar_Result = 0;
@@ -2042,9 +1951,7 @@ void AwardBattleTowerRibbons(void)
}
if (gSpecialVar_Result != 0)
- {
IncrementGameStat(GAME_STAT_RECEIVED_RIBBONS);
- }
}
// This is a leftover debugging function that is used to populate the E-Reader
@@ -2076,16 +1983,14 @@ void Debug_FillEReaderTrainerWithPlayerData(void)
j = 7;
for (i = 0; i < 6; i++)
{
- ereaderTrainer->greeting.easyChat[i] = gSaveBlock1.easyChats.unk2B28[i];
- ereaderTrainer->farewellPlayerLost.easyChat[i] = j;
- ereaderTrainer->farewellPlayerWon.easyChat[i] = j + 6;
+ ereaderTrainer->greeting[i] = gSaveBlock1.easyChats.unk2B28[i];
+ ereaderTrainer->farewellPlayerLost[i] = j;
+ ereaderTrainer->farewellPlayerWon[i] = j + 6;
j++;
}
for (i = 0; i < 3; i++)
- {
sub_803AF78(&gPlayerParty[i], &ereaderTrainer->party[i]);
- }
SetEReaderTrainerChecksum(ereaderTrainer);
}
@@ -2105,9 +2010,7 @@ void SetEReaderTrainerName(u8 *trainerName)
s32 i;
for (i = 0; i < 7; i++)
- {
trainerName[i] = gSaveBlock2.battleTower.ereaderTrainer.name[i];
- }
trainerName[i] = 0xFF;
}
@@ -2124,9 +2027,7 @@ void ValidateEReaderTrainer(void)
checksum = 0;
for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
- {
checksum |= ((u32 *)ereaderTrainer)[i];
- }
if (checksum == 0)
{
@@ -2136,9 +2037,7 @@ void ValidateEReaderTrainer(void)
checksum = 0;
for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
- {
checksum += ((u32 *)ereaderTrainer)[i];
- }
if (gSaveBlock2.battleTower.ereaderTrainer.checksum != checksum)
{
@@ -2153,9 +2052,7 @@ void SetEReaderTrainerChecksum(struct BattleTowerEReaderTrainer *ereaderTrainer)
ereaderTrainer->checksum = 0;
for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32) - 1; i++)
- {
ereaderTrainer->checksum += ((u32 *)ereaderTrainer)[i];
- }
}
void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer)
@@ -2163,30 +2060,22 @@ void ClearEReaderTrainer(struct BattleTowerEReaderTrainer *ereaderTrainer)
u32 i;
for (i = 0; i < sizeof(struct BattleTowerEReaderTrainer) / sizeof(u32); i++)
- {
((u32 *)ereaderTrainer)[i] = 0;
- }
}
void PrintEReaderTrainerGreeting(void)
{
- PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting.easyChat);
+ PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.greeting);
}
void PrintEReaderTrainerFarewellMessage(void)
{
if (gBattleOutcome == BATTLE_DREW)
- {
- gStringVar4[0] = 0xFF;
- }
+ gStringVar4[0] = EOS;
else if (gBattleOutcome == BATTLE_WON)
- {
- PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon.easyChat);
- }
+ PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerWon);
else
- {
- PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost.easyChat);
- }
+ PrintBattleTowerTrainerMessage(gSaveBlock2.battleTower.ereaderTrainer.farewellPlayerLost);
}
void TryEnableBravoTrainerBattleTower(void)
@@ -2196,9 +2085,7 @@ void TryEnableBravoTrainerBattleTower(void)
for (i = 0; i < 2; i++)
{
if (gSaveBlock2.battleTower.var_4AE[i] == 1)
- {
sub_80BFD20();
- }
}
}
@@ -2206,17 +2093,11 @@ void TryEnableBravoTrainerBattleTower(void)
u8 de_sub_81364AC(void)
{
if (gSaveBlock2.battleTower.battleTowerTrainerId == BATTLE_TOWER_EREADER_TRAINER_ID)
- {
return gSaveBlock2.battleTower.ereaderTrainer.trainerClass;
- }
else if (gSaveBlock2.battleTower.battleTowerTrainerId >= BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID)
- {
return gSaveBlock2.battleTower.records[gSaveBlock2.battleTower.battleTowerTrainerId - BATTLE_TOWER_RECORD_MIXING_TRAINER_BASE_ID].trainerClass;
- }
else
- {
return gBattleTowerTrainers[gSaveBlock2.battleTower.battleTowerTrainerId].trainerClass;
- }
}
u8 de_sub_81364F8(void)
diff --git a/src/field/berry.c b/src/berry.c
index 088267ad0..9313c458b 100644
--- a/src/field/berry.c
+++ b/src/berry.c
@@ -1,14 +1,16 @@
#include "global.h"
#include "berry.h"
#include "field_control_avatar.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "fieldmap.h"
#include "item.h"
#include "item_menu.h"
#include "item_use.h"
#include "constants/items.h"
#include "main.h"
+#include "menu.h"
#include "random.h"
+#include "task.h"
#include "text.h"
#define BERRY_NAME_LENGTH 6
@@ -999,6 +1001,30 @@ extern u16 gSpecialVar_0x8006;
static u8 CalcBerryYield(struct BerryTree *tree);
static u16 GetStageDurationByBerryType(u8 berry);
+#if DEBUG
+
+extern u8 sub_80B47D8(u16 var);
+
+u8 debug_sub_80C2B04(void)
+{
+ u8 taskId = sub_80B47D8(0);
+
+ gTasks[taskId].data[4]--;
+ CloseMenu();
+ return 1;
+}
+
+u8 debug_sub_80C2B30(void)
+{
+ u8 taskId = sub_80B47D8(1);
+
+ gTasks[taskId].data[4]--;
+ CloseMenu();
+ return 1;
+}
+
+#endif
+
// unused
// this could be static, but making it so causes a compile-time warning.
void ClearEnigmaBerries(void)
@@ -1041,9 +1067,7 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
dest = (u8*)enigmaBerry;
checksum = 0;
for (i = 0; i < ((u32)&gSaveBlock1.enigmaBerry.checksum - (u32)&gSaveBlock1.enigmaBerry); i++)
- {
checksum += dest[i];
- }
// the checksum is calculated: the descriptions are safe to restore now.
gSaveBlock1.enigmaBerry.berry.description1 = description1;
@@ -1052,6 +1076,49 @@ static u32 GetEnigmaBerryChecksum(struct EnigmaBerry *enigmaBerry)
return checksum;
}
+#if DEBUG
+
+extern const u8 gSpriteImage_UnusedCherry[];
+extern const u16 gSpritePalette_UnusedCherry[];
+extern u8 gUnknown_Debug_839B6CE[];
+
+static const u8 gUnknown_Debug_083F7F84[] = _("そとから きた きのみ");
+static const u8 gUnknown_Debug_083F7F90[] = _("ただいま かいはつちゅう");
+
+void debug_sub_80C2C18(u8 *name, u8 holdEffect, u8 holdEffectParam)
+{
+ s32 i;
+
+ gSaveBlock1.enigmaBerry.berry = gBerries[0];
+ StringCopy(gSaveBlock1.enigmaBerry.berry.name, name);
+ StringCopy(gSaveBlock1.enigmaBerry.description1, gUnknown_Debug_083F7F84);
+ StringCopy(gSaveBlock1.enigmaBerry.description2, gUnknown_Debug_083F7F90);
+ gSaveBlock1.enigmaBerry.berry.description1 = gSaveBlock1.enigmaBerry.description1;
+ gSaveBlock1.enigmaBerry.berry.description2 = gSaveBlock1.enigmaBerry.description2;
+ for (i = 0; i < 0x480; i++)
+ gSaveBlock1.enigmaBerry.pic[i] = gSpriteImage_UnusedCherry[i];
+ for (i = 0; i < 16; i++)
+ gSaveBlock1.enigmaBerry.palette[i] = gSpritePalette_UnusedCherry[i];
+ for (i = 0; i < 18; i++)
+ gSaveBlock1.enigmaBerry.itemEffect[i] = gUnknown_Debug_839B6CE[i];
+ gSaveBlock1.enigmaBerry.holdEffect = holdEffect;
+ gSaveBlock1.enigmaBerry.holdEffectParam = holdEffectParam;
+ gSaveBlock1.enigmaBerry.checksum = GetEnigmaBerryChecksum(&gSaveBlock1.enigmaBerry);
+}
+
+void debug_sub_80C2D24(u8 spicy, u8 dry, u8 sweet, u8 bitter, u8 sour, u8 smoothness)
+{
+ gSaveBlock1.enigmaBerry.berry.spicy = spicy;
+ gSaveBlock1.enigmaBerry.berry.dry = dry;
+ gSaveBlock1.enigmaBerry.berry.sweet = sweet;
+ gSaveBlock1.enigmaBerry.berry.bitter = bitter;
+ gSaveBlock1.enigmaBerry.berry.sour = sour;
+ gSaveBlock1.enigmaBerry.berry.smoothness = smoothness;
+ gSaveBlock1.enigmaBerry.checksum = GetEnigmaBerryChecksum(&gSaveBlock1.enigmaBerry);
+}
+
+#endif
+
// due to e-reader scans being particularly volatile to failure, it is a requirement to check for
// their integrity here due to scans possibly failing to produce the correct result.
bool32 IsEnigmaBerryValid(void)
@@ -1074,9 +1141,9 @@ const struct Berry *GetBerryInfo(u8 berry)
return &gSaveBlock1.enigmaBerry.berry;
else
{
- // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was
+ // invalid berries will be flattened into a cheri berry. Interestingly, if your berry was
// an enigma berry whos checksum failed, the game will use the Enigma Berry information
- // for this: meaning if you see the Enigma Berry information, its actually because the
+ // for this: meaning if you see the Enigma Berry information, its actually because the
// checksum failed.
if (berry == BERRY_NONE || berry > GETBERRYID(LAST_BERRY))
berry = GETBERRYID(FIRST_BERRY);
@@ -1190,8 +1257,8 @@ void BerryTreeTimeUpdate(s32 minutesPassed)
if (tree->berry != BERRY_NONE && tree->stage != BERRY_STAGE_NO_BERRY && tree->growthSparkle == FALSE)
{
// the player has waited too long to water the berry. Reset the tree. This is because
- // if the berry state is not in the unwatered state, the tree will grow anyway despite this
- // check, which means BerryTreeGrow will handle the regrow process for this, removing the
+ // if the berry state is not in the unwatered state, the tree will grow anyway despite this
+ // check, which means BerryTreeGrow will handle the regrow process for this, removing the
// need for this check. This only handles the unwatered soil state.
if (minutesPassed >= GetStageDurationByBerryType(tree->berry) * 71)
{
@@ -1210,7 +1277,7 @@ void BerryTreeTimeUpdate(s32 minutesPassed)
// its been X minutes since the last berry update, so update
// minutesUntilNextStage appropriately to match the time offset
// that has passed since the update.
- tree->minutesUntilNextStage -= time;
+ tree->minutesUntilNextStage -= time;
break;
}
// perform the subtraction the other way around to get the number of minutes since
@@ -1376,7 +1443,7 @@ void FieldObjectInteractionGetBerryTreeData(void)
// we cannot allow the player to grow/interact with the tree while the tree
// is undergoing the sparkling effect, so set the special var to the sparkling
// state and let the event script process the flag.
- gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING;
+ gSpecialVar_0x8004 = BERRY_STAGE_SPARKLING;
}
else
gSpecialVar_0x8004 = GetStageByBerryTreeId(id);
@@ -1417,6 +1484,57 @@ bool8 PlayerHasBerries(void)
return IsBagPocketNonEmpty(BAG_BERRIES);
}
+#if DEBUG
+void debug_sub_80C33FC(const u8 *buffer, s32 value, u8 n)
+{
+ StringAppend(gStringVar4, buffer);
+ ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEADING_ZEROS, n);
+ StringAppend(gStringVar4, gStringVar1);
+}
+
+static const u8 gUnknown_Debug_083F7F9D[] = _("POS:");
+static const u8 gUnknown_Debug_083F7FA2[] = _("\nTYPE:");
+static const u8 gUnknown_Debug_083F7FA9[] = _("\nGROW:");
+static const u8 gUnknown_Debug_083F7FB0[] = _("\nTIME:");
+static const u8 gUnknown_Debug_083F7FB7[] = _("\nFCNT:");
+static const u8 gUnknown_Debug_083F7FBE[] = _("\nSCNT:");
+static const u8 gUnknown_Debug_083F7FC5[] = _("\nHOOK:");
+static const u8 gUnknown_Debug_083F7FCC[] = _("\nWBIT:");
+static const u8 gUnknown_Debug_083F7FD3[] = _("");
+
+u8* DebugOpenBerryInfo(void)
+{
+ if (GetFieldObjectScriptPointerPlayerFacing() != S_BerryTree)
+ {
+ return NULL;
+ }
+ else
+ {
+ u32 berryTreeId = FieldObjectGetBerryTreeId(gSelectedMapObject);
+ struct BerryTree *berryTree = GetBerryTreeInfo(berryTreeId);
+ s32 i;
+
+ for (i = 0; i < 500; i++)
+ gStringVar4[i] = EOS;
+
+ debug_sub_80C33FC(gUnknown_Debug_083F7F9D, berryTreeId, 3);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FA2, berryTree->berry, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FA9, berryTree->stage, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FB0, berryTree->minutesUntilNextStage, 5);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FB7, berryTree->berryYield, 2);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FBE, berryTree->regrowthCount, 3);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FC5, berryTree->growthSparkle, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FCC, berryTree->watered1, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered2, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered3, 1);
+ debug_sub_80C33FC(gUnknown_Debug_083F7FD3, berryTree->watered4, 1);
+
+ return gStringVar4;
+ }
+}
+
+#endif
+
// whenever the player is not within view of the berry tree during its sparkle state, the
// sparkle state will be reset.
void ResetBerryTreeSparkleFlags(void)
diff --git a/src/scene/berry_blender.c b/src/berry_blender.c
index 2cb68ccf1..bf634a49f 100644
--- a/src/scene/berry_blender.c
+++ b/src/berry_blender.c
@@ -201,7 +201,6 @@ u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate);
void MenuCursor_SetPos814A880(u8 a1, u8 a2);
u8 MenuCursor_Create814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5);
s8 GetFirstFreePokeblockSlot(void);
-bool8 sub_810CA34(struct Pokeblock *pokeblock);
#ifdef GERMAN
extern void de_sub_8073110();
#endif
@@ -274,7 +273,7 @@ static void sub_8051B18(void);
static void sub_805123C(void);
static void sub_8050954(void);
static bool8 Blender_PrintBlendingRanking(void);
-static bool8 Blender_PrintBlendingResults(void);
+bool8 Blender_PrintBlendingResults(void);
static void sub_80510E8(void);
static void sub_8050E30(void);
static void sub_805197C(u16 a0, u16 a1);
@@ -2015,36 +2014,32 @@ s16 unref_sub_8050514(void)
return gUnknown_0300052E;
}
-#ifdef NONMATCHING
-
static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 maxRPM)
{
s32 i;
s32 j;
- s32 savedEntry;
s32 var3;
s32 var4;
- u32 var6;
- s32 var11;
- u16 rand;
+ s32 var6;
+ u8 r10;
for (i = 0; i < 6; i++)
gUnknown_03000510[i] = 0;
for (i = 0; i < playersNo; i++)
{
- for (j = 0; j < 5; j++)
+ for (j = 0; j < 6; j++)
gUnknown_03000510[j] += berries[i].flavours[j];
}
- savedEntry = gUnknown_03000510[0];
+ var6 = gUnknown_03000510[0];
gUnknown_03000510[0] -= gUnknown_03000510[1];
gUnknown_03000510[1] -= gUnknown_03000510[2];
gUnknown_03000510[2] -= gUnknown_03000510[3];
gUnknown_03000510[3] -= gUnknown_03000510[4];
- gUnknown_03000510[4] -= savedEntry;
+ gUnknown_03000510[4] -= var6;
var6 = 0;
- for (i = 0; i < 6; i++)
+ for (i = 0; i < 5; i++)
{
if (gUnknown_03000510[i] < 0)
{
@@ -2052,6 +2047,7 @@ static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Poke
var6++;
}
}
+ r10 = var6;
for (i = 0; i < 5; i++)
{
if (gUnknown_03000510[i] > 0)
@@ -2067,13 +2063,13 @@ static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Poke
gUnknown_03000530[i] = gUnknown_03000510[i];
}
- var11 = maxRPM / 333 + 100;
- gUnknown_0300055C = ((var11));
+ var6 = maxRPM / 333 + 100;
+ gUnknown_0300055C = var6;
for (i = 0; i < 5; i++)
{
var3 = gUnknown_03000510[i];
- var3 = ((var11) * var3) / 10;
+ var3 = (var3 * var6) / 10;
var4 = var3 % 10;
var3 /= 10;
if (var4 > 4)
@@ -2084,16 +2080,16 @@ static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Poke
{
gUnknown_03000548[i] = gUnknown_03000510[i];
}
- pokeblock->color = Blender_GetPokeblockColor(berries, &gUnknown_03000510[0], playersNo, var6);
+ pokeblock->color = Blender_GetPokeblockColor(berries, &gUnknown_03000510[0], playersNo, r10);
gUnknown_03000510[5] = (gUnknown_03000510[5] / playersNo) - playersNo;
if (gUnknown_03000510[5] < 0)
gUnknown_03000510[5] = 0;
if (pokeblock->color == 12)
{
- rand = Random() % 10;
- for (i = 0; i < 6; i++)
+ var6 = Random() % 10;
+ for (i = 0; i < 5; i++)
{
- if ((gUnknown_082165DF[rand] >> i) & 1)
+ if ((gUnknown_082165DF[var6] >> i) & 1)
gUnknown_03000510[i] = 2;
else
gUnknown_03000510[i] = 0;
@@ -2116,302 +2112,12 @@ static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Poke
}
}
-#else
-__attribute__((naked))
-static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* flavours, u16 a4)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- sub sp, 0x10\n\
- str r0, [sp]\n\
- mov r8, r1\n\
- str r3, [sp, 0x4]\n\
- ldr r0, [sp, 0x30]\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- mov r9, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x8]\n\
- ldr r7, _080505DC @ =gUnknown_03000510\n\
- adds r2, r7, 0\n\
- movs r1, 0\n\
- adds r0, r7, 0\n\
- adds r0, 0xA\n\
-_0805054A:\n\
- strh r1, [r0]\n\
- subs r0, 0x2\n\
- cmp r0, r2\n\
- bge _0805054A\n\
- movs r6, 0\n\
- cmp r6, r9\n\
- bge _08050580\n\
- ldr r0, _080505DC @ =gUnknown_03000510\n\
- mov r12, r0\n\
- ldr r5, [sp]\n\
- adds r5, 0x9\n\
-_08050560:\n\
- movs r3, 0\n\
- adds r4, r5, 0\n\
- mov r2, r12\n\
-_08050566:\n\
- adds r1, r4, r3\n\
- ldrh r0, [r2]\n\
- ldrb r1, [r1]\n\
- adds r0, r1\n\
- strh r0, [r2]\n\
- adds r2, 0x2\n\
- adds r3, 0x1\n\
- cmp r3, 0x5\n\
- ble _08050566\n\
- adds r5, 0x10\n\
- adds r6, 0x1\n\
- cmp r6, r9\n\
- blt _08050560\n\
-_08050580:\n\
- movs r1, 0\n\
- ldrsh r3, [r7, r1]\n\
- ldrh r0, [r7]\n\
- ldrh r1, [r7, 0x2]\n\
- subs r0, r1\n\
- strh r0, [r7]\n\
- ldrh r0, [r7, 0x4]\n\
- subs r1, r0\n\
- strh r1, [r7, 0x2]\n\
- ldrh r1, [r7, 0x6]\n\
- subs r0, r1\n\
- strh r0, [r7, 0x4]\n\
- ldrh r0, [r7, 0x8]\n\
- subs r1, r0\n\
- strh r1, [r7, 0x6]\n\
- subs r0, r3\n\
- strh r0, [r7, 0x8]\n\
- movs r3, 0\n\
- movs r2, 0\n\
- adds r1, r7, 0\n\
- movs r6, 0x4\n\
-_080505AA:\n\
- movs r4, 0\n\
- ldrsh r0, [r1, r4]\n\
- cmp r0, 0\n\
- bge _080505B6\n\
- strh r2, [r1]\n\
- adds r3, 0x1\n\
-_080505B6:\n\
- adds r1, 0x2\n\
- subs r6, 0x1\n\
- cmp r6, 0\n\
- bge _080505AA\n\
- lsls r0, r3, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- movs r4, 0\n\
- ldr r1, _080505DC @ =gUnknown_03000510\n\
- movs r6, 0x4\n\
-_080505CA:\n\
- ldrh r2, [r1]\n\
- movs r5, 0\n\
- ldrsh r0, [r1, r5]\n\
- cmp r0, 0\n\
- ble _080505E4\n\
- cmp r0, r3\n\
- bge _080505E0\n\
- strh r4, [r1]\n\
- b _080505E4\n\
- .align 2, 0\n\
-_080505DC: .4byte gUnknown_03000510\n\
-_080505E0:\n\
- subs r0, r2, r3\n\
- strh r0, [r1]\n\
-_080505E4:\n\
- adds r1, 0x2\n\
- subs r6, 0x1\n\
- cmp r6, 0\n\
- bge _080505CA\n\
- ldr r1, _080506C4 @ =gUnknown_03000510\n\
- ldr r2, _080506C8 @ =gUnknown_03000530\n\
- movs r6, 0x4\n\
-_080505F2:\n\
- movs r3, 0\n\
- ldrsh r0, [r1, r3]\n\
- stm r2!, {r0}\n\
- adds r1, 0x2\n\
- subs r6, 0x1\n\
- cmp r6, 0\n\
- bge _080505F2\n\
- ldr r1, _080506CC @ =0x0000014d\n\
- ldr r0, [sp, 0x8]\n\
- bl __udivsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- adds r3, r0, 0\n\
- adds r3, 0x64\n\
- ldr r4, _080506D0 @ =gUnknown_0300055C\n\
- str r3, [r4]\n\
- movs r6, 0x4\n\
-_08050616:\n\
- movs r0, 0\n\
- ldrsh r5, [r7, r0]\n\
- adds r0, r5, 0\n\
- muls r0, r3\n\
- movs r1, 0xA\n\
- str r3, [sp, 0xC]\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0xA\n\
- bl __modsi3\n\
- adds r4, r0, 0\n\
- adds r0, r5, 0\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- ldr r3, [sp, 0xC]\n\
- cmp r4, 0x4\n\
- ble _08050642\n\
- adds r5, 0x1\n\
-_08050642:\n\
- strh r5, [r7]\n\
- adds r7, 0x2\n\
- subs r6, 0x1\n\
- cmp r6, 0\n\
- bge _08050616\n\
- ldr r1, _080506C4 @ =gUnknown_03000510\n\
- ldr r2, _080506D4 @ =gUnknown_03000548\n\
- movs r6, 0x4\n\
-_08050652:\n\
- movs r3, 0\n\
- ldrsh r0, [r1, r3]\n\
- stm r2!, {r0}\n\
- adds r1, 0x2\n\
- subs r6, 0x1\n\
- cmp r6, 0\n\
- bge _08050652\n\
- ldr r4, _080506C4 @ =gUnknown_03000510\n\
- ldr r0, [sp]\n\
- adds r1, r4, 0\n\
- mov r2, r9\n\
- mov r3, r10\n\
- bl Blender_GetPokeblockColor\n\
- mov r5, r8\n\
- strb r0, [r5]\n\
- movs r1, 0xA\n\
- ldrsh r0, [r4, r1]\n\
- mov r1, r9\n\
- bl __divsi3\n\
- mov r3, r9\n\
- subs r0, r3\n\
- strh r0, [r4, 0xA]\n\
- lsls r0, 16\n\
- cmp r0, 0\n\
- bge _0805068C\n\
- movs r0, 0\n\
- strh r0, [r4, 0xA]\n\
-_0805068C:\n\
- mov r5, r8\n\
- ldrb r0, [r5]\n\
- cmp r0, 0xC\n\
- bne _080506E6\n\
- bl Random\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- movs r6, 0\n\
- ldr r0, _080506D8 @ =gUnknown_082165DF\n\
- adds r0, r3, r0\n\
- ldrb r0, [r0]\n\
- adds r1, r4, 0\n\
- movs r4, 0x1\n\
- movs r3, 0x2\n\
-_080506B4:\n\
- adds r2, r0, 0\n\
- asrs r2, r6\n\
- ands r2, r4\n\
- cmp r2, 0\n\
- beq _080506DC\n\
- strh r3, [r1]\n\
- b _080506DE\n\
- .align 2, 0\n\
-_080506C4: .4byte gUnknown_03000510\n\
-_080506C8: .4byte gUnknown_03000530\n\
-_080506CC: .4byte 0x0000014d\n\
-_080506D0: .4byte gUnknown_0300055C\n\
-_080506D4: .4byte gUnknown_03000548\n\
-_080506D8: .4byte gUnknown_082165DF\n\
-_080506DC:\n\
- strh r2, [r1]\n\
-_080506DE:\n\
- adds r1, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x4\n\
- ble _080506B4\n\
-_080506E6:\n\
- ldr r7, _08050740 @ =gUnknown_03000510\n\
- movs r2, 0xFF\n\
- adds r1, r7, 0\n\
- movs r6, 0x5\n\
-_080506EE:\n\
- movs r3, 0\n\
- ldrsh r0, [r1, r3]\n\
- cmp r0, 0xFF\n\
- ble _080506F8\n\
- strh r2, [r1]\n\
-_080506F8:\n\
- adds r1, 0x2\n\
- subs r6, 0x1\n\
- cmp r6, 0\n\
- bge _080506EE\n\
- ldrh r0, [r7]\n\
- mov r4, r8\n\
- strb r0, [r4, 0x1]\n\
- ldrh r0, [r7, 0x2]\n\
- strb r0, [r4, 0x2]\n\
- ldrh r0, [r7, 0x4]\n\
- strb r0, [r4, 0x3]\n\
- ldrh r0, [r7, 0x6]\n\
- strb r0, [r4, 0x4]\n\
- ldrh r0, [r7, 0x8]\n\
- strb r0, [r4, 0x5]\n\
- ldrh r0, [r7, 0xA]\n\
- strb r0, [r4, 0x6]\n\
- movs r6, 0\n\
- adds r2, r7, 0\n\
-_0805071E:\n\
- ldr r5, [sp, 0x4]\n\
- adds r1, r5, r6\n\
- ldrh r0, [r2]\n\
- strb r0, [r1]\n\
- adds r2, 0x2\n\
- adds r6, 0x1\n\
- cmp r6, 0x5\n\
- ble _0805071E\n\
- add sp, 0x10\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08050740: .4byte gUnknown_03000510\n\
- .syntax divided");
-}
-
-#endif // NONMATCHING
-
static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 a4)
{
Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4);
}
-static void sub_8050760(void)
+/*static*/ void sub_8050760(void)
{
u32 frames = (u16)(gBerryBlenderData->gameFrameTime);
u16 max_RPM = gBerryBlenderData->max_RPM;
@@ -3270,13 +2976,13 @@ static void sub_8051C04(struct Sprite* sprite)
sprite->pos2.y = -(gBerryBlenderData->field_146);
}
-static void Blender_TrySettingRecord(void)
+/*static*/ void Blender_TrySettingRecord(void)
{
if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM)
gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM;
}
-static bool8 Blender_PrintBlendingResults(void)
+bool8 Blender_PrintBlendingResults(void)
{
u16 i;
@@ -3395,6 +3101,11 @@ static bool8 Blender_PrintBlendingResults(void)
Blender_CalculatePokeblock(gBerryBlenderData->blendedBerries, &pokeblock, gBerryBlenderData->playersNo, flavours, gBerryBlenderData->max_RPM);
Blender_PrintMadePokeblockString(&pokeblock, gBerryBlenderData->stringVar);
CreateTask(sub_8052BD0, 6);
+#if DEBUG
+ ConvertIntToHexStringN(text[0], sub_8007E40(), 0, 4);
+ StringAppend(text[0], gUnknown_08216249);
+ StringAppend(gBerryBlenderData->stringVar, text[0]);
+#endif
MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15);
RemoveBagItem(gSpecialVar_ItemId, 1);
sub_810CA34(&pokeblock);
diff --git a/src/field/berry_tag_screen.c b/src/berry_tag_screen.c
index bb937ea43..9fbfd0681 100644
--- a/src/field/berry_tag_screen.c
+++ b/src/berry_tag_screen.c
@@ -2,7 +2,7 @@
#include "berry_tag_screen.h"
#include "berry.h"
#include "decompress.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "item_menu.h"
#include "constants/items.h"
#include "item_use.h"
@@ -42,7 +42,7 @@ extern u8 gBerryCheck_Pal[];
extern u8 gUnknown_08E788E4[];
extern u8 gUnknown_08E78A84[];
-static const u8 *const gUnknown_0841192C[] =
+const u8 *const gUnknown_0841192C[] =
{
ContestStatsText_VerySoft,
ContestStatsText_Soft,
diff --git a/src/field/bike.c b/src/bike.c
index 8db01b4b4..28439e6bb 100644
--- a/src/field/bike.c
+++ b/src/bike.c
@@ -1,6 +1,6 @@
#include "global.h"
#include "bike.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "constants/flags.h"
@@ -14,6 +14,11 @@ extern bool8 gBikeCyclingChallenge;
extern u8 gBikeCollisions;
extern u8 gUnusedBikeCameraAheadPanback;
+#if DEBUG
+extern u8 gUnknown_020297ED;
+u8 debug_sub_805F2B0(u8);
+#endif
+
static void MovePlayerOnMachBike(u8, u16, u16);
static u8 GetMachBikeTransition(u8 *);
static void MachBikeTransition_FaceDirection(u8);
@@ -134,6 +139,13 @@ void MovePlayerOnBike(u8 direction, u16 newKeys, u16 heldKeys)
static void MovePlayerOnMachBike(u8 direction, u16 newKeys, u16 heldKeys)
{
+#if DEBUG
+ if (gUnknown_020297ED && debug_sub_805F2B0(direction))
+ {
+ Bike_SetBikeStill();
+ return;
+ }
+#endif
sMachBikeTransitions[GetMachBikeTransition(&direction)](direction);
}
@@ -271,6 +283,14 @@ static void MachBikeTransition_TrySlowDown(u8 var)
// the acro bike requires the input handler to be executed before the transition can.
static void MovePlayerOnAcroBike(u8 newDirection, u16 newKeys, u16 heldKeys)
{
+#if DEBUG
+ if (gUnknown_020297ED && debug_sub_805F2B0(newDirection))
+ {
+ Bike_SetBikeStill();
+ return;
+ }
+#endif
+
sAcroBikeTransitions[CheckMovementInputAcroBike(&newDirection, newKeys, heldKeys)](newDirection);
}
diff --git a/src/field/birch_pc.c b/src/birch_pc.c
index 4b0025504..4b0025504 100644
--- a/src/field/birch_pc.c
+++ b/src/birch_pc.c
diff --git a/src/engine/blend_palette.c b/src/blend_palette.c
index 843c50ac1..843c50ac1 100644
--- a/src/engine/blend_palette.c
+++ b/src/blend_palette.c
diff --git a/src/field/braille_puzzles.c b/src/braille_puzzles.c
index f11fb5fb3..f11fb5fb3 100644
--- a/src/field/braille_puzzles.c
+++ b/src/braille_puzzles.c
diff --git a/src/scene/cable_car.c b/src/cable_car.c
index 7faa8d844..8c3f9885d 100644
--- a/src/scene/cable_car.c
+++ b/src/cable_car.c
@@ -6,6 +6,7 @@
#include "palette.h"
#include "random.h"
#include "main.h"
+#include "menu.h"
#include "script.h"
#include "task.h"
#include "sound.h"
@@ -13,25 +14,19 @@
#include "constants/songs.h"
#include "decompress.h"
#include "field_weather.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "scanline_effect.h"
#include "event_data.h"
#include "cable_car_util.h"
#include "constants/map_objects.h"
#include "constants/weather.h"
-// Static type declarations
+extern u8 (*gMenuCallback)(void);
-// Credits to Made (dolphin emoji)
-#define S16TOPOSFLOAT(val) \
-({ \
- s16 v = (val); \
- float f = (float)v; \
- if(v < 0) f += 65536.0f; \
- f; \
-})
+// Static type declarations
-struct CableCarEwramStruct1 {
+struct CableCarEwramStruct1
+{
u8 unk_0000;
u8 unk_0001;
u8 unk_0002;
@@ -63,7 +58,8 @@ struct CableCarEwramStruct1 {
u16 unk_08fc[0x20][0x20];
}; // size 0x10FC
-struct CableCarEwramStruct2 {
+struct CableCarEwramStruct2
+{
/* 0x000 */ u16 mtChimneyTilemap[0xb4];
/* 0x168 */ u16 treeTilemap[0x1e0];
/* 0x528 */ u16 mountainTilemap[0x258];
@@ -103,6 +99,31 @@ static void sub_81248AC(u8);
// .rodata
+#if DEBUG
+
+void debug_sub_8138D74(void);
+void debug_sub_8138D8C(void);
+u8 debug_sub_8138C14(void);
+u8 debug_sub_8138C34(void);
+u8 debug_sub_810CD9C(void);
+
+const u8 Str_842DBD0[] = _("CABLE CAR U");
+const u8 Str_842DBDC[] = _("CABLE CAR D");
+const u8 Str_842DBE8[] = _("ROULETTE1");
+const u8 Str_842DBF2[] = _("ROULETTE3");
+const u8 Str_842DBFC[] = _("View a MAIL");
+
+const struct MenuAction gUnkDebug4Menu[] =
+{
+ {Str_842DBD0, (u8 (*)(void))debug_sub_8138D74}, // why do these two functions have a different prototype?
+ {Str_842DBDC, (u8 (*)(void))debug_sub_8138D8C},
+ {Str_842DBE8, debug_sub_8138C14},
+ {Str_842DBF2, debug_sub_8138C34},
+ {Str_842DBFC, debug_sub_810CD9C},
+};
+
+#endif
+
static const u8 gCableCarMtChimneyTilemap[] = INCBIN_U8("graphics/misc/cable_car_mt_chimney_map.bin.lz");
static const u8 gCableCarTreeTilemap[] = INCBIN_U8("graphics/misc/cable_car_tree_map.bin.lz");
@@ -153,35 +174,93 @@ static const struct OamData gOamData_8401D38 = {
.priority = 2
};
-static const struct SpriteTemplate gSpriteTemplate_8401D40[] = {
- {
- 1,
- 1,
- &gOamData_8401D28,
- gDummySpriteAnimTable,
- NULL,
- gDummySpriteAffineAnimTable,
- sub_8123CB8
- }, {
- 2,
- 1,
- &gOamData_8401D30,
- gDummySpriteAnimTable,
- NULL,
- gDummySpriteAffineAnimTable,
- sub_8123CB8
- }, {
- 3,
- 1,
- &gOamData_8401D38,
- gDummySpriteAnimTable,
- NULL,
- gDummySpriteAffineAnimTable,
- nullsub_76
+static const struct SpriteTemplate gSpriteTemplate_8401D40[] =
+{
+ {
+ .tileTag = 1,
+ .paletteTag = 1,
+ .oam = &gOamData_8401D28,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8123CB8,
+ },
+ {
+ .tileTag = 2,
+ .paletteTag = 1,
+ .oam = &gOamData_8401D30,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8123CB8,
+ },
+ {
+ .tileTag = 3,
+ .paletteTag = 1,
+ .oam = &gOamData_8401D38,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = nullsub_76,
}
};
-// .text
+#if DEBUG
+
+extern u8 unk_203955C;
+
+extern const u8 MauvilleCity_GameCorner_EventScript_1C407E[];
+extern const u8 MauvilleCity_GameCorner_EventScript_1C40AC[];
+
+u8 debug_sub_8138C14(void)
+{
+ unk_203955C = 1;
+ ScriptContext1_SetupScript(MauvilleCity_GameCorner_EventScript_1C407E);
+ CloseMenu();
+ return 1;
+}
+
+u8 debug_sub_8138C34(void)
+{
+ unk_203955C = 1;
+ ScriptContext1_SetupScript(MauvilleCity_GameCorner_EventScript_1C40AC);
+ CloseMenu();
+ return 1;
+}
+
+u8 debug_sub_8138C54(void)
+{
+ if (gMain.newKeys == DPAD_UP)
+ Menu_MoveCursor(-1);
+ if (gMain.newKeys == DPAD_DOWN)
+ Menu_MoveCursor(1);
+ if (gMain.newKeys == A_BUTTON)
+ return gUnkDebug4Menu[Menu_GetCursorPos()].func();
+ if (gMain.newKeys == (R_BUTTON | A_BUTTON))
+ {
+ gSpecialVar_0x8004 = 1;
+ return gUnkDebug4Menu[Menu_GetCursorPos()].func();
+ }
+ if (gMain.newKeys == B_BUTTON)
+ {
+ CloseMenu();
+ return 1;
+ }
+ return 0;
+}
+
+u8 debug_sub_8138CC4(void)
+{
+ gSpecialVar_0x8004 = 0;
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(19, 0, 29, 12);
+ Menu_PrintItems(20, 1, 5, gUnkDebug4Menu);
+ InitMenu(0, 20, 1, 5, 0, 8);
+ gMenuCallback = debug_sub_8138C54;
+ return 0;
+}
+
+#endif
static void CableCarTask1(u8 taskId)
{
@@ -199,6 +278,24 @@ void CableCar(void)
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
}
+#if DEBUG
+
+void debug_sub_8138D74(void)
+{
+ gSpecialVar_0x8004 = 0;
+ CloseMenu();
+ CableCar();
+}
+
+void debug_sub_8138D8C(void)
+{
+ gSpecialVar_0x8004 = 1;
+ CloseMenu();
+ CableCar();
+}
+
+#endif
+
static void CableCarMainCallback_Setup(void)
{
u8 i;
diff --git a/src/engine/cable_car_util.c b/src/cable_car_util.c
index 02bfbc195..02bfbc195 100644
--- a/src/engine/cable_car_util.c
+++ b/src/cable_car_util.c
diff --git a/src/engine/cable_club.c b/src/cable_club.c
index e7c504c7b..0da23c5f3 100644
--- a/src/engine/cable_club.c
+++ b/src/cable_club.c
@@ -2,7 +2,9 @@
#include "battle.h"
#include "battle_records.h"
#include "cable_club.h"
+#include "event_data.h"
#include "field_message_box.h"
+#include "field_specials.h"
#include "field_weather.h"
#include "link.h"
#include "load_save.h"
@@ -21,15 +23,9 @@
#include "strings2.h"
#include "task.h"
#include "text.h"
+#include "trade.h"
#include "trainer_card.h"
-extern u16 gSpecialVar_Result;
-extern struct TrainerCard gTrainerCards[4];
-extern u8 gUnknown_03004860;
-extern u8 gFieldLinkPlayerCount;
-extern u16 gSpecialVar_0x8004;
-extern u16 gSpecialVar_0x8005;
-extern u16 gSpecialVar_0x8006;
extern u16 gBattleTypeFlags;
extern const u8 gUnknown_081A4932[];
extern const u8 gUnknown_081A4975[];
@@ -47,6 +43,7 @@ static void sub_8082FEC(u8 taskId);
static void sub_808303C(u8 taskId);
static void sub_80830E4(u8 taskId);
static void sub_8083188(u8 taskId);
+static void sub_80831F8(u8 taskId);
static void sub_8083288(u8 taskId);
static void sub_8083314(u8 taskId);
static void sub_80833C4(u8 taskId);
@@ -65,15 +62,9 @@ static void sub_8083AAC(u8 taskId);
static void sub_8083B44(u8 taskId);
static void sub_8083B6C(void);
static void sub_8083CA4(u8 taskId);
-
-extern void sub_80831F8(u8 taskId);
-extern void Overworld_ResetMapMusic(void);
-extern void sub_810FEFC(void);
-extern void sub_8047CD8(void);
-extern void sub_805559C(void);
-extern void sub_8055574(void);
-extern s32 sub_80554F8(void);
-extern void sub_805465C(void);
+#if DEBUG
+static u8 debug_sub_808B850(void);
+#endif
#ifdef GERMAN
const u8 TrainerCardColorName_Bronze[] = _("BRONZE");
@@ -95,14 +86,85 @@ const u8 *const gTrainerCardColorNames[] =
TrainerCardColorName_Gold,
};
+#if DEBUG
+u8 debug_sub_808A4D0(TaskFunc func)
+{
+ if (func == sub_8082F68)
+ return 1;
+ if (func == sub_8082FEC)
+ return 17;
+ if (func == sub_808303C)
+ return 18;
+ if (func == sub_8083188)
+ return 19;
+ if (func == sub_80830E4)
+ return 20;
+ if (func == sub_80831F8)
+ return 33;
+ if (func == sub_8083314)
+ return 2;
+ if (func == sub_80833C4)
+ return 3;
+ return 0;
+}
+
+void debug_sub_808A55C(u8 taskId)
+{
+ s32 i;
+
+ if (!gTasks[gTasks[taskId].data[0]].isActive)
+ {
+ if (gTasks[taskId].data[1] == 5)
+ DestroyTask(taskId);
+ gTasks[taskId].data[1]++;
+ }
+
+ PrintHex(gShouldAdvanceLinkState, 2, 0, 2);
+ PrintHex((u8)gBlockSendBuffer[0], 22, 5, 4);
+ for (i = 0; i < 4; i++)
+ {
+ PrintHex(gLinkPlayerPending[i], 5 + i * 2, 0, 1);
+ PrintHex(gBlockRecvBuffer[i][0], 22, 6 + i, 4);
+ }
+ PrintHex(gLinkStatus, 15, 0, 8);
+ PrintHex(gLink.state, 2, 10, 2);
+ PrintHex(GetMultiplayerId(), 7, 12, 2);
+ PrintHex(GetBlockReceivedStatus(), 7, 10, 2);
+ PrintHex(gReceivedRemoteLinkPlayers, 2, 12, 1);
+ PrintHex(gSpecialVar_Result, 11, 8, 2);
+ PrintHex((gLinkStatus & 0x1C) >> 2, 11, 10, 2);
+ PrintHex(IsLinkConnectionEstablished(), 11, 12, 1);
+ PrintHex(IsLinkTaskFinished(), 15, 10, 1);
+ PrintHex(debug_sub_808A4D0(gTasks[gTasks[taskId].data[0]].func), 15, 12, 2);
+ PrintHex((uintptr_t)gLinkCallback, 2, 13, 8);
+ PrintHex(HasLinkErrorOccurred(), 2, 2, 1);
+ for (i = 0; i < 4; i++)
+ PrintHex(gLinkPlayers[i].linkType, 2 + i * 6, 3, 4);
+ PrintHex(REG_SIOCNT, 2, 6, 4);
+ PrintHex(debug_sub_808B850(), 25, 3, 1);
+}
+#endif
+
static void sub_8082CD4(u8 arg0, u8 arg1)
{
+#if DEBUG
+ InitLinkTestBG_Unused(12, 0, 31, 2);
+#endif
if (FindTaskIdByFunc(sub_8082F20) == 0xFF)
{
- u8 taskId = CreateTask(sub_8082F20, 80);
+ u8 taskId1;
+#if DEBUG
+ u8 taskId2;
+#endif
- gTasks[taskId].data[1] = arg0;
- gTasks[taskId].data[2] = arg1;
+ taskId1 = CreateTask(sub_8082F20, 80);
+ gTasks[taskId1].data[1] = arg0;
+ gTasks[taskId1].data[2] = arg1;
+
+#if DEBUG
+ taskId2 = CreateTask(debug_sub_808A55C, 80);
+ gTasks[taskId2].data[0] = taskId1;
+#endif
}
}
@@ -349,7 +411,7 @@ static void sub_8083188(u8 taskId)
}
}
-void sub_80831F8(u8 taskId)
+static void sub_80831F8(u8 taskId)
{
u8 local1, local2;
@@ -360,6 +422,10 @@ void sub_80831F8(u8 taskId)
|| sub_8082DF4(taskId) == TRUE)
return;
+#if DEBUG
+ sub_8082D60(taskId, GetLinkPlayerCount_2());
+#endif
+
gSpecialVar_Result = sub_8082D9C(local1, local2);
if (gSpecialVar_Result == 0)
return;
@@ -908,6 +974,30 @@ void sub_8083C50(u8 taskId)
DestroyTask(taskId);
}
+#if DEBUG
+extern u16 unk_3004E94;
+extern u32 unk_3004E98;
+
+static void debug_sub_808B7A8(u8);
+
+void debug_sub_808B778(void)
+{
+ if (!FuncIsActiveTask(debug_sub_808B7A8))
+ CreateTask(debug_sub_808B7A8, 80);
+ unk_3004E98++;
+}
+
+static void debug_sub_808B7A8(u8 taskId)
+{
+ gTasks[taskId].data[0]++;
+ if (gTasks[taskId].data[0] == 30)
+ {
+ gTasks[taskId].data[0] = 0;
+ unk_3004E94 |= 1;
+ }
+}
+#endif
+
static void sub_8083CA4(u8 taskId)
{
if (!gReceivedRemoteLinkPlayers)
@@ -921,4 +1011,23 @@ void unref_sub_8083CC8(u8 taskId)
{
sub_800832C();
gTasks[taskId].func = sub_8083CA4;
-} \ No newline at end of file
+}
+
+#if DEBUG
+EWRAM_DATA static u8 unk_2030220 = 0;
+
+void debug_sub_808B82C(void)
+{
+ unk_2030220 = 0;
+}
+
+void debug_sub_808B838(u8 a)
+{
+ unk_2030220 |= 1 << a;
+}
+
+static u8 debug_sub_808B850(void)
+{
+ return unk_2030220;
+}
+#endif
diff --git a/src/field/choose_party.c b/src/choose_party.c
index 18d26f007..4766b2fbb 100644
--- a/src/field/choose_party.c
+++ b/src/choose_party.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "decoration.h"
+#include "event_data.h"
#include "field_fadetransition.h"
#include "main.h"
#include "menu.h"
@@ -7,6 +7,7 @@
#include "palette.h"
#include "party_menu.h"
#include "pokemon_menu.h"
+#include "field_weather.h"
#include "pokemon.h"
#include "pokemon_summary_screen.h"
#include "overworld.h"
@@ -22,7 +23,7 @@
extern u8 gPlayerPartyCount;
extern u8 gLastFieldPokeMenuOpened;
extern u8 gUnknown_020384F0;
-extern struct UnknownPokemonStruct2 gUnknown_02023A00[];
+extern struct UnknownPokemonStruct2 gUnknown_02023A00[3];
extern u8 gUnknown_0202E8F6;
extern struct Pokemon gUnknown_030042FC[];
extern const u16 gBattleTowerBannedSpecies[];
@@ -527,6 +528,34 @@ static void BattleTowerEntryMenuCallback_Exit(u8 taskId)
sub_81227FC(taskId);
}
+#if DEBUG
+
+void debug_sub_81381B4(void)
+{
+ u8 i;
+
+ memset(gUnknown_02023A00, 0, sizeof(gUnknown_02023A00));
+ for (i = 0; i < 3; i++)
+ {
+ gUnknown_02023A00[i].species = GetMonData(&gPlayerParty[3 + i], MON_DATA_SPECIES2);
+ if (gUnknown_02023A00[i].species != 0)
+ {
+ gUnknown_02023A00[i].level = GetMonData(&gPlayerParty[3 + i], MON_DATA_LEVEL);
+ gUnknown_02023A00[i].hp = GetMonData(&gPlayerParty[3 + i], MON_DATA_HP);
+ gUnknown_02023A00[i].maxhp = GetMonData(&gPlayerParty[3 + i], MON_DATA_MAX_HP);
+ gUnknown_02023A00[i].status = GetMonData(&gPlayerParty[3 + i], MON_DATA_STATUS);
+ gUnknown_02023A00[i].heldItem = GetMonData(&gPlayerParty[3 + i], MON_DATA_HELD_ITEM);
+ gUnknown_02023A00[i].personality = GetMonData(&gPlayerParty[3 + i], MON_DATA_PERSONALITY);
+ gUnknown_02023A00[i].gender = GetMonGender(&gPlayerParty[3 + i]);
+ GetMonData(&gPlayerParty[3 + i], MON_DATA_NICKNAME, gUnknown_02023A00[i].nickname);
+ Text_StripExtCtrlCodes(gUnknown_02023A00[i].nickname);
+ gUnknown_02023A00[i].language = GetMonData(&gPlayerParty[3 + i], MON_DATA_LANGUAGE);
+ }
+ }
+}
+
+#endif
+
bool8 SetupLinkMultiBattlePartyMenu(void)
{
switch (ewram1B000_alt.setupState)
diff --git a/src/engine/clear_save_data_menu.c b/src/clear_save_data_menu.c
index b6053715a..b6053715a 100644
--- a/src/engine/clear_save_data_menu.c
+++ b/src/clear_save_data_menu.c
diff --git a/src/engine/clock.c b/src/clock.c
index 416aaa6bb..fceccdfcb 100644
--- a/src/engine/clock.c
+++ b/src/clock.c
@@ -13,12 +13,11 @@
#include "tv.h"
#include "wallclock.h"
-static void InitTimeBasedEvents(void);
static void UpdatePerDay(struct Time *time);
static void UpdatePerMinute(struct Time *time);
static void ReturnFromStartWallClock(void);
-static void InitTimeBasedEvents(void)
+void InitTimeBasedEvents(void)
{
FlagSet(FLAG_SYS_CLOCK_SET);
RtcCalcLocalTime();
diff --git a/src/field/coins.c b/src/coins.c
index 2c217e635..2c217e635 100644
--- a/src/field/coins.c
+++ b/src/coins.c
diff --git a/src/contest.c b/src/contest.c
index 9c115840e..5cdaf7d09 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -33,6 +33,8 @@
#include "util.h"
#include "contest_ai.h"
+extern u8 gUnknown_020297ED;
+
extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool
extern void sub_80C8A38(u8);
extern void sub_80C8AD0(u8);
@@ -45,7 +47,7 @@ extern u16 gBattleTypeFlags;
extern u8 gBankAttacker;
extern u8 gBankTarget;
extern u8 gBanksBySide[];
-extern u8 gObjectBankIDs[];
+extern u8 gBankSpriteIds[];
extern struct Window gUnknown_03004210;
extern u32 gContestRngValue; // saved RNG value
@@ -226,6 +228,7 @@ void sub_80B0BC4(u8, bool8);
void sub_80B0C5C(struct Sprite *);
void sub_80B0CB0(struct Sprite *);
void sub_80B0CDC(u8, int);
+void unref_sub_80B0CF4(void);
void sub_80B0D7C(void);
void sub_80B1118(void);
void sub_80B114C(u8);
@@ -538,7 +541,7 @@ u8 sub_80AB70C(u8 *a)
gBattleTypeFlags = 0;
gBankAttacker = 2;
gBankTarget = 3;
- gObjectBankIDs[gBankAttacker] = CreateJudgeSprite();
+ gBankSpriteIds[gBankAttacker] = CreateJudgeSprite();
sub_80B292C();
break;
default:
@@ -600,6 +603,10 @@ void sub_80AB9A0(u8 taskId)
void ContestMainCallback2(void)
{
+#if DEBUG
+ if (gUnknown_020297ED == 1 && gMain.newKeys == 4)
+ unref_sub_80B0CF4();
+#endif
AnimateSprites();
RunTasks();
BuildOamBuffer();
@@ -719,6 +726,8 @@ void sub_80ABCDC(u8 taskId)
gTasks[taskId].func = sub_80ABEA0;
}
+void debug_sub_80B9EBC(u8);
+
// Handle move selection input
void sub_80ABEA0(u8 taskId)
{
@@ -791,10 +800,193 @@ void sub_80ABEA0(u8 taskId)
if (numMoves > 1)
PlaySE(SE_SELECT);
break;
+#if DEBUG
+ case START_BUTTON:
+ if (gUnknown_020297ED == 1 && !(gIsLinkContest & 1))
+ {
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = gContestMons[gContestPlayerMonIndex].moves[0];
+ gTasks[taskId].func = debug_sub_80B9EBC;
+ }
+ break;
+#endif
}
}
}
+#if DEBUG
+
+void debug_sub_80BA054(u8);
+
+void debug_sub_80B9EBC(u8 taskId)
+{
+ u8 text[100];
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ Text_FillWindowRectDefPalette(
+ &gUnknown_03004210,
+ 0,
+ gUnknown_083CA340[0][0],
+ gUnknown_083CA340[0][1],
+ gUnknown_083CA340[0][2],
+ gUnknown_083CA340[0][3]);
+ Text_InitWindowAndPrintText(
+ &gUnknown_03004210,
+ gMoveNames[gTasks[taskId].data[1]],
+ 776,
+ gUnknown_083CA340[0][0],
+ gUnknown_083CA340[0][1]);
+ ConvertIntToDecimalStringN(text, gTasks[taskId].data[1], 2, 3);
+ Text_InitWindowAndPrintText(
+ &gUnknown_03004210,
+ text,
+ 796,
+ gUnknown_083CA340[1][0],
+ gUnknown_083CA340[1][1]);
+ sub_80AED58();
+ sub_80AEBEC(gTasks[taskId].data[1]);
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ switch (gMain.newAndRepeatedKeys)
+ {
+ case 0x20:
+ gTasks[taskId].data[1] -= 1;
+ if (gTasks[taskId].data[1] < 1)
+ gTasks[taskId].data[1] = 354;
+ gTasks[taskId].data[0]--;
+ break;
+ case 0x200:
+ gTasks[taskId].data[1] -= 10;
+ if (gTasks[taskId].data[1] < 1)
+ gTasks[taskId].data[1] = 354;
+ gTasks[taskId].data[0]--;
+ break;
+ case 0x10:
+ gTasks[taskId].data[1] += 1;
+ if (gTasks[taskId].data[1] > 354)
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[0]--;
+ break;
+ case 0x100:
+ gTasks[taskId].data[1] += 10;
+ if (gTasks[taskId].data[1] > 354)
+ gTasks[taskId].data[1] = 1;
+ gTasks[taskId].data[0]--;
+ break;
+ case 4:
+ case 8:
+ gBattle_BG0_Y = 0;
+ gBattle_BG2_Y = 0;
+ sub_80B1BDC();
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = debug_sub_80BA054;
+ break;
+ case 2:
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
+ gContestMons[gContestPlayerMonIndex].moves[0] = gTasks[taskId].data[1];
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].func = sub_80ABCDC;
+ break;
+ }
+ break;
+ }
+}
+
+void debug_sub_80BA054(u8 taskId)
+{
+ s32 i;
+ u8 r6;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ for (i = 0; i < 4; i++)
+ gBattleMonForms[i] = 0;
+ memset(&shared19348, 0, sizeof(shared19348));
+ sub_80B28F0(gContestPlayerMonIndex);
+ r6 = sub_80AE9FC(
+ gContestMons[gContestPlayerMonIndex].species,
+ gContestMons[gContestPlayerMonIndex].otId,
+ gContestMons[gContestPlayerMonIndex].personality);
+ gSprites[r6].pos2.x = 120;
+ gSprites[r6].callback = sub_80AD8FC;
+ gTasks[taskId].data[2] = r6;
+ gBankSpriteIds[gBankAttacker] = r6;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[0]++;
+ sContest.unk1925E = 0;
+ break;
+ case 1:
+ r6 = gTasks[taskId].data[2];
+ if (gSprites[r6].callback == SpriteCallbackDummy)
+ {
+ sContestantStatus[gContestPlayerMonIndex].currMove = gTasks[taskId].data[1];
+ sub_80B2790(gContestPlayerMonIndex);
+ sub_80B28F0(gContestPlayerMonIndex);
+ SelectContestMoveBankTarget(gTasks[taskId].data[1]);
+ DoMoveAnim(gTasks[taskId].data[1]);
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 2:
+ gAnimScriptCallback();
+ if (!gAnimScriptActive)
+ {
+ sub_80B28CC(gContestPlayerMonIndex);
+ if (sContest.unk1925E != 0)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 20;
+ }
+ else
+ {
+ gTasks[taskId].data[0]++;
+ }
+ }
+ break;
+ case 3:
+ gTasks[taskId].data[3]++;
+ if (gTasks[taskId].data[3] == 21)
+ {
+ r6 = gTasks[taskId].data[2];
+ gSprites[r6].callback = sub_80AD92C;
+ sub_80B1B14();
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[0]++;
+ }
+ break;
+ case 4:
+ r6 = gTasks[taskId].data[2];
+ if (gSprites[r6].invisible)
+ {
+ FreeSpriteOamMatrix(&gSprites[r6]);
+ DestroySprite(&gSprites[r6]);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].func = debug_sub_80B9EBC;
+ gBattle_BG0_Y = DISPLAY_HEIGHT;
+ gBattle_BG2_Y = DISPLAY_HEIGHT;
+ }
+ break;
+ case 20:
+ if (gTasks[taskId].data[10]++ > 30)
+ {
+ gTasks[taskId].data[10] = 0;
+ gTasks[taskId].data[0] = 1;
+ }
+ break;
+ }
+}
+
+#endif
+
void sub_80AC0AC(s8 a)
{
MenuCursor_SetPos814A880(4, 88 + a * 16);
@@ -938,7 +1130,7 @@ void sub_80AC2CC(u8 taskId)
gSprites[spriteId].pos2.x = 120;
gSprites[spriteId].callback = sub_80AD8FC;
gTasks[taskId].data[2] = spriteId;
- gObjectBankIDs[gBankAttacker] = spriteId;
+ gBankSpriteIds[gBankAttacker] = spriteId;
sub_80B0BC4(sub_80B09E4(sContest.unk19215), FALSE);
gTasks[taskId].data[0] = 4;
return;
@@ -1941,7 +2133,7 @@ void Contest_CreatePlayerMon(u8 partyIndex)
else
gContestMons[gContestPlayerMonIndex].trainerGfxId = MAP_OBJ_GFX_LINK_MAY;
gContestMons[gContestPlayerMonIndex].flags = 0;
- gContestMons[gContestPlayerMonIndex].unk2C = 0;
+ gContestMons[gContestPlayerMonIndex].unk2C[0] = 0;
gContestMons[gContestPlayerMonIndex].species = GetMonData(&gPlayerParty[partyIndex], MON_DATA_SPECIES);
GetMonData(&gPlayerParty[partyIndex], MON_DATA_NICKNAME, name);
StringGetEnd10(name);
@@ -2008,7 +2200,7 @@ void Contest_CreatePlayerMon(u8 partyIndex)
gContestMons[gContestPlayerMonIndex].tough = tough;
}
-void Contest_InitAllPokemon(u8 a, u8 b)
+void Contest_InitAllPokemon(u8 contestType, u8 rank)
{
s32 i;
u8 opponentsCount = 0;
@@ -2019,17 +2211,17 @@ void Contest_InitAllPokemon(u8 a, u8 b)
// Find all suitable opponents
for (i = 0; i < 60; i++)
{
- if (b == gContestOpponents[i].unk1C_0)
+ if (rank == gContestOpponents[i].whichRank)
{
- if (a == 0 && gContestOpponents[i].unk1C_2)
+ if (contestType == 0 && gContestOpponents[i].aiPool_Cool)
opponents[opponentsCount++] = i;
- else if (a == 1 && gContestOpponents[i].unk1C_3)
+ else if (contestType == 1 && gContestOpponents[i].aiPool_Beauty)
opponents[opponentsCount++] = i;
- else if (a == 2 && gContestOpponents[i].unk1C_4)
+ else if (contestType == 2 && gContestOpponents[i].aiPool_Cute)
opponents[opponentsCount++] = i;
- else if (a == 3 && gContestOpponents[i].unk1C_5)
+ else if (contestType == 3 && gContestOpponents[i].aiPool_Smart)
opponents[opponentsCount++] = i;
- else if (a == 4 && gContestOpponents[i].unk1C_6)
+ else if (contestType == 4 && gContestOpponents[i].aiPool_Tough)
opponents[opponentsCount++] = i;
}
}
@@ -5207,14 +5399,14 @@ void sub_80B28F0(u8 a)
void sub_80B292C(void)
{
- gObjectBankIDs[3] = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
- InitSpriteAffineAnim(&gSprites[gObjectBankIDs[gBankTarget]]);
+ gBankSpriteIds[3] = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
+ InitSpriteAffineAnim(&gSprites[gBankSpriteIds[gBankTarget]]);
sub_80B2968();
}
void sub_80B2968(void)
{
- struct Sprite *sprite = &gSprites[gObjectBankIDs[3]];
+ struct Sprite *sprite = &gSprites[gBankSpriteIds[3]];
sprite->pos2.x = 0;
sprite->pos2.y = 0;
diff --git a/src/scene/contest_painting.c b/src/contest_painting.c
index 0aa02312f..0aa02312f 100644
--- a/src/scene/contest_painting.c
+++ b/src/contest_painting.c
diff --git a/src/field/coord_event_weather.c b/src/coord_event_weather.c
index 60b87fa30..60b87fa30 100644
--- a/src/field/coord_event_weather.c
+++ b/src/coord_event_weather.c
diff --git a/src/scene/credits.c b/src/credits.c
index e31e2c797..9a85265e4 100644
--- a/src/scene/credits.c
+++ b/src/credits.c
@@ -246,9 +246,9 @@ const u8 gUnknown_0840B878[] =
};
#ifdef GERMAN
-#include "../data/credits_de.h"
+#include "data/credits_de.h"
#else
-#include "../data/credits_en.h"
+#include "data/credits_en.h"
#endif
const u8 gUnknown_0840CA00[][2] =
diff --git a/src/scene/cute_sketch.c b/src/cute_sketch.c
index 5317bc334..5317bc334 100644
--- a/src/scene/cute_sketch.c
+++ b/src/cute_sketch.c
diff --git a/src/data/battle_tower/trainers.h b/src/data/battle_tower/trainers.h
index ae204f8ea..4d555fbb0 100644
--- a/src/data/battle_tower/trainers.h
+++ b/src/data/battle_tower/trainers.h
@@ -1,1503 +1,1303 @@
const struct BattleTowerTrainer gBattleTowerTrainers[] =
{
- {
- .trainerClass = FACILITY_CLASS_YOUNGSTER,
- .name = _("ALVIN"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_READY,
- EC_WORD_QUES,
- EC_WORD_HERE_I_COME,
- EC_WORD_EXCL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BIRD_KEEPER,
- .name = _("DIRK"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_OKAY,
- EC_WORD_I_AM,
- EC_WORD_GOING,
- EC_WORD_FOR,
- EC_WORD_IT,
- EC_WORD_EXCL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_LADY,
- .name = _("CYBIL"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU_RE,
- EC_WORD_A,
- EC_WORD_PUSHOVER,
- EC_WORD_LET_S,
- EC_WORD_GET,
- EC_WORD_GOING,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BLACK_BELT,
- .name = _("CHEN"),
- .teamFlags = 0x05,
- .greeting = {
- .easyChat = {
- EC_WORD_MY,
- EC_WORD_SPIRIT,
- EC_WORD_IS,
- EC_WORD_ENOUGH,
- EC_WORD_SNORT,
- EC_WORD_ARRGH,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_NINJA_BOY,
- .name = _("YOSHI"),
- .teamFlags = 0x05,
- .greeting = {
- .easyChat = {
- EC_WORD_GO,
- EC_WORD_MY,
- EC_WORD_POKEMON,
- EC_WORD_FIGHT,
- EC_WORD_THE,
- EC_WORD_BATTLE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SCHOOL_KID_F,
- .name = _("TINA"),
- .teamFlags = 0x0A,
- .greeting = {
- .easyChat = {
- EC_WORD_STUDY,
- EC_WORD_IS,
- EC_WORD_BORING,
- EC_WORD_LET_S,
- EC_WORD_BATTLE,
- EC_WORD_NOW,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BUG_MANIAC,
- .name = _("COREY"),
- .teamFlags = 0x41,
- .greeting = {
- .easyChat = {
- EC_WORD_HEY,
- EC_WORD_I,
- EC_WORD_WILL,
- EC_MOVE2(TRANSFORM),
- EC_WORD_FOR,
- EC_MOVE(STRENGTH),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_FISHERMAN,
- .name = _("GORDON"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_NEED,
- EC_WORD_A,
- EC_WORD_VACATION,
- EC_WORD_RIGHT,
- EC_WORD_NOW,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_TUBER_F,
- .name = _("ANN"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_WE,
- EC_WORD_ALL,
- EC_WORD_ADORE,
- EC_WORD_POKEMON,
- EC_WORD_ABSOLUTELY,
- EC_WORD_TRULY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEFAN_F,
- .name = _("JULIA"),
- .teamFlags = 0x42,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_A,
- EC_WORD_CUTE,
- EC_WORD_LADY,
- EC_WORD_YES,
- EC_WORD_I_AM,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GENTLEMAN,
- .name = _("GREGORY"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_THINK,
- EC_WORD_WE,
- EC_WORD_SHOULD,
- EC_WORD_START,
- EC_WORD_TODAY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CAMPER,
- .name = _("KEITH"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU_RE,
- EC_WORD_MY,
- EC_WORD_FRIEND,
- EC_WORD_FROM,
- EC_WORD_NOW,
- EC_WORD_ON,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
- .name = _("KENDRA"),
- .teamFlags = 0x0A,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_MOVE(SWIFT),
- EC_WORD_HOW,
- EC_WORD_ABOUT,
- EC_WORD_YOU,
- EC_WORD_QUES,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_HIKER,
- .name = _("DEV"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_WAHAHAHA,
- EC_WORD_I_AM,
- EC_WORD_FEELING,
- EC_WORD_LIKE,
- EC_WORD_IT_S,
- EC_MOVE2(PAY_DAY),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
- .name = _("CASSIE"),
- .teamFlags = 0x0A,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU_RE,
- EC_WORD_STRONG,
- EC_WORD_AREN_T,
- 0xFFFF,
- EC_WORD_YOU,
- EC_WORD_QUES,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PSYCHIC_M,
- .name = _("JULIAN"),
- .teamFlags = 0x05,
- .greeting = {
- .easyChat = {
- EC_WORD_FUFUFU,
- 0xFFFF,
- EC_WORD_YOU,
- EC_WORD_CAN_T,
- EC_WORD_WIN,
- EC_WORD_KID,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_LASS,
- .name = _("JOYCE"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_BE,
- EC_WORD_KIND,
- EC_WORD_TO,
- EC_WORD_THE,
- EC_WORD_DIGITAL,
- EC_WORD_IDOL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GUITARIST,
- .name = _("LES"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_GREAT,
- EC_WORD_YOU_RE,
- EC_WORD_JUST,
- EC_WORD_RATHER,
- EC_WORD_OKAY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RICH_BOY,
- .name = _("CLINTON"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_HAVE,
- EC_WORD_ROUGH_SKIN,
- EC_WORD_I,
- EC_WORD_NEED,
- EC_WORD_NATURAL_CURE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BUG_CATCHER,
- .name = _("LEWIS"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_THIS,
- EC_WORD_IS,
- EC_WORD_EXCITING,
- EC_WORD_CAN,
- EC_WORD_I,
- EC_WORD_WIN,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PICNICKER,
- .name = _("RACHAEL"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_LIKE,
- EC_WORD_WALKING,
- EC_WORD_WITH,
- EC_WORD_MY,
- EC_WORD_POKEMON,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COLLECTOR,
- .name = _("HAROLD"),
- .teamFlags = 0x09,
- .greeting = {
- .easyChat = {
- EC_WORD_HERE,
- EC_WORD_THEY,
- EC_WORD_COME,
- EC_WORD_MY,
- EC_MOVE2(SUPERPOWER),
- EC_WORD_POKEMON,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_TUBER_M,
- .name = _("KIPP"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_A,
- EC_WORD_GENIUS,
- EC_WORD_I,
- EC_WORD_SHOULD,
- EC_WORD_WIN,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_KINDLER,
- .name = _("IRWIN"),
- .teamFlags = 0x05,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU,
- EC_WORD_WILL,
- EC_WORD_BE,
- EC_WORD_FEELING,
- EC_WORD_MY,
- EC_WORD_FIRE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PSYCHIC_F,
- .name = _("EILEEN"),
- .teamFlags = 0x0A,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_WILL,
- EC_MOVE(ASTONISH),
- EC_WORD_YOU,
- EC_WORD_IN,
- EC_WORD_BATTLE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMER_F,
- .name = _("ANNE"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_SORRY,
- EC_WORD_BUT,
- EC_WORD_YOU,
- EC_WORD_WILL,
- EC_WORD_NOT,
- EC_WORD_WIN,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
- .name = _("RUTH"),
- .teamFlags = 0x06,
- .greeting = {
- .easyChat = {
- EC_WORD_A,
- EC_WORD_STRONG,
- EC_WORD_GIRL,
- EC_WORD_WANTS,
- EC_WORD_TOUGH,
- EC_WORD_POKEMON,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMANIAC,
- .name = _("JEREMY"),
- .teamFlags = 0x40,
- .greeting = {
- .easyChat = {
- EC_WORD_MY,
- EC_WORD_POKEMON,
- EC_WORD_ARE,
- EC_WORD_COOL,
- EC_WORD_YOURS,
- EC_WORD_CAN_T_WIN,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SAILOR,
- .name = _("TREVOR"),
- .teamFlags = 0x09,
- .greeting = {
- .easyChat = {
- EC_WORD_MY,
- EC_WORD_OPPONENT,
- EC_WORD_IS,
- EC_WORD_FINALLY,
- EC_WORD_HERE,
- EC_WORD_EXCELLENT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F,
- .name = _("COLETTE"),
- .teamFlags = 0x06,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_AM,
- EC_WORD_HUNGRY,
- EC_MOVE2(POUND),
- EC_WORD_MY,
- EC_MOVE2(BELLY_DRUM),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_HEX_MANIAC,
- .name = _("PAULA"),
- .teamFlags = 0x42,
- .greeting = {
- .easyChat = {
- EC_WORD_IT_S,
- EC_WORD_HARD,
- EC_WORD_TO,
- EC_WORD_TAKE,
- EC_WORD_UGLY,
- EC_MOVE(SPITE),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUIN_MANIAC,
- .name = _("STANLY"),
- .teamFlags = 0x41,
- .greeting = {
- .easyChat = {
- EC_WORD_ADVENTURE,
- EC_WORD_AND,
- EC_WORD_BATTLE,
- EC_WORD_ARE,
- EC_WORD_MY,
- EC_WORD_LIKES,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
- .name = _("TROY"),
- .teamFlags = 0x09,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU,
- EC_WORD_CAN_T,
- EC_WORD_LOSE,
- EC_WORD_TO,
- EC_WORD_A,
- EC_WORD_KID,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SCHOOL_KID_M,
- .name = _("ED"),
- .teamFlags = 0x08,
- .greeting = {
- .easyChat = {
- EC_WORD_POKEMON,
- EC_WORD_DAILY,
- EC_WORD_AT,
- EC_WORD_SCHOOL,
- EC_WORD_IT_S,
- EC_WORD_AWESOME,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F,
- .name = _("ELLEN"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_KIND,
- EC_WORD_TO,
- EC_WORD_YOUR,
- EC_WORD_POKEMON,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMER_M,
- .name = _("ARNIE"),
- .teamFlags = 0x09,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_BATTLE,
- EC_WORD_SERIOUSLY,
- EC_WORD_BEAUTIFUL,
- EC_WORD_YOU,
- EC_MOVE(DIG),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
- .name = _("HAL"),
- .teamFlags = 0x09,
- .greeting = {
- .easyChat = {
- EC_WORD_BOY,
- EC_WORD_I_AM,
- EC_WORD_TIRED,
- EC_WORD_READY,
- EC_WORD_FOR,
- EC_WORD_SLEEP,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BEAUTY,
- .name = _("LAUREN"),
- .teamFlags = 0x06,
- .greeting = {
- .easyChat = {
- EC_WORD_A,
- EC_WORD_TRAINER,
- EC_WORD_LIKE,
- EC_WORD_YOU,
- EC_WORD_IS,
- EC_WORD_EXCITING,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_AROMA_LADY,
- .name = _("STACY"),
- .teamFlags = 0x06,
- .greeting = {
- .easyChat = {
- EC_WORD_HAVE,
- EC_WORD_YOU,
- EC_WORD_A,
- EC_WORD_STENCH,
- EC_WORD_OR,
- EC_MOVE(SWEET_SCENT),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COLLECTOR,
- .name = _("DARYL"),
- .teamFlags = 0x81,
- .greeting = {
- .easyChat = {
- EC_WORD_YOUR,
- EC_WORD_POKEMON,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_I,
- EC_WORD_WANT,
- EC_WORD_IT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
- .name = _("KATHY"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_WILL,
- EC_WORD_TRY,
- EC_WORD_MY,
- EC_WORD_BEST,
- EC_WORD_TODAY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M,
- .name = _("HARRIS"),
- .teamFlags = 0x0C,
- .greeting = {
- .easyChat = {
- EC_WORD_WAAAH,
- EC_WORD_WAAAH,
- EC_WORD_WAAAH,
- EC_WORD_WAAAH,
- EC_WORD_EHEHE,
- EC_MOVE(FAKE_TEARS),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEFAN_M,
- .name = _("GLENN"),
- .teamFlags = 0x80,
- .greeting = {
- .easyChat = {
- EC_WORD_LISTEN,
- EC_WORD_TO,
- EC_WORD_MY,
- EC_WORD_LOUSY,
- EC_WORD_ANIME,
- EC_WORD_SONG,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
- .name = _("NICO"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_DON_T,
- EC_WORD_JUST,
- EC_WORD_BATTLE,
- EC_WORD_DO,
- EC_WORD_SOMETHING,
- EC_WORD_ELSE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M,
- .name = _("BAILEY"),
- .teamFlags = 0x41,
- .greeting = {
- .easyChat = {
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_BUSY,
- EC_WORD_GET,
- EC_WORD_WITH,
- EC_WORD_IT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PARASOL_LADY,
- .name = _("ABBIE"),
- .teamFlags = 0x08,
- .greeting = {
- .easyChat = {
- EC_WORD_THE,
- EC_MOVE(MORNING_SUN),
- EC_WORD_HAS,
- EC_WORD_SO,
- EC_WORD_MUCH,
- EC_MOVE(COSMIC_POWER),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CAMPER,
- .name = _("AL"),
- .teamFlags = 0x0C,
- .greeting = {
- .easyChat = {
- EC_WORD_LET_S,
- EC_WORD_HAVE,
- EC_WORD_AN,
- EC_WORD_EXCITING,
- EC_WORD_BATTLE,
- EC_WORD_YEEHAW_EXCL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SCHOOL_KID_F,
- .name = _("PEGGY"),
- .teamFlags = 0x42,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_WANT,
- EC_WORD_TO,
- EC_WORD_SEE,
- EC_WORD_SOME,
- EC_MOVE(GROWTH),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BEAUTY,
- .name = _("NAOMI"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_IT,
- EC_WORD_WAS,
- EC_WORD_GREAT,
- EC_WORD_TO,
- EC_WORD_BE,
- EC_WORD_YOUNG,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_NINJA_BOY,
- .name = _("KENJI"),
- .teamFlags = 0x0C,
- .greeting = {
- .easyChat = {
- EC_WORD_PLEASE,
- 0xFFFF,
- EC_WORD_DON_T,
- EC_WORD_BE,
- EC_WORD_MEAN,
- EC_WORD_TO_ME,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
- .name = _("ROSS"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_WAKE_UP,
- EC_WORD_MY,
- EC_MOVE2(HIDDEN_POWER),
- EC_WORD_AND,
- EC_MOVE(ASTONISH),
- EC_WORD_ME,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F,
- .name = _("EDNA"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_BATTLE_TOWER,
- EC_WORD_IS,
- EC_WORD_SO,
- EC_WORD_ENTERTAINING,
- EC_WORD_IT_S,
- EC_WORD_AWESOME,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUIN_MANIAC,
- .name = _("ANTON"),
- .teamFlags = 0x41,
- .greeting = {
- .easyChat = {
- EC_WORD_BLEND,
- EC_WORD_THICK_FAT,
- EC_WORD_AND,
- EC_WORD_CHLOROPHYLL,
- EC_WORD_IT_S,
- EC_WORD_TASTY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMER_M,
- .name = _("MITCH"),
- .teamFlags = 0x81,
- .greeting = {
- .easyChat = {
- EC_WORD_NEXT,
- EC_WORD_A,
- EC_WORD_GIRL,
- EC_WORD_WITH,
- EC_WORD_A,
- EC_MOVE(SCARY_FACE),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_HEX_MANIAC,
- .name = _("ROD"),
- .teamFlags = 0x42,
- .greeting = {
- .easyChat = {
- EC_WORD_GIMME,
- EC_WORD_A,
- EC_WORD_TOUGH,
- EC_WORD_BATTLE,
- EC_WORD_NOT,
- EC_WORD_WIMPY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
- .name = _("RICH"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_TASTY,
- EC_WORD_WATER,
- EC_WORD_IS,
- EC_WORD_HIP_AND,
- EC_WORD_HAPPENING,
- EC_WORD_YES_SIR_EXCL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEFAN_M,
- .name = _("DANIEL"),
- .teamFlags = 0x80,
- .greeting = {
- .easyChat = {
- EC_WORD_GO,
- EC_WORD_FOR,
- EC_WORD_IT,
- EC_WORD_MY,
- EC_WORD_LOVEY_DOVEY,
- EC_WORD_POKEMON,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PSYCHIC_F,
- .name = _("GLORIA"),
- .teamFlags = 0x82,
- .greeting = {
- .easyChat = {
- EC_WORD_LET_S,
- EC_WORD_GET,
- EC_WORD_THIS,
- EC_WORD_FIERY,
- EC_WORD_BATTLE,
- EC_WORD_HAPPENING,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GUITARIST,
- .name = _("NELSON"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_MUSIC,
- EC_WORD_IS,
- EC_WORD_MY,
- EC_WORD_ALL,
- EC_WORD_MY,
- EC_WORD_DESTINY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_KINDLER,
- .name = _("FERRIS"),
- .teamFlags = 0x41,
- .greeting = {
- .easyChat = {
- EC_WORD_GOOD,
- EC_WORD_IT,
- EC_WORD_IS,
- EC_WORD_SO,
- EC_WORD_VERY,
- EC_WORD_GOOD,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_AROMA_LADY,
- .name = _("AMANDA"),
- .teamFlags = 0x82,
- .greeting = {
- .easyChat = {
- EC_WORD_WHAT,
- EC_WORD_KIND,
- EC_WORD_OF,
- EC_WORD_TRAINER,
- EC_WORD_ARE,
- EC_WORD_YOU,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
- .name = _("MASON"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_DON_T,
- EC_WORD_KNOW,
- EC_WORD_HOW,
- EC_WORD_TO,
- EC_WORD_LOSE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_DRAGON_TAMER,
- .name = _("NATE"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_DRAGON,
- EC_WORD_POKEMON,
- EC_WORD_ARE,
- EC_WORD_ALL,
- EC_WORD_THE,
- EC_MOVE(RAGE),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_LASS,
- .name = _("MIRIAM"),
- .teamFlags = 0x82,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU_RE,
- EC_WORD_TOO_STRONG,
- EC_WORD_SERIOUSLY,
- EC_WORD_IT_S,
- EC_WORD_BAD,
- EC_WORD_NEWS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMANIAC,
- .name = _("THEO"),
- .teamFlags = 0x40,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_ADORE,
- EC_WORD_MY,
- EC_WORD_MEGA,
- EC_WORD_CUTE,
- EC_WORD_PLUSH_DOLL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
- .name = _("PAMELA"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_HERE_I_COME,
- EC_WORD_I_AM,
- EC_WORD_THE,
- EC_WORD_CUTE,
- EC_MOVE2(WATER_SPORT),
- EC_WORD_IDOL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEFAN_F,
- .name = _("ALISSA"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_IT_S,
- EC_WORD_A,
- EC_WORD_PREPOSTEROUS,
- EC_WORD_MATCH,
- EC_WORD_I_AM,
- EC_WORD_SHOCKED,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GENTLEMAN,
- .name = _("ARTHUR"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_PLEASE,
- EC_WORD_GIVE,
- EC_WORD_ME,
- EC_WORD_A,
- EC_WORD_GOOD,
- EC_WORD_BATTLE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMER_F,
- .name = _("MARCY"),
- .teamFlags = 0x82,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_BEAUTIFUL,
- EC_WORD_YOU,
- EC_WORD_CAN_T,
- EC_WORD_BEAT,
- EC_WORD_ME,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COOL_TRAINER_M,
- .name = _("MILLER"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_BATTLE,
- EC_WORD_DAILY,
- EC_WORD_I,
- EC_WORD_WON_T,
- EC_WORD_LOSE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BIRD_KEEPER,
- .name = _("OLIVER"),
- .teamFlags = 0x11,
- .greeting = {
- .easyChat = {
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_GIGGLE,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- 0xFFFF,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
- .name = _("MOLLY"),
- .teamFlags = 0x12,
- .greeting = {
- .easyChat = {
- EC_WORD_HOW,
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_ON,
- EC_WORD_MONDAY,
- EC_WORD_MORNING,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BUG_MANIAC,
- .name = _("JASON"),
- .teamFlags = 0x40,
- .greeting = {
- .easyChat = {
- EC_WORD_WATER,
- EC_WORD_AND,
- EC_WORD_BUG,
- EC_WORD_POKEMON,
- EC_WORD_ARE,
- EC_WORD_GREAT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
- .name = _("AVA"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_WHAT,
- EC_WORD_IS,
- EC_WORD_THIS,
- EC_WORD_PRESSURE,
- EC_WORD_ELLIPSIS,
- EC_WORD_STATIC,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_FISHERMAN,
- .name = _("HANK"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU_RE,
- EC_WORD_A,
- EC_WORD_KID,
- EC_WORD_YOU,
- EC_WORD_CAN_T,
- EC_WORD_WIN,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SAILOR,
- .name = _("PETER"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_IT_S,
- EC_WORD_SERIOUSLY,
- EC_WORD_TERRIBLE,
- EC_WORD_I,
- EC_WORD_REALLY,
- EC_WORD_THINK,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_EXPERT_F,
- .name = _("MINDY"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU,
- EC_WORD_APPEAR,
- EC_WORD_TO,
- EC_WORD_TRAIN,
- EC_WORD_VERY,
- EC_WORD_WELL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BUG_MANIAC,
- .name = _("DWIGHT"),
- .teamFlags = 0x11,
- .greeting = {
- .easyChat = {
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_STRONG,
- EC_WORD_YOU,
- EC_WORD_ARE,
- EC_WORD_SCARY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F,
- .name = _("REENA"),
- .teamFlags = 0x12,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_ALWAYS,
- EC_WORD_LOSE,
- EC_WORD_MAYBE,
- EC_WORD_TODAY,
- EC_WORD_ELLIPSIS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PARASOL_LADY,
- .name = _("MEGAN"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_DON_T,
- EC_WORD_MAKE,
- EC_WORD_THAT,
- EC_MOVE(SCARY_FACE),
- EC_WORD_AT,
- EC_WORD_ME,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
- .name = _("SIERRA"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_I_VE,
- EC_WORD_RUN,
- EC_WORD_A_LOT,
- EC_WORD_SO,
- EC_WORD_I_AM,
- EC_WORD_HEALTHY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M,
- .name = _("ARNOLD"),
- .teamFlags = 0x08,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_FEELING,
- EC_WORD_AWESOME,
- EC_WORD_MY,
- EC_WORD_POKEMON,
- EC_WORD_ROCK,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BLACK_BELT,
- .name = _("XIN"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_HOO_HAH,
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_READY,
- EC_WORD_TO,
- EC_WORD_ROCK,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COOL_TRAINER_F,
- .name = _("KELLY"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU,
- EC_WORD_COULDN_T,
- EC_WORD_BEAT,
- EC_WORD_ME,
- EC_WORD_EVER,
- EC_WORD_KID,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COLLECTOR,
- .name = _("VANCE"),
- .teamFlags = 0x80,
- .greeting = {
- .easyChat = {
- EC_WORD_POKEMON,
- EC_WORD_ALL,
- EC_WORD_OVER,
- EC_WORD_THE,
- EC_WORD_PLACE,
- EC_WORD_WOWEE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
- .name = _("TOBY"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_THIS,
- EC_WORD_ISN_T,
- EC_WORD_SPORTS,
- EC_WORD_IT_S,
- EC_WORD_A,
- EC_WORD_BATTLE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GENTLEMAN,
- .name = _("NORTON"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_HAVE,
- EC_WORD_TO,
- EC_WORD_WIN,
- EC_WORD_PLEASE,
- EC_WORD_LOSE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
- .name = _("ZOE"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_THIS,
- EC_WORD_IS,
- EC_WORD_SCARY,
- EC_WORD_PLEASE,
- EC_WORD_BE,
- EC_WORD_NICE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BEAUTY,
- .name = _("EMMA"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_DON_T,
- EC_WORD_YOU,
- EC_MOVE(FLAIL),
- EC_WORD_YOU,
- EC_WORD_CAN_T,
- EC_MOVE(WITHDRAW),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_HIKER,
- .name = _("VINCE"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_YAHOO,
- EC_WORD_YAHOO,
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_LISTENING,
- EC_WORD_QUES,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_EXPERT_M,
- .name = _("MARV"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_LEARN,
- EC_WORD_TO,
- EC_WORD_BATTLE,
- EC_WORD_THE,
- EC_WORD_CORRECT,
- EC_WORD_WAY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M,
- .name = _("TODD"),
- .teamFlags = 0x40,
- .greeting = {
- .easyChat = {
- EC_WORD_THE,
- EC_WORD_WAY,
- EC_WORD_YOU,
- EC_WORD_BATTLE,
- EC_WORD_IT_S,
- EC_WORD_CHILD_S_PLAY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GUITARIST,
- .name = _("GAVIN"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_BABY,
- EC_WORD_BABY,
- EC_WORD_BABY,
- EC_WORD_ROCK,
- EC_WORD_ME,
- EC_WORD_HARD,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PSYCHIC_M,
- .name = _("QUINN"),
- .teamFlags = 0x08,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_HAVE,
- EC_WORD_A,
- EC_WORD_STICKY_HOLD,
- EC_WORD_ON,
- EC_WORD_YOU,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COOL_TRAINER_F,
- .name = _("JENN"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_ON,
- EC_WORD_A,
- EC_WORD_TOUGH,
- EC_WORD_TRAINER,
- EC_WORD_SEARCH,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_EXPERT_M,
- .name = _("JOEL"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_BELIEVE,
- EC_WORD_IN,
- EC_WORD_YOUR,
- EC_WORD_POKEMON,
- EC_WORD_AND,
- EC_WORD_WIN,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_DRAGON_TAMER,
- .name = _("KYLE"),
- .teamFlags = 0x0C,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_LIKE,
- EC_WORD_A,
- EC_WORD_GIRL,
- EC_WORD_WITH,
- EC_MOVE2(FORESIGHT),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COOL_TRAINER_M,
- .name = _("BRET"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_TAKE,
- EC_WORD_MY,
- EC_WORD_OVERWHELMING,
- EC_WORD_POWER,
- EC_WORD_AND,
- EC_WORD_DISAPPEAR,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_EXPERT_F,
- .name = _("CARRIE"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_TRAINER,
- EC_WORD_I,
- EC_WORD_SEE,
- EC_WORD_YOU,
- EC_WORD_ARE,
- EC_WORD_CAPABLE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_LADY,
- .name = _("GILLIAN"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_COME_ON,
- EC_WORD_SHOW,
- EC_WORD_ME,
- EC_WORD_AN,
- EC_WORD_EXCELLENT,
- EC_WORD_TIME,
- },
- },
- },
+ {
+ .trainerClass = FACILITY_CLASS_YOUNGSTER,
+ .name = _("ALVIN"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_READY,
+ EC_WORD_QUES,
+ EC_WORD_HERE_I_COME,
+ EC_WORD_EXCL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BIRD_KEEPER,
+ .name = _("DIRK"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_OKAY,
+ EC_WORD_I_AM,
+ EC_WORD_GOING,
+ EC_WORD_FOR,
+ EC_WORD_IT,
+ EC_WORD_EXCL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_LADY,
+ .name = _("CYBIL"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_YOU_RE,
+ EC_WORD_A,
+ EC_WORD_PUSHOVER,
+ EC_WORD_LET_S,
+ EC_WORD_GET,
+ EC_WORD_GOING,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BLACK_BELT,
+ .name = _("CHEN"),
+ .teamFlags = 0x05,
+ .greeting = {
+ EC_WORD_MY,
+ EC_WORD_SPIRIT,
+ EC_WORD_IS,
+ EC_WORD_ENOUGH,
+ EC_WORD_SNORT,
+ EC_WORD_ARRGH,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_NINJA_BOY,
+ .name = _("YOSHI"),
+ .teamFlags = 0x05,
+ .greeting = {
+ EC_WORD_GO,
+ EC_WORD_MY,
+ EC_WORD_POKEMON,
+ EC_WORD_FIGHT,
+ EC_WORD_THE,
+ EC_WORD_BATTLE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .name = _("TINA"),
+ .teamFlags = 0x0A,
+ .greeting = {
+ EC_WORD_STUDY,
+ EC_WORD_IS,
+ EC_WORD_BORING,
+ EC_WORD_LET_S,
+ EC_WORD_BATTLE,
+ EC_WORD_NOW,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BUG_MANIAC,
+ .name = _("COREY"),
+ .teamFlags = 0x41,
+ .greeting = {
+ EC_WORD_HEY,
+ EC_WORD_I,
+ EC_WORD_WILL,
+ EC_MOVE2(TRANSFORM),
+ EC_WORD_FOR,
+ EC_MOVE(STRENGTH),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_FISHERMAN,
+ .name = _("GORDON"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_NEED,
+ EC_WORD_A,
+ EC_WORD_VACATION,
+ EC_WORD_RIGHT,
+ EC_WORD_NOW,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_TUBER_F,
+ .name = _("ANN"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_WE,
+ EC_WORD_ALL,
+ EC_WORD_ADORE,
+ EC_WORD_POKEMON,
+ EC_WORD_ABSOLUTELY,
+ EC_WORD_TRULY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEFAN_F,
+ .name = _("JULIA"),
+ .teamFlags = 0x42,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_A,
+ EC_WORD_CUTE,
+ EC_WORD_LADY,
+ EC_WORD_YES,
+ EC_WORD_I_AM,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GENTLEMAN,
+ .name = _("GREGORY"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_THINK,
+ EC_WORD_WE,
+ EC_WORD_SHOULD,
+ EC_WORD_START,
+ EC_WORD_TODAY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CAMPER,
+ .name = _("KEITH"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_YOU_RE,
+ EC_WORD_MY,
+ EC_WORD_FRIEND,
+ EC_WORD_FROM,
+ EC_WORD_NOW,
+ EC_WORD_ON,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ .name = _("KENDRA"),
+ .teamFlags = 0x0A,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_MOVE(SWIFT),
+ EC_WORD_HOW,
+ EC_WORD_ABOUT,
+ EC_WORD_YOU,
+ EC_WORD_QUES,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_HIKER,
+ .name = _("DEV"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_WAHAHAHA,
+ EC_WORD_I_AM,
+ EC_WORD_FEELING,
+ EC_WORD_LIKE,
+ EC_WORD_IT_S,
+ EC_MOVE2(PAY_DAY),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
+ .name = _("CASSIE"),
+ .teamFlags = 0x0A,
+ .greeting = {
+ EC_WORD_YOU_RE,
+ EC_WORD_STRONG,
+ EC_WORD_AREN_T,
+ 0xFFFF,
+ EC_WORD_YOU,
+ EC_WORD_QUES,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PSYCHIC_M,
+ .name = _("JULIAN"),
+ .teamFlags = 0x05,
+ .greeting = {
+ EC_WORD_FUFUFU,
+ 0xFFFF,
+ EC_WORD_YOU,
+ EC_WORD_CAN_T,
+ EC_WORD_WIN,
+ EC_WORD_KID,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_LASS,
+ .name = _("JOYCE"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_BE,
+ EC_WORD_KIND,
+ EC_WORD_TO,
+ EC_WORD_THE,
+ EC_WORD_DIGITAL,
+ EC_WORD_IDOL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GUITARIST,
+ .name = _("LES"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_GREAT,
+ EC_WORD_YOU_RE,
+ EC_WORD_JUST,
+ EC_WORD_RATHER,
+ EC_WORD_OKAY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RICH_BOY,
+ .name = _("CLINTON"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_HAVE,
+ EC_WORD_ROUGH_SKIN,
+ EC_WORD_I,
+ EC_WORD_NEED,
+ EC_WORD_NATURAL_CURE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BUG_CATCHER,
+ .name = _("LEWIS"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_THIS,
+ EC_WORD_IS,
+ EC_WORD_EXCITING,
+ EC_WORD_CAN,
+ EC_WORD_I,
+ EC_WORD_WIN,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PICNICKER,
+ .name = _("RACHAEL"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_LIKE,
+ EC_WORD_WALKING,
+ EC_WORD_WITH,
+ EC_WORD_MY,
+ EC_WORD_POKEMON,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COLLECTOR,
+ .name = _("HAROLD"),
+ .teamFlags = 0x09,
+ .greeting = {
+ EC_WORD_HERE,
+ EC_WORD_THEY,
+ EC_WORD_COME,
+ EC_WORD_MY,
+ EC_MOVE2(SUPERPOWER),
+ EC_WORD_POKEMON,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_TUBER_M,
+ .name = _("KIPP"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_A,
+ EC_WORD_GENIUS,
+ EC_WORD_I,
+ EC_WORD_SHOULD,
+ EC_WORD_WIN,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_KINDLER,
+ .name = _("IRWIN"),
+ .teamFlags = 0x05,
+ .greeting = {
+ EC_WORD_YOU,
+ EC_WORD_WILL,
+ EC_WORD_BE,
+ EC_WORD_FEELING,
+ EC_WORD_MY,
+ EC_WORD_FIRE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PSYCHIC_F,
+ .name = _("EILEEN"),
+ .teamFlags = 0x0A,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_WILL,
+ EC_MOVE(ASTONISH),
+ EC_WORD_YOU,
+ EC_WORD_IN,
+ EC_WORD_BATTLE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMER_F,
+ .name = _("ANNE"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_SORRY,
+ EC_WORD_BUT,
+ EC_WORD_YOU,
+ EC_WORD_WILL,
+ EC_WORD_NOT,
+ EC_WORD_WIN,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ .name = _("RUTH"),
+ .teamFlags = 0x06,
+ .greeting = {
+ EC_WORD_A,
+ EC_WORD_STRONG,
+ EC_WORD_GIRL,
+ EC_WORD_WANTS,
+ EC_WORD_TOUGH,
+ EC_WORD_POKEMON,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMANIAC,
+ .name = _("JEREMY"),
+ .teamFlags = 0x40,
+ .greeting = {
+ EC_WORD_MY,
+ EC_WORD_POKEMON,
+ EC_WORD_ARE,
+ EC_WORD_COOL,
+ EC_WORD_YOURS,
+ EC_WORD_CAN_T_WIN,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SAILOR,
+ .name = _("TREVOR"),
+ .teamFlags = 0x09,
+ .greeting = {
+ EC_WORD_MY,
+ EC_WORD_OPPONENT,
+ EC_WORD_IS,
+ EC_WORD_FINALLY,
+ EC_WORD_HERE,
+ EC_WORD_EXCELLENT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .name = _("COLETTE"),
+ .teamFlags = 0x06,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_AM,
+ EC_WORD_HUNGRY,
+ EC_MOVE2(POUND),
+ EC_WORD_MY,
+ EC_MOVE2(BELLY_DRUM),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_HEX_MANIAC,
+ .name = _("PAULA"),
+ .teamFlags = 0x42,
+ .greeting = {
+ EC_WORD_IT_S,
+ EC_WORD_HARD,
+ EC_WORD_TO,
+ EC_WORD_TAKE,
+ EC_WORD_UGLY,
+ EC_MOVE(SPITE),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUIN_MANIAC,
+ .name = _("STANLY"),
+ .teamFlags = 0x41,
+ .greeting = {
+ EC_WORD_ADVENTURE,
+ EC_WORD_AND,
+ EC_WORD_BATTLE,
+ EC_WORD_ARE,
+ EC_WORD_MY,
+ EC_WORD_LIKES,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .name = _("TROY"),
+ .teamFlags = 0x09,
+ .greeting = {
+ EC_WORD_YOU,
+ EC_WORD_CAN_T,
+ EC_WORD_LOSE,
+ EC_WORD_TO,
+ EC_WORD_A,
+ EC_WORD_KID,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SCHOOL_KID_M,
+ .name = _("ED"),
+ .teamFlags = 0x08,
+ .greeting = {
+ EC_WORD_POKEMON,
+ EC_WORD_DAILY,
+ EC_WORD_AT,
+ EC_WORD_SCHOOL,
+ EC_WORD_IT_S,
+ EC_WORD_AWESOME,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F,
+ .name = _("ELLEN"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_KIND,
+ EC_WORD_TO,
+ EC_WORD_YOUR,
+ EC_WORD_POKEMON,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMER_M,
+ .name = _("ARNIE"),
+ .teamFlags = 0x09,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_BATTLE,
+ EC_WORD_SERIOUSLY,
+ EC_WORD_BEAUTIFUL,
+ EC_WORD_YOU,
+ EC_MOVE(DIG),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ .name = _("HAL"),
+ .teamFlags = 0x09,
+ .greeting = {
+ EC_WORD_BOY,
+ EC_WORD_I_AM,
+ EC_WORD_TIRED,
+ EC_WORD_READY,
+ EC_WORD_FOR,
+ EC_WORD_SLEEP,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BEAUTY,
+ .name = _("LAUREN"),
+ .teamFlags = 0x06,
+ .greeting = {
+ EC_WORD_A,
+ EC_WORD_TRAINER,
+ EC_WORD_LIKE,
+ EC_WORD_YOU,
+ EC_WORD_IS,
+ EC_WORD_EXCITING,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_AROMA_LADY,
+ .name = _("STACY"),
+ .teamFlags = 0x06,
+ .greeting = {
+ EC_WORD_HAVE,
+ EC_WORD_YOU,
+ EC_WORD_A,
+ EC_WORD_STENCH,
+ EC_WORD_OR,
+ EC_MOVE(SWEET_SCENT),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COLLECTOR,
+ .name = _("DARYL"),
+ .teamFlags = 0x81,
+ .greeting = {
+ EC_WORD_YOUR,
+ EC_WORD_POKEMON,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_I,
+ EC_WORD_WANT,
+ EC_WORD_IT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ .name = _("KATHY"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_WILL,
+ EC_WORD_TRY,
+ EC_WORD_MY,
+ EC_WORD_BEST,
+ EC_WORD_TODAY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M,
+ .name = _("HARRIS"),
+ .teamFlags = 0x0C,
+ .greeting = {
+ EC_WORD_WAAAH,
+ EC_WORD_WAAAH,
+ EC_WORD_WAAAH,
+ EC_WORD_WAAAH,
+ EC_WORD_EHEHE,
+ EC_MOVE(FAKE_TEARS),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEFAN_M,
+ .name = _("GLENN"),
+ .teamFlags = 0x80,
+ .greeting = {
+ EC_WORD_LISTEN,
+ EC_WORD_TO,
+ EC_WORD_MY,
+ EC_WORD_LOUSY,
+ EC_WORD_ANIME,
+ EC_WORD_SONG,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ .name = _("NICO"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_DON_T,
+ EC_WORD_JUST,
+ EC_WORD_BATTLE,
+ EC_WORD_DO,
+ EC_WORD_SOMETHING,
+ EC_WORD_ELSE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M,
+ .name = _("BAILEY"),
+ .teamFlags = 0x41,
+ .greeting = {
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_BUSY,
+ EC_WORD_GET,
+ EC_WORD_WITH,
+ EC_WORD_IT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PARASOL_LADY,
+ .name = _("ABBIE"),
+ .teamFlags = 0x08,
+ .greeting = {
+ EC_WORD_THE,
+ EC_MOVE(MORNING_SUN),
+ EC_WORD_HAS,
+ EC_WORD_SO,
+ EC_WORD_MUCH,
+ EC_MOVE(COSMIC_POWER),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CAMPER,
+ .name = _("AL"),
+ .teamFlags = 0x0C,
+ .greeting = {
+ EC_WORD_LET_S,
+ EC_WORD_HAVE,
+ EC_WORD_AN,
+ EC_WORD_EXCITING,
+ EC_WORD_BATTLE,
+ EC_WORD_YEEHAW_EXCL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .name = _("PEGGY"),
+ .teamFlags = 0x42,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_WANT,
+ EC_WORD_TO,
+ EC_WORD_SEE,
+ EC_WORD_SOME,
+ EC_MOVE(GROWTH),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BEAUTY,
+ .name = _("NAOMI"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_IT,
+ EC_WORD_WAS,
+ EC_WORD_GREAT,
+ EC_WORD_TO,
+ EC_WORD_BE,
+ EC_WORD_YOUNG,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_NINJA_BOY,
+ .name = _("KENJI"),
+ .teamFlags = 0x0C,
+ .greeting = {
+ EC_WORD_PLEASE,
+ 0xFFFF,
+ EC_WORD_DON_T,
+ EC_WORD_BE,
+ EC_WORD_MEAN,
+ EC_WORD_TO_ME,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ .name = _("ROSS"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_WAKE_UP,
+ EC_WORD_MY,
+ EC_MOVE2(HIDDEN_POWER),
+ EC_WORD_AND,
+ EC_MOVE(ASTONISH),
+ EC_WORD_ME,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F,
+ .name = _("EDNA"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_BATTLE_TOWER,
+ EC_WORD_IS,
+ EC_WORD_SO,
+ EC_WORD_ENTERTAINING,
+ EC_WORD_IT_S,
+ EC_WORD_AWESOME,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUIN_MANIAC,
+ .name = _("ANTON"),
+ .teamFlags = 0x41,
+ .greeting = {
+ EC_WORD_BLEND,
+ EC_WORD_THICK_FAT,
+ EC_WORD_AND,
+ EC_WORD_CHLOROPHYLL,
+ EC_WORD_IT_S,
+ EC_WORD_TASTY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMER_M,
+ .name = _("MITCH"),
+ .teamFlags = 0x81,
+ .greeting = {
+ EC_WORD_NEXT,
+ EC_WORD_A,
+ EC_WORD_GIRL,
+ EC_WORD_WITH,
+ EC_WORD_A,
+ EC_MOVE(SCARY_FACE),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_HEX_MANIAC,
+ .name = _("ROD"),
+ .teamFlags = 0x42,
+ .greeting = {
+ EC_WORD_GIMME,
+ EC_WORD_A,
+ EC_WORD_TOUGH,
+ EC_WORD_BATTLE,
+ EC_WORD_NOT,
+ EC_WORD_WIMPY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ .name = _("RICH"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_TASTY,
+ EC_WORD_WATER,
+ EC_WORD_IS,
+ EC_WORD_HIP_AND,
+ EC_WORD_HAPPENING,
+ EC_WORD_YES_SIR_EXCL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEFAN_M,
+ .name = _("DANIEL"),
+ .teamFlags = 0x80,
+ .greeting = {
+ EC_WORD_GO,
+ EC_WORD_FOR,
+ EC_WORD_IT,
+ EC_WORD_MY,
+ EC_WORD_LOVEY_DOVEY,
+ EC_WORD_POKEMON,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PSYCHIC_F,
+ .name = _("GLORIA"),
+ .teamFlags = 0x82,
+ .greeting = {
+ EC_WORD_LET_S,
+ EC_WORD_GET,
+ EC_WORD_THIS,
+ EC_WORD_FIERY,
+ EC_WORD_BATTLE,
+ EC_WORD_HAPPENING,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GUITARIST,
+ .name = _("NELSON"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_MUSIC,
+ EC_WORD_IS,
+ EC_WORD_MY,
+ EC_WORD_ALL,
+ EC_WORD_MY,
+ EC_WORD_DESTINY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_KINDLER,
+ .name = _("FERRIS"),
+ .teamFlags = 0x41,
+ .greeting = {
+ EC_WORD_GOOD,
+ EC_WORD_IT,
+ EC_WORD_IS,
+ EC_WORD_SO,
+ EC_WORD_VERY,
+ EC_WORD_GOOD,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_AROMA_LADY,
+ .name = _("AMANDA"),
+ .teamFlags = 0x82,
+ .greeting = {
+ EC_WORD_WHAT,
+ EC_WORD_KIND,
+ EC_WORD_OF,
+ EC_WORD_TRAINER,
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .name = _("MASON"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_DON_T,
+ EC_WORD_KNOW,
+ EC_WORD_HOW,
+ EC_WORD_TO,
+ EC_WORD_LOSE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_DRAGON_TAMER,
+ .name = _("NATE"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_DRAGON,
+ EC_WORD_POKEMON,
+ EC_WORD_ARE,
+ EC_WORD_ALL,
+ EC_WORD_THE,
+ EC_MOVE(RAGE),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_LASS,
+ .name = _("MIRIAM"),
+ .teamFlags = 0x82,
+ .greeting = {
+ EC_WORD_YOU_RE,
+ EC_WORD_TOO_STRONG,
+ EC_WORD_SERIOUSLY,
+ EC_WORD_IT_S,
+ EC_WORD_BAD,
+ EC_WORD_NEWS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMANIAC,
+ .name = _("THEO"),
+ .teamFlags = 0x40,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_ADORE,
+ EC_WORD_MY,
+ EC_WORD_MEGA,
+ EC_WORD_CUTE,
+ EC_WORD_PLUSH_DOLL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ .name = _("PAMELA"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_HERE_I_COME,
+ EC_WORD_I_AM,
+ EC_WORD_THE,
+ EC_WORD_CUTE,
+ EC_MOVE2(WATER_SPORT),
+ EC_WORD_IDOL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEFAN_F,
+ .name = _("ALISSA"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_IT_S,
+ EC_WORD_A,
+ EC_WORD_PREPOSTEROUS,
+ EC_WORD_MATCH,
+ EC_WORD_I_AM,
+ EC_WORD_SHOCKED,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GENTLEMAN,
+ .name = _("ARTHUR"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_PLEASE,
+ EC_WORD_GIVE,
+ EC_WORD_ME,
+ EC_WORD_A,
+ EC_WORD_GOOD,
+ EC_WORD_BATTLE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMER_F,
+ .name = _("MARCY"),
+ .teamFlags = 0x82,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_BEAUTIFUL,
+ EC_WORD_YOU,
+ EC_WORD_CAN_T,
+ EC_WORD_BEAT,
+ EC_WORD_ME,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COOL_TRAINER_M,
+ .name = _("MILLER"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_BATTLE,
+ EC_WORD_DAILY,
+ EC_WORD_I,
+ EC_WORD_WON_T,
+ EC_WORD_LOSE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BIRD_KEEPER,
+ .name = _("OLIVER"),
+ .teamFlags = 0x11,
+ .greeting = {
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_GIGGLE,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ 0xFFFF,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ .name = _("MOLLY"),
+ .teamFlags = 0x12,
+ .greeting = {
+ EC_WORD_HOW,
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_ON,
+ EC_WORD_MONDAY,
+ EC_WORD_MORNING,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BUG_MANIAC,
+ .name = _("JASON"),
+ .teamFlags = 0x40,
+ .greeting = {
+ EC_WORD_WATER,
+ EC_WORD_AND,
+ EC_WORD_BUG,
+ EC_WORD_POKEMON,
+ EC_WORD_ARE,
+ EC_WORD_GREAT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
+ .name = _("AVA"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_WHAT,
+ EC_WORD_IS,
+ EC_WORD_THIS,
+ EC_WORD_PRESSURE,
+ EC_WORD_ELLIPSIS,
+ EC_WORD_STATIC,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_FISHERMAN,
+ .name = _("HANK"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_YOU_RE,
+ EC_WORD_A,
+ EC_WORD_KID,
+ EC_WORD_YOU,
+ EC_WORD_CAN_T,
+ EC_WORD_WIN,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SAILOR,
+ .name = _("PETER"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_IT_S,
+ EC_WORD_SERIOUSLY,
+ EC_WORD_TERRIBLE,
+ EC_WORD_I,
+ EC_WORD_REALLY,
+ EC_WORD_THINK,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_EXPERT_F,
+ .name = _("MINDY"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_YOU,
+ EC_WORD_APPEAR,
+ EC_WORD_TO,
+ EC_WORD_TRAIN,
+ EC_WORD_VERY,
+ EC_WORD_WELL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BUG_MANIAC,
+ .name = _("DWIGHT"),
+ .teamFlags = 0x11,
+ .greeting = {
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_STRONG,
+ EC_WORD_YOU,
+ EC_WORD_ARE,
+ EC_WORD_SCARY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .name = _("REENA"),
+ .teamFlags = 0x12,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_ALWAYS,
+ EC_WORD_LOSE,
+ EC_WORD_MAYBE,
+ EC_WORD_TODAY,
+ EC_WORD_ELLIPSIS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PARASOL_LADY,
+ .name = _("MEGAN"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_DON_T,
+ EC_WORD_MAKE,
+ EC_WORD_THAT,
+ EC_MOVE(SCARY_FACE),
+ EC_WORD_AT,
+ EC_WORD_ME,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ .name = _("SIERRA"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_I_VE,
+ EC_WORD_RUN,
+ EC_WORD_A_LOT,
+ EC_WORD_SO,
+ EC_WORD_I_AM,
+ EC_WORD_HEALTHY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M,
+ .name = _("ARNOLD"),
+ .teamFlags = 0x08,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_FEELING,
+ EC_WORD_AWESOME,
+ EC_WORD_MY,
+ EC_WORD_POKEMON,
+ EC_WORD_ROCK,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BLACK_BELT,
+ .name = _("XIN"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_HOO_HAH,
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_READY,
+ EC_WORD_TO,
+ EC_WORD_ROCK,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COOL_TRAINER_F,
+ .name = _("KELLY"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_YOU,
+ EC_WORD_COULDN_T,
+ EC_WORD_BEAT,
+ EC_WORD_ME,
+ EC_WORD_EVER,
+ EC_WORD_KID,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COLLECTOR,
+ .name = _("VANCE"),
+ .teamFlags = 0x80,
+ .greeting = {
+ EC_WORD_POKEMON,
+ EC_WORD_ALL,
+ EC_WORD_OVER,
+ EC_WORD_THE,
+ EC_WORD_PLACE,
+ EC_WORD_WOWEE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .name = _("TOBY"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_THIS,
+ EC_WORD_ISN_T,
+ EC_WORD_SPORTS,
+ EC_WORD_IT_S,
+ EC_WORD_A,
+ EC_WORD_BATTLE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GENTLEMAN,
+ .name = _("NORTON"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_HAVE,
+ EC_WORD_TO,
+ EC_WORD_WIN,
+ EC_WORD_PLEASE,
+ EC_WORD_LOSE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
+ .name = _("ZOE"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_THIS,
+ EC_WORD_IS,
+ EC_WORD_SCARY,
+ EC_WORD_PLEASE,
+ EC_WORD_BE,
+ EC_WORD_NICE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BEAUTY,
+ .name = _("EMMA"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_DON_T,
+ EC_WORD_YOU,
+ EC_MOVE(FLAIL),
+ EC_WORD_YOU,
+ EC_WORD_CAN_T,
+ EC_MOVE(WITHDRAW),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_HIKER,
+ .name = _("VINCE"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_YAHOO,
+ EC_WORD_YAHOO,
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_LISTENING,
+ EC_WORD_QUES,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_EXPERT_M,
+ .name = _("MARV"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_LEARN,
+ EC_WORD_TO,
+ EC_WORD_BATTLE,
+ EC_WORD_THE,
+ EC_WORD_CORRECT,
+ EC_WORD_WAY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M,
+ .name = _("TODD"),
+ .teamFlags = 0x40,
+ .greeting = {
+ EC_WORD_THE,
+ EC_WORD_WAY,
+ EC_WORD_YOU,
+ EC_WORD_BATTLE,
+ EC_WORD_IT_S,
+ EC_WORD_CHILD_S_PLAY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GUITARIST,
+ .name = _("GAVIN"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_BABY,
+ EC_WORD_BABY,
+ EC_WORD_BABY,
+ EC_WORD_ROCK,
+ EC_WORD_ME,
+ EC_WORD_HARD,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PSYCHIC_M,
+ .name = _("QUINN"),
+ .teamFlags = 0x08,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_HAVE,
+ EC_WORD_A,
+ EC_WORD_STICKY_HOLD,
+ EC_WORD_ON,
+ EC_WORD_YOU,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COOL_TRAINER_F,
+ .name = _("JENN"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_ON,
+ EC_WORD_A,
+ EC_WORD_TOUGH,
+ EC_WORD_TRAINER,
+ EC_WORD_SEARCH,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_EXPERT_M,
+ .name = _("JOEL"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_BELIEVE,
+ EC_WORD_IN,
+ EC_WORD_YOUR,
+ EC_WORD_POKEMON,
+ EC_WORD_AND,
+ EC_WORD_WIN,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_DRAGON_TAMER,
+ .name = _("KYLE"),
+ .teamFlags = 0x0C,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_LIKE,
+ EC_WORD_A,
+ EC_WORD_GIRL,
+ EC_WORD_WITH,
+ EC_MOVE2(FORESIGHT),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COOL_TRAINER_M,
+ .name = _("BRET"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_TAKE,
+ EC_WORD_MY,
+ EC_WORD_OVERWHELMING,
+ EC_WORD_POWER,
+ EC_WORD_AND,
+ EC_WORD_DISAPPEAR,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_EXPERT_F,
+ .name = _("CARRIE"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_TRAINER,
+ EC_WORD_I,
+ EC_WORD_SEE,
+ EC_WORD_YOU,
+ EC_WORD_ARE,
+ EC_WORD_CAPABLE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_LADY,
+ .name = _("GILLIAN"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_COME_ON,
+ EC_WORD_SHOW,
+ EC_WORD_ME,
+ EC_WORD_AN,
+ EC_WORD_EXCELLENT,
+ EC_WORD_TIME,
+ },
+ },
};
diff --git a/src/data/battle_tower/trainers_de.h b/src/data/battle_tower/trainers_de.h
index db226c6a6..71f301975 100644
--- a/src/data/battle_tower/trainers_de.h
+++ b/src/data/battle_tower/trainers_de.h
@@ -1,1503 +1,1303 @@
const struct BattleTowerTrainer gBattleTowerTrainers[] =
{
- {
- .trainerClass = FACILITY_CLASS_YOUNGSTER,
- .name = _("ALWIN"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_READY,
- EC_WORD_QUES,
- EC_WORD_HERE_I_COME,
- EC_WORD_EXCL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BIRD_KEEPER,
- .name = _("DIRK"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_OH_KAY,
- EC_WORD_I_AM,
- EC_WORD_READY,
- EC_WORD_EXCL,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_LADY,
- .name = _("SIBILLE"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_THAT,
- EC_WORD_BECOMES,
- EC_WORD_A,
- EC_WORD_CHILD_S_PLAY,
- EC_WORD_GO,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BLACK_BELT,
- .name = _("OLAF"),
- .teamFlags = 0x05,
- .greeting = {
- .easyChat = {
- EC_WORD_MY,
- EC_WORD_GHOST,
- EC_WORD_IS,
- EC_WORD_FULL,
- EC_WORD_TOUGHNESS,
- EC_WORD_SNORT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_NINJA_BOY,
- .name = _("JOST"),
- .teamFlags = 0x05,
- .greeting = {
- .easyChat = {
- EC_WORD_GO,
- EC_WORD_WHO_WAS,
- EC_WORD_POKEMON,
- EC_WORD_FIGHT,
- EC_WORD_FIGHT,
- EC_WORD_FIGHT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SCHOOL_KID_F,
- .name = _("TINA"),
- .teamFlags = 0x0A,
- .greeting = {
- .easyChat = {
- EC_WORD_STUDY,
- EC_WORD_IS,
- EC_WORD_BORING,
- EC_WORD_LET_S,
- EC_WORD_BETTER,
- EC_WORD_FIGHT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BUG_MANIAC,
- .name = _("HAJO"),
- .teamFlags = 0x41,
- .greeting = {
- .easyChat = {
- EC_WORD_TOUGHNESS,
- EC_WORD_AND,
- EC_MOVE2(TRANSFORM),
- EC_WORD_WILL,
- EC_WORD_BABE,
- EC_WORD_FAINT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_FISHERMAN,
- .name = _("GEORG"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_IT,
- EC_WORD_GOES,
- EC_WORD_NOTHING,
- EC_WORD_OVER,
- EC_WORD_FISHING,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_TUBER_F,
- .name = _("ANNE"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_POKEMON,
- EC_WORD_MUST_BE,
- EC_WORD_MAN,
- EC_WORD_SIMPLE,
- EC_WORD_ADORE,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEFAN_F,
- .name = _("JULIA"),
- .teamFlags = 0x42,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_CUTE,
- EC_WORD_I_AM,
- EC_WORD_QUITE,
- EC_WORD_AN,
- EC_WORD_LADY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GENTLEMAN,
- .name = _("JOHANN"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_THE,
- EC_WORD_DAY,
- EC_WORD_IS,
- EC_WORD_PERFECT,
- EC_WORD_FOR,
- EC_WORD_BATTLE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CAMPER,
- .name = _("KARL"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_NOW,
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_MY,
- EC_WORD_FRIEND,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
- .name = _("KENDRA"),
- .teamFlags = 0x0A,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_SMART,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_AND,
- EC_WORD_YOU,
- EC_WORD_QUES,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_HIKER,
- .name = _("DAVID"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_WAHAHAHA,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_TODAY,
- EC_WORD_IS,
- EC_MOVE2(PAY_DAY),
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
- .name = _("KEA"),
- .teamFlags = 0x0A,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU_RE,
- EC_WORD_TOUGH,
- EC_WORD_OR,
- EC_WORD_QUES,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PSYCHIC_M,
- .name = _("JULIAN"),
- .teamFlags = 0x05,
- .greeting = {
- .easyChat = {
- EC_WORD_FUFUFU,
- EC_WORD_YOU,
- EC_WORD_CAN_T,
- EC_WORD_DON_T,
- EC_WORD_WINS,
- EC_WORD_KID,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_LASS,
- .name = _("JOSI"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_BE,
- EC_WORD_KIND,
- EC_WORD_TO,
- EC_WORD_GIRL,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GUITARIST,
- .name = _("LEIF"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_GREAT,
- EC_WORD_YOU_RE,
- EC_WORD_RATHER,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_OKAY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RICH_BOY,
- .name = _("INGO"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_HAVE,
- EC_WORD_ROUGH_SKIN,
- EC_WORD_NATURAL_CURE,
- EC_WORD_IS,
- EC_WORD_ALL_RIGHT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BUG_CATCHER,
- .name = _("LUDWIG"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_IF_I_WIN,
- EC_WORD_IS,
- EC_WORD_THAT,
- EC_WORD_EXCITING,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PICNICKER,
- .name = _("RAJA"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_WITH,
- EC_WORD_POKEMON,
- EC_WORD_TO,
- EC_WORD_WALKING,
- EC_WORD_IS,
- EC_WORD_GREAT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COLLECTOR,
- .name = _("HARALD"),
- .teamFlags = 0x09,
- .greeting = {
- .easyChat = {
- EC_WORD_HERE_GOES,
- EC_WORD_MY,
- EC_WORD_HUGE_POWER,
- 0xFFFF,
- EC_WORD_POKEMON,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_TUBER_M,
- .name = _("KIM"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_A,
- EC_WORD_GENIUS,
- EC_WORD_WE,
- EC_WORD_WILL,
- EC_WORD_WINS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_KINDLER,
- .name = _("ERWIN"),
- .teamFlags = 0x05,
- .greeting = {
- .easyChat = {
- EC_WORD_MY,
- EC_WORD_FIRE,
- EC_WORD_IS,
- EC_WORD_VERY,
- EC_WORD_HOT,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PSYCHIC_F,
- .name = _("EIKA"),
- .teamFlags = 0x0A,
- .greeting = {
- .easyChat = {
- EC_WORD_FIGHTING,
- EC_MOVE(ASTONISH),
- EC_WORD_AND,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMER_F,
- .name = _("ANNINA"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_SORRY,
- EC_WORD_YOURS,
- EC_WORD_POKEMON,
- EC_WORD_WILL,
- EC_WORD_DON_T,
- EC_WORD_WINS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
- .name = _("RUTH"),
- .teamFlags = 0x06,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_TOUGH,
- EC_WORD_WHO_WAS,
- EC_WORD_POKEMON,
- EC_WORD_TOO,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMANIAC,
- .name = _("JENS"),
- .teamFlags = 0x40,
- .greeting = {
- .easyChat = {
- EC_WORD_WHO_WAS,
- EC_WORD_POKEMON,
- EC_WORD_THOSE,
- EC_WORD_COOL,
- EC_WORD_YOURS,
- EC_WORD_LOSE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SAILOR,
- .name = _("TITUS"),
- .teamFlags = 0x09,
- .greeting = {
- .easyChat = {
- EC_WORD_MY,
- EC_WORD_FOE,
- EC_WORD_IS,
- EC_WORD_FINALLY,
- EC_WORD_HERE,
- EC_WORD_EXCELLENT,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F,
- .name = _("NICOLA"),
- .teamFlags = 0x06,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_VORACIOUS,
- EC_MOVE2(POUND),
- EC_WORD_AND,
- EC_MOVE2(BELLY_DRUM),
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_HEX_MANIAC,
- .name = _("PAULA"),
- .teamFlags = 0x42,
- .greeting = {
- .easyChat = {
- EC_WORD_IS_IT_QUES,
- EC_WORD_THOSE_ARE,
- EC_WORD_UGLY,
- EC_MOVE(SPITE),
- EC_WORD_TO,
- EC_WORD_TAKE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUIN_MANIAC,
- .name = _("SÖREN"),
- .teamFlags = 0x41,
- .greeting = {
- .easyChat = {
- EC_WORD_ADVENTURE,
- EC_WORD_AND,
- EC_WORD_BATTLE,
- EC_WORD_THOSE,
- EC_WORD_WHO_WAS,
- EC_WORD_LIKES,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
- .name = _("RAINER"),
- .teamFlags = 0x09,
- .greeting = {
- .easyChat = {
- EC_WORD_WE,
- EC_WORD_CAN,
- EC_WORD_VERSUS,
- EC_WORD_CHILDREN,
- EC_WORD_DON_T,
- EC_WORD_LOSE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SCHOOL_KID_M,
- .name = _("FABIAN"),
- .teamFlags = 0x08,
- .greeting = {
- .easyChat = {
- EC_WORD_DAILY,
- EC_WORD_POKEMON,
- EC_WORD_IN,
- EC_WORD_THE,
- EC_WORD_SCHOOL,
- EC_WORD_AWESOME,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F,
- .name = _("ELLEN"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_ALL_RIGHT,
- EC_WORD_TO,
- EC_WORD_POKEMON,
- EC_WORD_QUES,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMER_M,
- .name = _("ARNIE"),
- .teamFlags = 0x09,
- .greeting = {
- .easyChat = {
- EC_WORD_MY,
- EC_WORD_FIGHTING,
- EC_WORD_IS,
- EC_WORD_PERFECTION,
- EC_WORD_YOUR,
- EC_WORD_USELESS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
- .name = _("HARDI"),
- .teamFlags = 0x09,
- .greeting = {
- .easyChat = {
- EC_WORD_BOY,
- EC_WORD_I_AM,
- EC_WORD_MAYBE,
- EC_WORD_TIRED,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BEAUTY,
- .name = _("LINA"),
- .teamFlags = 0x06,
- .greeting = {
- .easyChat = {
- EC_WORD_A,
- EC_WORD_TRAINER,
- EC_WORD_HOW_DO,
- EC_WORD_YOU,
- EC_WORD_IS,
- EC_WORD_EXCITING,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_AROMA_LADY,
- .name = _("SELINA"),
- .teamFlags = 0x06,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU_VE,
- EC_WORD_STENCH,
- EC_WORD_OR,
- EC_MOVE(SWEET_SCENT),
- EC_WORD_QUES,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COLLECTOR,
- .name = _("DANTE"),
- .teamFlags = 0x81,
- .greeting = {
- .easyChat = {
- EC_WORD_YOURS,
- EC_WORD_POKEMON,
- EC_WORD_I,
- EC_WORD_WANTS,
- EC_WORD_SHE,
- EC_WORD_EXCL_EXCL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
- .name = _("KATJA"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_TODAY,
- EC_WORD_WANTS,
- EC_WORD_I,
- EC_WORD_MY,
- EC_WORD_BEST,
- EC_WORD_GIVE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M,
- .name = _("HORST"),
- .teamFlags = 0x0C,
- .greeting = {
- .easyChat = {
- EC_WORD_WAAAH,
- EC_WORD_WAAAH,
- EC_WORD_WAAAH,
- EC_WORD_WAAAH,
- EC_WORD_EHEHE,
- EC_MOVE(FAKE_TEARS),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEFAN_M,
- .name = _("GERRIT"),
- .teamFlags = 0x80,
- .greeting = {
- .easyChat = {
- EC_WORD_MY,
- EC_WORD_ANIME,
- EC_WORD_SONG,
- EC_WORD_IS,
- EC_WORD_DON_T,
- EC_WORD_LOUSY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
- .name = _("NIKO"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_BATTLE,
- EC_WORD_DON_T,
- EC_WORD_JUST,
- EC_WORD_DO,
- EC_WORD_SOMETHING,
- EC_WORD_ELSE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M,
- .name = _("BALDO"),
- .teamFlags = 0x41,
- .greeting = {
- .easyChat = {
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_BUSY,
- EC_WORD_HAS,
- EC_WORD_THAT,
- EC_WORD_TIME,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PARASOL_LADY,
- .name = _("ALMA"),
- .teamFlags = 0x08,
- .greeting = {
- .easyChat = {
- EC_WORD_THAT,
- EC_MOVE(MORNING_SUN),
- EC_WORD_HAS,
- EC_WORD_SO,
- EC_WORD_A_LOT,
- EC_MOVE(COSMIC_POWER),
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CAMPER,
- .name = _("ADAM"),
- .teamFlags = 0x0C,
- .greeting = {
- .easyChat = {
- EC_WORD_EXCITING,
- EC_WORD_BATTLE,
- EC_WORD_THOSE,
- EC_WORD_GREAT,
- EC_WORD_YEEHAW_EXCL,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SCHOOL_KID_F,
- .name = _("GRETE"),
- .teamFlags = 0x42,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_WANTS,
- EC_WORD_SOMETHING,
- EC_MOVE(GROWTH),
- EC_WORD_WORKS,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BEAUTY,
- .name = _("NAOMI"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_IT,
- EC_WORD_WAS,
- EC_WORD_GREAT,
- EC_WORD_YOUNG,
- EC_WORD_TO,
- EC_WORD_HIS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_NINJA_BOY,
- .name = _("KENO"),
- .teamFlags = 0x0C,
- .greeting = {
- .easyChat = {
- EC_WORD_PLEASE,
- EC_WORD_BE,
- EC_WORD_DON_T,
- EC_WORD_SO,
- EC_WORD_MEAN,
- EC_WORD_TO_ME,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
- .name = _("REMUS"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_WAKES_UP,
- EC_MOVE2(HIDDEN_POWER),
- EC_WORD_AND,
- EC_MOVE(ASTONISH),
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F,
- .name = _("EDITH"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_THE,
- EC_WORD_BATTLE_TOWER,
- EC_WORD_IS,
- EC_WORD_SO,
- EC_WORD_ENTERTAINING,
- EC_WORD_AWESOME,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUIN_MANIAC,
- .name = _("ANTON"),
- .teamFlags = 0x41,
- .greeting = {
- .easyChat = {
- EC_WORD_THICK_FAT,
- EC_WORD_AND,
- EC_WORD_CHLOROPHYLL,
- EC_WORD_BLEND,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_TASTY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMER_M,
- .name = _("MALTE"),
- .teamFlags = 0x81,
- .greeting = {
- .easyChat = {
- EC_WORD_AN,
- EC_MOVE(SCARY_FACE),
- EC_WORD_IS,
- EC_WORD_DON_T,
- EC_WORD_QUITE,
- EC_WORD_TERRIBLE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_HEX_MANIAC,
- .name = _("RAOUL"),
- .teamFlags = 0x42,
- .greeting = {
- .easyChat = {
- EC_WORD_RUN_AWAY,
- EC_WORD_GIVE_ME,
- EC_WORD_SON,
- EC_WORD_BEST,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
- .name = _("RICK"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_WATER,
- EC_WORD_IS,
- EC_WORD_TASTY,
- EC_WORD_HIP_AND,
- EC_WORD_REFRESHING,
- EC_WORD_YES_SIR_EXCL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEFAN_M,
- .name = _("DENNIS"),
- .teamFlags = 0x80,
- .greeting = {
- .easyChat = {
- EC_WORD_GO,
- EC_WORD_WHO_WAS,
- EC_WORD_POKEMON,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PSYCHIC_F,
- .name = _("GLORIA"),
- .teamFlags = 0x82,
- .greeting = {
- .easyChat = {
- EC_WORD_THE,
- EC_WORD_FIGHTING,
- EC_WORD_MUST_BE,
- EC_WORD_HOT,
- EC_WORD_HIS,
- EC_WORD_FIERY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GUITARIST,
- .name = _("NINO"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_MUSIC,
- EC_WORD_IS,
- EC_WORD_MY,
- EC_WORD_EVERY,
- EC_WORD_MY,
- EC_WORD_DESTINY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_KINDLER,
- .name = _("FIETE"),
- .teamFlags = 0x41,
- .greeting = {
- .easyChat = {
- EC_WORD_IT_S,
- EC_WORD_ALL_RIGHT,
- EC_WORD_VERY,
- EC_WORD_ALL_RIGHT,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_AROMA_LADY,
- .name = _("AMANDA"),
- .teamFlags = 0x82,
- .greeting = {
- .easyChat = {
- EC_WORD_WHAT,
- EC_WORD_FOR,
- EC_WORD_A,
- EC_WORD_TRAINER,
- EC_WORD_ARE,
- EC_WORD_YOU,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
- .name = _("MAREK"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_WE_VE,
- EC_WORD_UNTIL,
- EC_WORD_NOW,
- EC_WORD_TOTALLY,
- EC_WORD_NEVER,
- EC_WORD_LOST,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_DRAGON_TAMER,
- .name = _("NATHAN"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_DRAGON,
- 0xFFFF,
- EC_WORD_POKEMON,
- EC_WORD_THOSE,
- EC_WORD_FANTASTIC,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_LASS,
- .name = _("MIRIAM"),
- .teamFlags = 0x82,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU_RE,
- EC_WORD_QUITE,
- EC_WORD_TOO_STRONG,
- EC_WORD_AM,
- EC_WORD_BAD,
- EC_WORD_NEWS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMANIAC,
- .name = _("THEO"),
- .teamFlags = 0x40,
- .greeting = {
- .easyChat = {
- EC_WORD_PLUSH_DOLL,
- EC_WORD_MUST_BE,
- EC_WORD_MAN,
- EC_WORD_SIMPLE,
- EC_WORD_ADORE,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
- .name = _("PIA"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_HERE_I_COME,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_CUTE,
- EC_WORD_A,
- EC_WORD_CHANNEL,
- EC_WORD_IDOL,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEFAN_F,
- .name = _("ALISSA"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_YOURS,
- EC_WORD_POKEMON,
- EC_WORD_THOSE,
- EC_WORD_PREPOSTEROUS,
- EC_WORD_I_AM,
- EC_WORD_SHOCKED,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GENTLEMAN,
- .name = _("ARTUR"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_PLEASE,
- EC_WORD_ALL,
- EC_WORD_BATTLE,
- EC_WORD_WEREN_T,
- EC_WORD_GREAT,
- EC_WORD_HIS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMER_F,
- .name = _("MAJA"),
- .teamFlags = 0x82,
- .greeting = {
- .easyChat = {
- EC_WORD_I_AM,
- EC_WORD_PRETTY,
- EC_WORD_YOU,
- EC_WORD_CAN_T,
- EC_WORD_DON_T,
- EC_WORD_WINS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COOL_TRAINER_M,
- .name = _("MARIUS"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_BATTLE,
- EC_WORD_DAILY,
- EC_WORD_I,
- EC_WORD_WON_T,
- EC_WORD_LOSE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BIRD_KEEPER,
- .name = _("OLIVER"),
- .teamFlags = 0x11,
- .greeting = {
- .easyChat = {
- EC_WORD_GIGGLE,
- EC_WORD_GIGGLE,
- EC_WORD_SNORT,
- EC_WORD_HAPPILY,
- EC_WORD_GIGGLE,
- EC_WORD_MUFUFU,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
- .name = _("MOLLY"),
- .teamFlags = 0x12,
- .greeting = {
- .easyChat = {
- EC_WORD_IS,
- EC_WORD_TODAY,
- EC_WORD_MONDAY,
- EC_WORD_QUES,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BUG_MANIAC,
- .name = _("JÖRG"),
- .teamFlags = 0x40,
- .greeting = {
- .easyChat = {
- EC_WORD_WATER,
- 0xFFFF,
- EC_WORD_AND,
- EC_WORD_BUG,
- 0xFFFF,
- EC_WORD_POKEMON,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
- .name = _("ANKE"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_WHAT,
- EC_WORD_IS,
- EC_WORD_PRESSURE,
- EC_WORD_STATIC,
- EC_WORD_IS,
- EC_WORD_SUPER,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_FISHERMAN,
- .name = _("HANS"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_KID,
- EC_WORD_YOU,
- EC_WORD_CAN_T,
- EC_WORD_DON_T,
- EC_WORD_WINS,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SAILOR,
- .name = _("PETER"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_IT_S,
- EC_WORD_QUITE,
- EC_WORD_TERRIBLE,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_MODE,
- EC_WORD_I,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_EXPERT_F,
- .name = _("MARA"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU_RE,
- EC_WORD_VERY,
- EC_WORD_ALL_RIGHT,
- EC_WORD_TRAINS,
- EC_WORD_OR,
- EC_WORD_QUES,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BUG_MANIAC,
- .name = _("DARIUS"),
- .teamFlags = 0x11,
- .greeting = {
- .easyChat = {
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_TOUGH,
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_SCARY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F,
- .name = _("REGINA"),
- .teamFlags = 0x12,
- .greeting = {
- .easyChat = {
- EC_WORD_TODAY,
- EC_WORD_WIN,
- EC_WORD_I,
- EC_WORD_MAYBE,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PARASOL_LADY,
- .name = _("MAIKE"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_SO,
- EC_WORD_AN,
- EC_MOVE(SCARY_FACE),
- EC_WORD_IS,
- EC_WORD_NOT_VERY,
- EC_WORD_KIND,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
- .name = _("SANDRA"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_SPORTS,
- EC_WORD_IS,
- EC_WORD_HEALTHY,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_SPIRALING,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M,
- .name = _("ARNOLD"),
- .teamFlags = 0x08,
- .greeting = {
- .easyChat = {
- EC_WORD_AWESOME,
- EC_WORD_WHO_WAS,
- EC_WORD_POKEMON,
- EC_WORD_THOSE,
- EC_WORD_ROCK_SOLID,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BLACK_BELT,
- .name = _("XENO"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_HOO_HAH,
- EC_WORD_ARE,
- EC_WORD_YOU,
- EC_WORD_READY,
- EC_WORD_FOR,
- EC_WORD_SHADY,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COOL_TRAINER_F,
- .name = _("KARLA"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_YOU,
- EC_WORD_CAN_T,
- EC_WORD_ME,
- EC_WORD_NEVER,
- EC_WORD_SMITE,
- EC_WORD_KID,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COLLECTOR,
- .name = _("VOLKER"),
- .teamFlags = 0x80,
- .greeting = {
- .easyChat = {
- EC_WORD_FROM,
- EC_WORD_PLACE,
- EC_WORD_TO,
- EC_WORD_PLACE,
- EC_WORD_POKEMON,
- EC_WORD_WOWEE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
- .name = _("TOBIAS"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_THAT,
- EC_WORD_ISN_T,
- EC_WORD_SPORTS,
- EC_WORD_IT_S,
- EC_WORD_A,
- EC_WORD_FIGHTING,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GENTLEMAN,
- .name = _("NORBERT"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_MUST_BE,
- EC_WORD_WINS,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_PLEASE,
- EC_WORD_PLEASE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
- .name = _("ZITA"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_THAT,
- EC_WORD_IS,
- EC_WORD_SCARY,
- EC_WORD_PLEASE,
- EC_WORD_BE,
- EC_WORD_NICE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_BEAUTY,
- .name = _("ELKE"),
- .teamFlags = 0x20,
- .greeting = {
- .easyChat = {
- EC_WORD_WITHOUT,
- EC_MOVE(FLAIL),
- EC_WORD_NONE,
- EC_MOVE(WITHDRAW),
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_HIKER,
- .name = _("VITUS"),
- .teamFlags = 0x04,
- .greeting = {
- .easyChat = {
- EC_WORD_YAHOO,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- EC_WORD_LISTENS,
- EC_WORD_HER,
- EC_WORD_TO,
- EC_WORD_QUES,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_EXPERT_M,
- .name = _("MALTE"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_LEARN,
- EC_WORD_CORRECT,
- EC_WORD_TO,
- EC_WORD_FIGHT,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M,
- .name = _("TIM"),
- .teamFlags = 0x40,
- .greeting = {
- .easyChat = {
- EC_WORD_IT_S,
- EC_WORD_A,
- EC_WORD_FIGHTING,
- EC_WORD_NONE,
- EC_WORD_CHILD_S_PLAY,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_GUITARIST,
- .name = _("GAVIN"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_SHADY,
- EC_WORD_BABY,
- EC_WORD_BABY,
- EC_WORD_BABY,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_PSYCHIC_M,
- .name = _("RALF"),
- .teamFlags = 0x08,
- .greeting = {
- .easyChat = {
- EC_WORD_STICKY_HOLD,
- EC_WORD_THOSE,
- EC_WORD_IMPORTANT,
- EC_WORD_ISN_T_IT_QUES,
- 0xFFFF,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COOL_TRAINER_F,
- .name = _("JENNY"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_I,
- EC_WORD_SEARCH,
- EC_WORD_TRAINER,
- EC_WORD_ABSOLUTELY,
- EC_WORD_TOUGH,
- EC_WORD_THOSE,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_EXPERT_M,
- .name = _("JOEL"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_BELIEVE,
- EC_WORD_ON,
- EC_WORD_YOURS,
- EC_WORD_POKEMON,
- EC_WORD_AND,
- EC_WORD_WIN,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_DRAGON_TAMER,
- .name = _("KOLJA"),
- .teamFlags = 0x0C,
- .greeting = {
- .easyChat = {
- EC_WORD_GIRL,
- EC_WORD_WITH,
- EC_MOVE2(FORESIGHT),
- EC_WORD_THOSE,
- EC_WORD_NICE,
- 0xFFFF,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_COOL_TRAINER_M,
- .name = _("BILL"),
- .teamFlags = 0x01,
- .greeting = {
- .easyChat = {
- EC_WORD_WHO_WAS,
- EC_WORD_POWER,
- EC_WORD_IS,
- EC_WORD_OVERWHELMING,
- EC_WORD_DISAPPEAR,
- EC_WORD_BETTER,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_EXPERT_F,
- .name = _("CALLA"),
- .teamFlags = 0x10,
- .greeting = {
- .easyChat = {
- EC_WORD_TRAINER,
- EC_WORD_YOU,
- EC_WORD_ARE,
- EC_WORD_SEEMS,
- EC_WORD_CAPABLE,
- EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
- },
- },
- },
- {
- .trainerClass = FACILITY_CLASS_LADY,
- .name = _("GESA"),
- .teamFlags = 0x02,
- .greeting = {
- .easyChat = {
- EC_WORD_COME_ON,
- EC_WORD_ABSOLUTELY,
- EC_WORD_TIME,
- EC_WORD_BECOMES,
- EC_WORD_EXCELLENT,
- 0xFFFF,
- },
- },
- },
+ {
+ .trainerClass = FACILITY_CLASS_YOUNGSTER,
+ .name = _("ALWIN"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_READY,
+ EC_WORD_QUES,
+ EC_WORD_HERE_I_COME,
+ EC_WORD_EXCL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BIRD_KEEPER,
+ .name = _("DIRK"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_OH_KAY,
+ EC_WORD_I_AM,
+ EC_WORD_READY,
+ EC_WORD_EXCL,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_LADY,
+ .name = _("SIBILLE"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_THAT,
+ EC_WORD_BECOMES,
+ EC_WORD_A,
+ EC_WORD_CHILD_S_PLAY,
+ EC_WORD_GO,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BLACK_BELT,
+ .name = _("OLAF"),
+ .teamFlags = 0x05,
+ .greeting = {
+ EC_WORD_MY,
+ EC_WORD_GHOST,
+ EC_WORD_IS,
+ EC_WORD_FULL,
+ EC_WORD_TOUGHNESS,
+ EC_WORD_SNORT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_NINJA_BOY,
+ .name = _("JOST"),
+ .teamFlags = 0x05,
+ .greeting = {
+ EC_WORD_GO,
+ EC_WORD_WHO_WAS,
+ EC_WORD_POKEMON,
+ EC_WORD_FIGHT,
+ EC_WORD_FIGHT,
+ EC_WORD_FIGHT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .name = _("TINA"),
+ .teamFlags = 0x0A,
+ .greeting = {
+ EC_WORD_STUDY,
+ EC_WORD_IS,
+ EC_WORD_BORING,
+ EC_WORD_LET_S,
+ EC_WORD_BETTER,
+ EC_WORD_FIGHT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BUG_MANIAC,
+ .name = _("HAJO"),
+ .teamFlags = 0x41,
+ .greeting = {
+ EC_WORD_TOUGHNESS,
+ EC_WORD_AND,
+ EC_MOVE2(TRANSFORM),
+ EC_WORD_WILL,
+ EC_WORD_BABE,
+ EC_WORD_FAINT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_FISHERMAN,
+ .name = _("GEORG"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_IT,
+ EC_WORD_GOES,
+ EC_WORD_NOTHING,
+ EC_WORD_OVER,
+ EC_WORD_FISHING,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_TUBER_F,
+ .name = _("ANNE"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_POKEMON,
+ EC_WORD_MUST_BE,
+ EC_WORD_MAN,
+ EC_WORD_SIMPLE,
+ EC_WORD_ADORE,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEFAN_F,
+ .name = _("JULIA"),
+ .teamFlags = 0x42,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_CUTE,
+ EC_WORD_I_AM,
+ EC_WORD_QUITE,
+ EC_WORD_AN,
+ EC_WORD_LADY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GENTLEMAN,
+ .name = _("JOHANN"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_THE,
+ EC_WORD_DAY,
+ EC_WORD_IS,
+ EC_WORD_PERFECT,
+ EC_WORD_FOR,
+ EC_WORD_BATTLE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CAMPER,
+ .name = _("KARL"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_NOW,
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_MY,
+ EC_WORD_FRIEND,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ .name = _("KENDRA"),
+ .teamFlags = 0x0A,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_SMART,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_AND,
+ EC_WORD_YOU,
+ EC_WORD_QUES,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_HIKER,
+ .name = _("DAVID"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_WAHAHAHA,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_TODAY,
+ EC_WORD_IS,
+ EC_MOVE2(PAY_DAY),
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
+ .name = _("KEA"),
+ .teamFlags = 0x0A,
+ .greeting = {
+ EC_WORD_YOU_RE,
+ EC_WORD_TOUGH,
+ EC_WORD_OR,
+ EC_WORD_QUES,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PSYCHIC_M,
+ .name = _("JULIAN"),
+ .teamFlags = 0x05,
+ .greeting = {
+ EC_WORD_FUFUFU,
+ EC_WORD_YOU,
+ EC_WORD_CAN_T,
+ EC_WORD_DON_T,
+ EC_WORD_WINS,
+ EC_WORD_KID,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_LASS,
+ .name = _("JOSI"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_BE,
+ EC_WORD_KIND,
+ EC_WORD_TO,
+ EC_WORD_GIRL,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GUITARIST,
+ .name = _("LEIF"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_GREAT,
+ EC_WORD_YOU_RE,
+ EC_WORD_RATHER,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_OKAY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RICH_BOY,
+ .name = _("INGO"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_HAVE,
+ EC_WORD_ROUGH_SKIN,
+ EC_WORD_NATURAL_CURE,
+ EC_WORD_IS,
+ EC_WORD_ALL_RIGHT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BUG_CATCHER,
+ .name = _("LUDWIG"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_IF_I_WIN,
+ EC_WORD_IS,
+ EC_WORD_THAT,
+ EC_WORD_EXCITING,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PICNICKER,
+ .name = _("RAJA"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_WITH,
+ EC_WORD_POKEMON,
+ EC_WORD_TO,
+ EC_WORD_WALKING,
+ EC_WORD_IS,
+ EC_WORD_GREAT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COLLECTOR,
+ .name = _("HARALD"),
+ .teamFlags = 0x09,
+ .greeting = {
+ EC_WORD_HERE_GOES,
+ EC_WORD_MY,
+ EC_WORD_HUGE_POWER,
+ 0xFFFF,
+ EC_WORD_POKEMON,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_TUBER_M,
+ .name = _("KIM"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_A,
+ EC_WORD_GENIUS,
+ EC_WORD_WE,
+ EC_WORD_WILL,
+ EC_WORD_WINS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_KINDLER,
+ .name = _("ERWIN"),
+ .teamFlags = 0x05,
+ .greeting = {
+ EC_WORD_MY,
+ EC_WORD_FIRE,
+ EC_WORD_IS,
+ EC_WORD_VERY,
+ EC_WORD_HOT,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PSYCHIC_F,
+ .name = _("EIKA"),
+ .teamFlags = 0x0A,
+ .greeting = {
+ EC_WORD_FIGHTING,
+ EC_MOVE(ASTONISH),
+ EC_WORD_AND,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMER_F,
+ .name = _("ANNINA"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_SORRY,
+ EC_WORD_YOURS,
+ EC_WORD_POKEMON,
+ EC_WORD_WILL,
+ EC_WORD_DON_T,
+ EC_WORD_WINS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ .name = _("RUTH"),
+ .teamFlags = 0x06,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_TOUGH,
+ EC_WORD_WHO_WAS,
+ EC_WORD_POKEMON,
+ EC_WORD_TOO,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMANIAC,
+ .name = _("JENS"),
+ .teamFlags = 0x40,
+ .greeting = {
+ EC_WORD_WHO_WAS,
+ EC_WORD_POKEMON,
+ EC_WORD_THOSE,
+ EC_WORD_COOL,
+ EC_WORD_YOURS,
+ EC_WORD_LOSE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SAILOR,
+ .name = _("TITUS"),
+ .teamFlags = 0x09,
+ .greeting = {
+ EC_WORD_MY,
+ EC_WORD_FOE,
+ EC_WORD_IS,
+ EC_WORD_FINALLY,
+ EC_WORD_HERE,
+ EC_WORD_EXCELLENT,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .name = _("NICOLA"),
+ .teamFlags = 0x06,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_VORACIOUS,
+ EC_MOVE2(POUND),
+ EC_WORD_AND,
+ EC_MOVE2(BELLY_DRUM),
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_HEX_MANIAC,
+ .name = _("PAULA"),
+ .teamFlags = 0x42,
+ .greeting = {
+ EC_WORD_IS_IT_QUES,
+ EC_WORD_THOSE_ARE,
+ EC_WORD_UGLY,
+ EC_MOVE(SPITE),
+ EC_WORD_TO,
+ EC_WORD_TAKE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUIN_MANIAC,
+ .name = _("SÖREN"),
+ .teamFlags = 0x41,
+ .greeting = {
+ EC_WORD_ADVENTURE,
+ EC_WORD_AND,
+ EC_WORD_BATTLE,
+ EC_WORD_THOSE,
+ EC_WORD_WHO_WAS,
+ EC_WORD_LIKES,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .name = _("RAINER"),
+ .teamFlags = 0x09,
+ .greeting = {
+ EC_WORD_WE,
+ EC_WORD_CAN,
+ EC_WORD_VERSUS,
+ EC_WORD_CHILDREN,
+ EC_WORD_DON_T,
+ EC_WORD_LOSE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SCHOOL_KID_M,
+ .name = _("FABIAN"),
+ .teamFlags = 0x08,
+ .greeting = {
+ EC_WORD_DAILY,
+ EC_WORD_POKEMON,
+ EC_WORD_IN,
+ EC_WORD_THE,
+ EC_WORD_SCHOOL,
+ EC_WORD_AWESOME,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F,
+ .name = _("ELLEN"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_ALL_RIGHT,
+ EC_WORD_TO,
+ EC_WORD_POKEMON,
+ EC_WORD_QUES,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMER_M,
+ .name = _("ARNIE"),
+ .teamFlags = 0x09,
+ .greeting = {
+ EC_WORD_MY,
+ EC_WORD_FIGHTING,
+ EC_WORD_IS,
+ EC_WORD_PERFECTION,
+ EC_WORD_YOUR,
+ EC_WORD_USELESS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ .name = _("HARDI"),
+ .teamFlags = 0x09,
+ .greeting = {
+ EC_WORD_BOY,
+ EC_WORD_I_AM,
+ EC_WORD_MAYBE,
+ EC_WORD_TIRED,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BEAUTY,
+ .name = _("LINA"),
+ .teamFlags = 0x06,
+ .greeting = {
+ EC_WORD_A,
+ EC_WORD_TRAINER,
+ EC_WORD_HOW_DO,
+ EC_WORD_YOU,
+ EC_WORD_IS,
+ EC_WORD_EXCITING,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_AROMA_LADY,
+ .name = _("SELINA"),
+ .teamFlags = 0x06,
+ .greeting = {
+ EC_WORD_YOU_VE,
+ EC_WORD_STENCH,
+ EC_WORD_OR,
+ EC_MOVE(SWEET_SCENT),
+ EC_WORD_QUES,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COLLECTOR,
+ .name = _("DANTE"),
+ .teamFlags = 0x81,
+ .greeting = {
+ EC_WORD_YOURS,
+ EC_WORD_POKEMON,
+ EC_WORD_I,
+ EC_WORD_WANTS,
+ EC_WORD_SHE,
+ EC_WORD_EXCL_EXCL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ .name = _("KATJA"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_TODAY,
+ EC_WORD_WANTS,
+ EC_WORD_I,
+ EC_WORD_MY,
+ EC_WORD_BEST,
+ EC_WORD_GIVE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M,
+ .name = _("HORST"),
+ .teamFlags = 0x0C,
+ .greeting = {
+ EC_WORD_WAAAH,
+ EC_WORD_WAAAH,
+ EC_WORD_WAAAH,
+ EC_WORD_WAAAH,
+ EC_WORD_EHEHE,
+ EC_MOVE(FAKE_TEARS),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEFAN_M,
+ .name = _("GERRIT"),
+ .teamFlags = 0x80,
+ .greeting = {
+ EC_WORD_MY,
+ EC_WORD_ANIME,
+ EC_WORD_SONG,
+ EC_WORD_IS,
+ EC_WORD_DON_T,
+ EC_WORD_LOUSY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ .name = _("NIKO"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_BATTLE,
+ EC_WORD_DON_T,
+ EC_WORD_JUST,
+ EC_WORD_DO,
+ EC_WORD_SOMETHING,
+ EC_WORD_ELSE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M,
+ .name = _("BALDO"),
+ .teamFlags = 0x41,
+ .greeting = {
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_BUSY,
+ EC_WORD_HAS,
+ EC_WORD_THAT,
+ EC_WORD_TIME,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PARASOL_LADY,
+ .name = _("ALMA"),
+ .teamFlags = 0x08,
+ .greeting = {
+ EC_WORD_THAT,
+ EC_MOVE(MORNING_SUN),
+ EC_WORD_HAS,
+ EC_WORD_SO,
+ EC_WORD_A_LOT,
+ EC_MOVE(COSMIC_POWER),
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CAMPER,
+ .name = _("ADAM"),
+ .teamFlags = 0x0C,
+ .greeting = {
+ EC_WORD_EXCITING,
+ EC_WORD_BATTLE,
+ EC_WORD_THOSE,
+ EC_WORD_GREAT,
+ EC_WORD_YEEHAW_EXCL,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SCHOOL_KID_F,
+ .name = _("GRETE"),
+ .teamFlags = 0x42,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_WANTS,
+ EC_WORD_SOMETHING,
+ EC_MOVE(GROWTH),
+ EC_WORD_WORKS,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BEAUTY,
+ .name = _("NAOMI"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_IT,
+ EC_WORD_WAS,
+ EC_WORD_GREAT,
+ EC_WORD_YOUNG,
+ EC_WORD_TO,
+ EC_WORD_HIS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_NINJA_BOY,
+ .name = _("KENO"),
+ .teamFlags = 0x0C,
+ .greeting = {
+ EC_WORD_PLEASE,
+ EC_WORD_BE,
+ EC_WORD_DON_T,
+ EC_WORD_SO,
+ EC_WORD_MEAN,
+ EC_WORD_TO_ME,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_M,
+ .name = _("REMUS"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_WAKES_UP,
+ EC_MOVE2(HIDDEN_POWER),
+ EC_WORD_AND,
+ EC_MOVE(ASTONISH),
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_RANGER_F,
+ .name = _("EDITH"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_THE,
+ EC_WORD_BATTLE_TOWER,
+ EC_WORD_IS,
+ EC_WORD_SO,
+ EC_WORD_ENTERTAINING,
+ EC_WORD_AWESOME,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUIN_MANIAC,
+ .name = _("ANTON"),
+ .teamFlags = 0x41,
+ .greeting = {
+ EC_WORD_THICK_FAT,
+ EC_WORD_AND,
+ EC_WORD_CHLOROPHYLL,
+ EC_WORD_BLEND,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_TASTY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMER_M,
+ .name = _("MALTE"),
+ .teamFlags = 0x81,
+ .greeting = {
+ EC_WORD_AN,
+ EC_MOVE(SCARY_FACE),
+ EC_WORD_IS,
+ EC_WORD_DON_T,
+ EC_WORD_QUITE,
+ EC_WORD_TERRIBLE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_HEX_MANIAC,
+ .name = _("RAOUL"),
+ .teamFlags = 0x42,
+ .greeting = {
+ EC_WORD_RUN_AWAY,
+ EC_WORD_GIVE_ME,
+ EC_WORD_SON,
+ EC_WORD_BEST,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_M,
+ .name = _("RICK"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_WATER,
+ EC_WORD_IS,
+ EC_WORD_TASTY,
+ EC_WORD_HIP_AND,
+ EC_WORD_REFRESHING,
+ EC_WORD_YES_SIR_EXCL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEFAN_M,
+ .name = _("DENNIS"),
+ .teamFlags = 0x80,
+ .greeting = {
+ EC_WORD_GO,
+ EC_WORD_WHO_WAS,
+ EC_WORD_POKEMON,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PSYCHIC_F,
+ .name = _("GLORIA"),
+ .teamFlags = 0x82,
+ .greeting = {
+ EC_WORD_THE,
+ EC_WORD_FIGHTING,
+ EC_WORD_MUST_BE,
+ EC_WORD_HOT,
+ EC_WORD_HIS,
+ EC_WORD_FIERY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GUITARIST,
+ .name = _("NINO"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_MUSIC,
+ EC_WORD_IS,
+ EC_WORD_MY,
+ EC_WORD_EVERY,
+ EC_WORD_MY,
+ EC_WORD_DESTINY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_KINDLER,
+ .name = _("FIETE"),
+ .teamFlags = 0x41,
+ .greeting = {
+ EC_WORD_IT_S,
+ EC_WORD_ALL_RIGHT,
+ EC_WORD_VERY,
+ EC_WORD_ALL_RIGHT,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_AROMA_LADY,
+ .name = _("AMANDA"),
+ .teamFlags = 0x82,
+ .greeting = {
+ EC_WORD_WHAT,
+ EC_WORD_FOR,
+ EC_WORD_A,
+ EC_WORD_TRAINER,
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .name = _("MAREK"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_WE_VE,
+ EC_WORD_UNTIL,
+ EC_WORD_NOW,
+ EC_WORD_TOTALLY,
+ EC_WORD_NEVER,
+ EC_WORD_LOST,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_DRAGON_TAMER,
+ .name = _("NATHAN"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_DRAGON,
+ 0xFFFF,
+ EC_WORD_POKEMON,
+ EC_WORD_THOSE,
+ EC_WORD_FANTASTIC,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_LASS,
+ .name = _("MIRIAM"),
+ .teamFlags = 0x82,
+ .greeting = {
+ EC_WORD_YOU_RE,
+ EC_WORD_QUITE,
+ EC_WORD_TOO_STRONG,
+ EC_WORD_AM,
+ EC_WORD_BAD,
+ EC_WORD_NEWS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMANIAC,
+ .name = _("THEO"),
+ .teamFlags = 0x40,
+ .greeting = {
+ EC_WORD_PLUSH_DOLL,
+ EC_WORD_MUST_BE,
+ EC_WORD_MAN,
+ EC_WORD_SIMPLE,
+ EC_WORD_ADORE,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_F,
+ .name = _("PIA"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_HERE_I_COME,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_CUTE,
+ EC_WORD_A,
+ EC_WORD_CHANNEL,
+ EC_WORD_IDOL,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEFAN_F,
+ .name = _("ALISSA"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_YOURS,
+ EC_WORD_POKEMON,
+ EC_WORD_THOSE,
+ EC_WORD_PREPOSTEROUS,
+ EC_WORD_I_AM,
+ EC_WORD_SHOCKED,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GENTLEMAN,
+ .name = _("ARTUR"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_PLEASE,
+ EC_WORD_ALL,
+ EC_WORD_BATTLE,
+ EC_WORD_WEREN_T,
+ EC_WORD_GREAT,
+ EC_WORD_HIS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMER_F,
+ .name = _("MAJA"),
+ .teamFlags = 0x82,
+ .greeting = {
+ EC_WORD_I_AM,
+ EC_WORD_PRETTY,
+ EC_WORD_YOU,
+ EC_WORD_CAN_T,
+ EC_WORD_DON_T,
+ EC_WORD_WINS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COOL_TRAINER_M,
+ .name = _("MARIUS"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_BATTLE,
+ EC_WORD_DAILY,
+ EC_WORD_I,
+ EC_WORD_WON_T,
+ EC_WORD_LOSE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BIRD_KEEPER,
+ .name = _("OLIVER"),
+ .teamFlags = 0x11,
+ .greeting = {
+ EC_WORD_GIGGLE,
+ EC_WORD_GIGGLE,
+ EC_WORD_SNORT,
+ EC_WORD_HAPPILY,
+ EC_WORD_GIGGLE,
+ EC_WORD_MUFUFU,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_CYCLING_TRIATHLETE_F,
+ .name = _("MOLLY"),
+ .teamFlags = 0x12,
+ .greeting = {
+ EC_WORD_IS,
+ EC_WORD_TODAY,
+ EC_WORD_MONDAY,
+ EC_WORD_QUES,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BUG_MANIAC,
+ .name = _("JÖRG"),
+ .teamFlags = 0x40,
+ .greeting = {
+ EC_WORD_WATER,
+ 0xFFFF,
+ EC_WORD_AND,
+ EC_WORD_BUG,
+ 0xFFFF,
+ EC_WORD_POKEMON,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
+ .name = _("ANKE"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_WHAT,
+ EC_WORD_IS,
+ EC_WORD_PRESSURE,
+ EC_WORD_STATIC,
+ EC_WORD_IS,
+ EC_WORD_SUPER,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_FISHERMAN,
+ .name = _("HANS"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_KID,
+ EC_WORD_YOU,
+ EC_WORD_CAN_T,
+ EC_WORD_DON_T,
+ EC_WORD_WINS,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SAILOR,
+ .name = _("PETER"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_IT_S,
+ EC_WORD_QUITE,
+ EC_WORD_TERRIBLE,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_MODE,
+ EC_WORD_I,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_EXPERT_F,
+ .name = _("MARA"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_YOU_RE,
+ EC_WORD_VERY,
+ EC_WORD_ALL_RIGHT,
+ EC_WORD_TRAINS,
+ EC_WORD_OR,
+ EC_WORD_QUES,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BUG_MANIAC,
+ .name = _("DARIUS"),
+ .teamFlags = 0x11,
+ .greeting = {
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_TOUGH,
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_SCARY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_F,
+ .name = _("REGINA"),
+ .teamFlags = 0x12,
+ .greeting = {
+ EC_WORD_TODAY,
+ EC_WORD_WIN,
+ EC_WORD_I,
+ EC_WORD_MAYBE,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PARASOL_LADY,
+ .name = _("MAIKE"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_SO,
+ EC_WORD_AN,
+ EC_MOVE(SCARY_FACE),
+ EC_WORD_IS,
+ EC_WORD_NOT_VERY,
+ EC_WORD_KIND,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_RUNNING_TRIATHLETE_F,
+ .name = _("SANDRA"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_SPORTS,
+ EC_WORD_IS,
+ EC_WORD_HEALTHY,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_SPIRALING,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_RANGER_M,
+ .name = _("ARNOLD"),
+ .teamFlags = 0x08,
+ .greeting = {
+ EC_WORD_AWESOME,
+ EC_WORD_WHO_WAS,
+ EC_WORD_POKEMON,
+ EC_WORD_THOSE,
+ EC_WORD_ROCK_SOLID,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BLACK_BELT,
+ .name = _("XENO"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_HOO_HAH,
+ EC_WORD_ARE,
+ EC_WORD_YOU,
+ EC_WORD_READY,
+ EC_WORD_FOR,
+ EC_WORD_SHADY,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COOL_TRAINER_F,
+ .name = _("KARLA"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_YOU,
+ EC_WORD_CAN_T,
+ EC_WORD_ME,
+ EC_WORD_NEVER,
+ EC_WORD_SMITE,
+ EC_WORD_KID,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COLLECTOR,
+ .name = _("VOLKER"),
+ .teamFlags = 0x80,
+ .greeting = {
+ EC_WORD_FROM,
+ EC_WORD_PLACE,
+ EC_WORD_TO,
+ EC_WORD_PLACE,
+ EC_WORD_POKEMON,
+ EC_WORD_WOWEE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_SWIMMING_TRIATHLETE_M,
+ .name = _("TOBIAS"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_THAT,
+ EC_WORD_ISN_T,
+ EC_WORD_SPORTS,
+ EC_WORD_IT_S,
+ EC_WORD_A,
+ EC_WORD_FIGHTING,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GENTLEMAN,
+ .name = _("NORBERT"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_MUST_BE,
+ EC_WORD_WINS,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_PLEASE,
+ EC_WORD_PLEASE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BATTLE_GIRL,
+ .name = _("ZITA"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_THAT,
+ EC_WORD_IS,
+ EC_WORD_SCARY,
+ EC_WORD_PLEASE,
+ EC_WORD_BE,
+ EC_WORD_NICE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_BEAUTY,
+ .name = _("ELKE"),
+ .teamFlags = 0x20,
+ .greeting = {
+ EC_WORD_WITHOUT,
+ EC_MOVE(FLAIL),
+ EC_WORD_NONE,
+ EC_MOVE(WITHDRAW),
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_HIKER,
+ .name = _("VITUS"),
+ .teamFlags = 0x04,
+ .greeting = {
+ EC_WORD_YAHOO,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_LISTENS,
+ EC_WORD_HER,
+ EC_WORD_TO,
+ EC_WORD_QUES,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_EXPERT_M,
+ .name = _("MALTE"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_LEARN,
+ EC_WORD_CORRECT,
+ EC_WORD_TO,
+ EC_WORD_FIGHT,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_POKEMON_BREEDER_M,
+ .name = _("TIM"),
+ .teamFlags = 0x40,
+ .greeting = {
+ EC_WORD_IT_S,
+ EC_WORD_A,
+ EC_WORD_FIGHTING,
+ EC_WORD_NONE,
+ EC_WORD_CHILD_S_PLAY,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_GUITARIST,
+ .name = _("GAVIN"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_SHADY,
+ EC_WORD_BABY,
+ EC_WORD_BABY,
+ EC_WORD_BABY,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_PSYCHIC_M,
+ .name = _("RALF"),
+ .teamFlags = 0x08,
+ .greeting = {
+ EC_WORD_STICKY_HOLD,
+ EC_WORD_THOSE,
+ EC_WORD_IMPORTANT,
+ EC_WORD_ISN_T_IT_QUES,
+ 0xFFFF,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COOL_TRAINER_F,
+ .name = _("JENNY"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_I,
+ EC_WORD_SEARCH,
+ EC_WORD_TRAINER,
+ EC_WORD_ABSOLUTELY,
+ EC_WORD_TOUGH,
+ EC_WORD_THOSE,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_EXPERT_M,
+ .name = _("JOEL"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_BELIEVE,
+ EC_WORD_ON,
+ EC_WORD_YOURS,
+ EC_WORD_POKEMON,
+ EC_WORD_AND,
+ EC_WORD_WIN,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_DRAGON_TAMER,
+ .name = _("KOLJA"),
+ .teamFlags = 0x0C,
+ .greeting = {
+ EC_WORD_GIRL,
+ EC_WORD_WITH,
+ EC_MOVE2(FORESIGHT),
+ EC_WORD_THOSE,
+ EC_WORD_NICE,
+ 0xFFFF,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_COOL_TRAINER_M,
+ .name = _("BILL"),
+ .teamFlags = 0x01,
+ .greeting = {
+ EC_WORD_WHO_WAS,
+ EC_WORD_POWER,
+ EC_WORD_IS,
+ EC_WORD_OVERWHELMING,
+ EC_WORD_DISAPPEAR,
+ EC_WORD_BETTER,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_EXPERT_F,
+ .name = _("CALLA"),
+ .teamFlags = 0x10,
+ .greeting = {
+ EC_WORD_TRAINER,
+ EC_WORD_YOU,
+ EC_WORD_ARE,
+ EC_WORD_SEEMS,
+ EC_WORD_CAPABLE,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ },
+ },
+ {
+ .trainerClass = FACILITY_CLASS_LADY,
+ .name = _("GESA"),
+ .teamFlags = 0x02,
+ .greeting = {
+ EC_WORD_COME_ON,
+ EC_WORD_ABSOLUTELY,
+ EC_WORD_TIME,
+ EC_WORD_BECOMES,
+ EC_WORD_EXCELLENT,
+ 0xFFFF,
+ },
+ },
};
diff --git a/src/data/pokedex_entries_de.h b/src/data/pokedex_entries_de.h
index 0f64cba66..413b73d90 100644
--- a/src/data/pokedex_entries_de.h
+++ b/src/data/pokedex_entries_de.h
@@ -6337,7 +6337,8 @@ static const u8 DexDescription_Deoxys_2[] = _(
"dieses POKéMON ist sein Gehirn.");
#endif
-static const struct PokedexEntry gPokedexEntries[] = {
+const struct PokedexEntry gPokedexEntries[] =
+{
{
// Dummy
.categoryName = _("UNBEKANNT"),
diff --git a/src/data/pokedex_entries_en.h b/src/data/pokedex_entries_en.h
index 86da3d67b..933b1fc7d 100644
--- a/src/data/pokedex_entries_en.h
+++ b/src/data/pokedex_entries_en.h
@@ -5389,7 +5389,7 @@ static const u8 DexDescription_Deoxys_2[] = _(
"chest appears to be its brain.");
#endif
-static const struct PokedexEntry gPokedexEntries[] =
+const struct PokedexEntry gPokedexEntries[] =
{
{ //Dummy
.categoryName = _("UNKNOWN"),
diff --git a/src/field/daycare.c b/src/daycare.c
index 36dd7ec03..e26db531f 100644
--- a/src/field/daycare.c
+++ b/src/daycare.c
@@ -35,7 +35,7 @@ static void ClearDaycareMail(struct DayCareMail *);
static void SetInitialEggData(struct Pokemon *, u16, struct DayCare *);
static u8 GetDaycareCompatibilityScore(struct DayCare *);
-#include "../data/pokemon/egg_moves.h"
+#include "data/pokemon/egg_moves.h"
static const u8 *const sCompatibilityMessages[] = {
DaycareText_GetAlongVeryWell,
@@ -205,7 +205,7 @@ static u16 TakeSelectedPokemonFromDaycare(struct DayCare * daycare, u8 slot)
GetBoxMonNick(&daycare->mons[slot], gStringVar1);
species = GetBoxMonData(&daycare->mons[slot], MON_DATA_SPECIES);
- sub_803B4B4(&daycare->mons[slot], &pokemon);
+ ExpandBoxMon(&daycare->mons[slot], &pokemon);
if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL)
{
@@ -1574,102 +1574,23 @@ void SetDaycareCompatibilityString(void)
StringCopy(gStringVar4, sCompatibilityMessages[whichString]);
}
-#ifdef NONMATCHING
bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
{
u8 i;
u8 flags[2];
- // This portion is nonmatching
- flags[1] = 0;
- flags[0] = 0;
+ flags[0] = flags[1] = 0;
for (i = 0; name[i] != EOS; i++)
- // End nonmatching portion
-
{
if (name[i] == CHAR_MALE) flags[0]++;
if (name[i] == CHAR_FEMALE) flags[1]++;
}
- if (genderRatio == MON_MALE && flags[0] && !flags[1]) return TRUE;
- if (genderRatio == MON_FEMALE && flags[1] && !flags[0]) return TRUE;
+ if (genderRatio == MON_MALE && flags[0] && !flags[1])
+ return TRUE;
+ if (genderRatio == MON_FEMALE && flags[1] && !flags[0])
+ return TRUE;
return FALSE;
}
-#else
-__attribute__((naked))
-bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
-{
- asm_unified("\n"
- "\tpush {r4,r5,lr}\n"
- "\tsub sp, 0x4\n"
- "\tadds r4, r0, 0\n"
- "\tlsls r1, 24\n"
- "\tlsrs r5, r1, 24\n"
- "\tmov r2, sp\n"
- "\tmov r1, sp\n"
- "\tmovs r0, 0\n"
- "\tstrb r0, [r1, 0x1]\n"
- "\tstrb r0, [r2]\n"
- "\tmovs r3, 0\n"
- "\tldrb r0, [r4]\n"
- "\tcmp r0, 0xFF\n"
- "\tbeq _0804258C\n"
- "_08042564:\n"
- "\tadds r1, r4, r3\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r0, 0xB5\n"
- "\tbne _08042572\n"
- "\tldrb r0, [r2]\n"
- "\tadds r0, 0x1\n"
- "\tstrb r0, [r2]\n"
- "_08042572:\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r0, 0xB6\n"
- "\tbne _0804257E\n"
- "\tldrb r0, [r2, 0x1]\n"
- "\tadds r0, 0x1\n"
- "\tstrb r0, [r2, 0x1]\n"
- "_0804257E:\n"
- "\tadds r0, r3, 0x1\n"
- "\tlsls r0, 24\n"
- "\tlsrs r3, r0, 24\n"
- "\tadds r0, r4, r3\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0xFF\n"
- "\tbne _08042564\n"
- "_0804258C:\n"
- "\tcmp r5, 0\n"
- "\tbne _080425A0\n"
- "\tmov r0, sp\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0\n"
- "\tbeq _080425A0\n"
- "\tmov r0, sp\n"
- "\tldrb r0, [r0, 0x1]\n"
- "\tcmp r0, 0\n"
- "\tbeq _080425B4\n"
- "_080425A0:\n"
- "\tcmp r5, 0xFE\n"
- "\tbne _080425B8\n"
- "\tmov r0, sp\n"
- "\tldrb r0, [r0, 0x1]\n"
- "\tcmp r0, 0\n"
- "\tbeq _080425B8\n"
- "\tmov r0, sp\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0\n"
- "\tbne _080425B8\n"
- "_080425B4:\n"
- "\tmovs r0, 0x1\n"
- "\tb _080425BA\n"
- "_080425B8:\n"
- "\tmovs r0, 0\n"
- "_080425BA:\n"
- "\tadd sp, 0x4\n"
- "\tpop {r4,r5}\n"
- "\tpop {r1}\n"
- "\tbx r1");
-}
-#endif
static u8 *AppendGenderSymbol(u8 *name, u8 gender)
{
diff --git a/src/debug/kagaya_debug_menu.c b/src/debug/kagaya_debug_menu.c
new file mode 100644
index 000000000..3cb36ce0c
--- /dev/null
+++ b/src/debug/kagaya_debug_menu.c
@@ -0,0 +1,183 @@
+#if DEBUG
+
+#include "global.h"
+#include "field_effect.h"
+#include "field_control_avatar.h"
+#include "field_player_avatar.h"
+#include "main.h"
+#include "menu.h"
+#include "overworld.h"
+#include "palette.h"
+#include "random.h"
+#include "region_map.h"
+#include "script.h"
+#include "slot_machine.h"
+#include "trainer_card.h"
+
+extern u8 (*gMenuCallback)(void);
+
+void InitKagayaDebugMenu_B(void);
+u8 debug_sub_80B061C(void);
+u8 KagayaDebugMenu_TrainerCard(void);
+u8 debug_sub_80B068C(void);
+u8 KagayaDebugMenu_CardToExchange(void);
+u8 debug_sub_80B06E0(void);
+u8 KagayaDebugMenu_SlotMachine(void);
+u8 Kagaya_80B0734(void);
+u8 debug_sub_80B07DC(void);
+
+const u8 Str_83EBB34[] = _("Trainer’s card");
+const u8 Str_83EBB43[] = _("Card to exchange");
+const u8 Str_83EBB54[] = _("Slot machine");
+
+const struct MenuAction _83EBB64[] =
+{
+ { Str_83EBB34, KagayaDebugMenu_TrainerCard },
+ { Str_83EBB43, KagayaDebugMenu_CardToExchange },
+ { Str_83EBB54, KagayaDebugMenu_SlotMachine },
+};
+
+u8 InitKagayaDebugMenu_A(void)
+{
+ InitKagayaDebugMenu_B();
+ return 0;
+}
+
+void InitKagayaDebugMenu_B(void)
+{
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 14, 7);
+ Menu_PrintItems(2, 1, 3, _83EBB64);
+ InitMenu(0, 1, 1, 3, 0, 13);
+ gMenuCallback = debug_sub_80B061C;
+}
+
+u8 debug_sub_80B061C(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ if (input == -2)
+ {
+ return 0;
+ }
+ else if (input == -1)
+ {
+ CloseMenu();
+ return 1;
+ }
+ else
+ {
+ gMenuCallback = _83EBB64[input].func;
+ return 0;
+ }
+}
+
+u8 KagayaDebugMenu_TrainerCard(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gMenuCallback = debug_sub_80B068C;
+ return 0;
+}
+
+u8 debug_sub_80B068C(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ debug_sub_80A0710(sub_805469C);
+ CloseMenu();
+ ScriptContext2_Enable();
+ return 1;
+ }
+ return 0;
+}
+
+u8 KagayaDebugMenu_CardToExchange(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gMenuCallback = debug_sub_80B06E0;
+ return 0;
+}
+
+u8 debug_sub_80B06E0(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ debug_sub_80A073C(sub_805469C);
+ CloseMenu();
+ ScriptContext2_Enable();
+ return 1;
+ }
+ return 0;
+}
+
+u8 KagayaDebugMenu_SlotMachine(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gMenuCallback = Kagaya_80B0734;
+ return 0;
+}
+
+u8 Kagaya_80B0734(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ debug_sub_811609C(Random() % 6, sub_805469C);
+ CloseMenu();
+ ScriptContext2_Enable();
+ return 1;
+ }
+ return 0;
+}
+
+u8 debug_sub_80B0770(void)
+{
+ if (!(gPlayerAvatar.flags & 8))
+ {
+ CloseMenu();
+ if (IsPlayerFacingSurfableFishableWater())
+ {
+ gFieldEffectArguments[0] = 0;
+ FieldEffectStart(9);
+ }
+ }
+ else
+ {
+ CloseMenu();
+ }
+ return 1;
+}
+
+u8 debug_sub_80B07B0(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gMenuCallback = debug_sub_80B07DC;
+ return 0;
+}
+
+u8 debug_sub_80B07DC(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ CloseMenu();
+ SetMainCallback2(CB2_InitFlyRegionMap);
+ return 1;
+ }
+ return 0;
+}
+
+u8 debug_sub_80B0800(void)
+{
+ u8 r2;
+
+ CloseMenu();
+ r2 = sub_8068F18();
+ if (r2 != 0)
+ {
+ gFieldEffectArguments[0] = 0;
+ gFieldEffectArguments[1] = r2 - 1;
+ FieldEffectStart(0x2C);
+ }
+ return 1;
+}
+
+#endif // DEBUG
diff --git a/src/debug/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index 62d49fc62..0dbb491a7 100644
--- a/src/debug/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -68,166 +68,6 @@ const struct MenuAction gMatsudaDebugMenuActions[] =
{gMatsudaDebugMenu_ActionSetAllArtMuseumText, MatsudaDebugMenu_SetArtMuseumItems},
};
-const u8 gMatsudaDebugMenu_UnknownByteArray[] = {0xFC, 0x02, 0x0F, 0x00, 0xFF};
-const u8 Unknown_083C922D[] = INCBIN_U8("graphics/unknown/ball.4bpp");
-const u16 Unknown_083C924E[] = INCBIN_U16("graphics/unknown/ball.gbapal");
-
-const u8 gUnknown_083C926E[][2] =
-{
- {2, 0},
- {17, 0},
- {2, 2},
- {17, 2},
-};
-
-const u8 gMatsudaDebugMenuContestTopLeft[][2] =
-{
- {0, 6},
- {15, 6},
- {0, 8},
- {15, 8},
- {0, 10},
- {15, 10},
-};
-
-const u8 gUnknown_083C9282[] =
-{
- // TODO: 2d array?
- 7, 6,
- 22, 6,
- 7, 8,
- 22, 8,
- 7, 10,
- 22, 10,
-};
-
-const u8 gUnknown_083C928E[][2] =
-{
- {2, 14},
- {17, 14},
- {2, 16},
- {17, 16},
-};
-
-const u8 gUnknown_083C9296[] = {0x08, 0x80, 0x08, 0x80, 0x10, 0x10, 0x30, 0xA8, 0x30, 0xA8, 0x30, 0xA8, 0x08, 0x80, 0x08, 0x80, 0x10, 0x88};
-const u8 gUnknown_083C92A8[] = {0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x78, 0x88, 0x98};
-
-const struct SpriteSheet gUnknown_083C92B4[] = {Unknown_083C922D, 32, 0x4B0};
-const struct SpritePalette gUnknown_083C92BC[] = {Unknown_083C924E, 0x4B0};
-
-const struct OamData gOamData_83C92C4 =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 0,
- .x = 0,
- .matrixNum = 0,
- .size = 0,
- .tileNum = 0,
- .priority = 0,
- .paletteNum = 0,
- .affineParam = 0,
-};
-
-const struct SpriteTemplate gSpriteTemplate_83C92CC =
-{
- .tileTag = 1200,
- .paletteTag = 1200,
- .oam = &gOamData_83C92C4,
- .anims = gDummySpriteAnimTable,
- .images = NULL,
- .affineAnims = gDummySpriteAffineAnimTable,
- .callback = sub_80AA754,
-};
-
-static void (* const gUnknown_083C92E4[][2])(struct Sprite *, s8) =
-{
- {sub_80AA8C8, sub_80AA8D8},
- {sub_80AA8E8, sub_80AA8F8},
- {sub_80AAC5C, sub_80AAC5C},
- {sub_80AA930, sub_80AA974},
- {sub_80AA9B8, sub_80AA9FC},
- {sub_80AAA40, sub_80AAA84},
- {sub_80AAAF0, sub_80AAB30},
- {sub_80AAB70, sub_80AABB0},
- {sub_80AABF0, sub_80AAD44},
-};
-
-static const u8 gMatsudaDebugMenu_StartText[] = _("{COLOR CYAN}{HIGHLIGHT RED}");
-static const u8 gMatsudaDebugMenu_StartJapText[] = _("かいし"); // because StartText is only called by StringCopy, this part appears to be unused.
-static const u8 gMatsudaDebugMenu_GoBackText[] = _("もどる");
-
-#ifdef GERMAN
-static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP,");
-#else
-static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP.");
-#endif
-
-static const u8 MatsudaDebugMenuText_Cool[] = _("かっこよさ"); // cool
-static const u8 MatsudaDebugMenuText_Cute[] = _("かわいさ"); // cute
-static const u8 MatsudaDebugMenuText_Beauty[] = _("うつくしさ"); // beauty
-static const u8 MatsudaDebugMenuText_Smart[] = _("かしこさ"); // smart
-static const u8 MatsudaDebugMenuText_Tough[] = _("たくましさ"); // tough
-static const u8 MatsudaDebugMenuText_Sheen[] = _("けづや"); // sheen
-
-static const u8 *const gMatsudaDebugMenuTextList1[] =
-{
- MatsudaDebugMenuText_Cool,
- MatsudaDebugMenuText_Cute,
- MatsudaDebugMenuText_Beauty,
- MatsudaDebugMenuText_Smart,
- MatsudaDebugMenuText_Tough,
- MatsudaDebugMenuText_Sheen,
-};
-
-static const u8 MatsudaDebugMenuText_CoolContest[] = _("かっこよさコンテスト");
-static const u8 MatsudaDebugMenuText_BeautyContest[] = _("うつくしさコンテスト");
-static const u8 MatsudaDebugMenuText_CuteContest[] = _("かわいさコンテスト ");
-static const u8 MatsudaDebugMenuText_SmartContest[] = _("かしこさコンテスト ");
-static const u8 MatsudaDebugMenuText_ToughContest[] = _("たくましさコンテスト");
-
-static const u8 *const gMatsudaDebugMenuTextList2[] =
-{
- MatsudaDebugMenuText_CoolContest,
- MatsudaDebugMenuText_BeautyContest,
- MatsudaDebugMenuText_CuteContest,
- MatsudaDebugMenuText_SmartContest,
- MatsudaDebugMenuText_ToughContest,
-};
-
-static const u8 MatsudaDebugMenuText_Fallarbor[] = _("ハジツゲ/ノーマル"); // Fallarbor / Normal
-static const u8 MatsudaDebugMenuText_Verdanturf[] = _("シダケ/スーパー "); // Verdanturf / Super
-static const u8 MatsudaDebugMenuText_Slateport[] = _("カイナ/ハイパー "); // Slateport / Hyper
-static const u8 MatsudaDebugMenuText_Lilycove[] = _("ミナモ/マスター "); // Lilycove / Master
-
-static const u8 *const gMatsudaDebugMenuTextList3[] =
-{
- MatsudaDebugMenuText_Fallarbor,
- MatsudaDebugMenuText_Verdanturf,
- MatsudaDebugMenuText_Slateport,
- MatsudaDebugMenuText_Lilycove,
-};
-
-static const struct OamData gUnknown_083C9400 =
-{
- .y = 0,
- .affineMode = 0,
- .objMode = 0,
- .mosaic = 0,
- .bpp = 0,
- .shape = 1,
- .x = 0,
- .matrixNum = 0,
- .size = 1,
- .tileNum = 1023,
- .priority = 0,
- .paletteNum = 15,
- .affineParam = 0,
-};
-
u8 unref_sub_80A9B28(void)
{
Menu_EraseScreen();
@@ -452,14 +292,172 @@ static void sub_80A9F50(void)
static void sub_80A9FE4(void)
{
- u8 ptr[5];
-
- memcpy(ptr, gMatsudaDebugMenu_UnknownByteArray, 5);
+ u8 ptr[] = _("{HIGHLIGHT WHITE2} ");
DmaFill32Large(3, 0, (void *)VRAM, VRAM_SIZE, 0x1000);
sub_80034D4((void *)VRAM, ptr);
LoadFontDefaultPalette(&gWindowTemplate_81E6C3C);
}
+//const u8 gMatsudaDebugMenu_UnknownByteArray[] = {0xFC, 0x02, 0x0F, 0x00, 0xFF};
+const u8 Unknown_083C922D[] = INCBIN_U8("graphics/unknown/ball.4bpp");
+const u16 Unknown_083C924E[] = INCBIN_U16("graphics/unknown/ball.gbapal");
+
+const u8 gUnknown_083C926E[][2] =
+ {
+ {2, 0},
+ {17, 0},
+ {2, 2},
+ {17, 2},
+ };
+
+const u8 gMatsudaDebugMenuContestTopLeft[][2] =
+ {
+ {0, 6},
+ {15, 6},
+ {0, 8},
+ {15, 8},
+ {0, 10},
+ {15, 10},
+ };
+
+const u8 gUnknown_083C9282[] =
+ {
+ // TODO: 2d array?
+ 7, 6,
+ 22, 6,
+ 7, 8,
+ 22, 8,
+ 7, 10,
+ 22, 10,
+ };
+
+const u8 gUnknown_083C928E[][2] =
+ {
+ {2, 14},
+ {17, 14},
+ {2, 16},
+ {17, 16},
+ };
+
+const u8 gUnknown_083C9296[] = {0x08, 0x80, 0x08, 0x80, 0x10, 0x10, 0x30, 0xA8, 0x30, 0xA8, 0x30, 0xA8, 0x08, 0x80, 0x08, 0x80, 0x10, 0x88};
+const u8 gUnknown_083C92A8[] = {0x08, 0x18, 0x28, 0x38, 0x48, 0x58, 0x78, 0x88, 0x98};
+
+const struct SpriteSheet gUnknown_083C92B4[] = {Unknown_083C922D, 32, 0x4B0};
+const struct SpritePalette gUnknown_083C92BC[] = {Unknown_083C924E, 0x4B0};
+
+const struct OamData gOamData_83C92C4 =
+ {
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+ };
+
+const struct SpriteTemplate gSpriteTemplate_83C92CC =
+ {
+ .tileTag = 1200,
+ .paletteTag = 1200,
+ .oam = &gOamData_83C92C4,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80AA754,
+ };
+
+static void (* const gUnknown_083C92E4[][2])(struct Sprite *, s8) =
+ {
+ {sub_80AA8C8, sub_80AA8D8},
+ {sub_80AA8E8, sub_80AA8F8},
+ {sub_80AAC5C, sub_80AAC5C},
+ {sub_80AA930, sub_80AA974},
+ {sub_80AA9B8, sub_80AA9FC},
+ {sub_80AAA40, sub_80AAA84},
+ {sub_80AAAF0, sub_80AAB30},
+ {sub_80AAB70, sub_80AABB0},
+ {sub_80AABF0, sub_80AAD44},
+ };
+
+static const u8 gMatsudaDebugMenu_StartText[] = _("{COLOR CYAN}{HIGHLIGHT RED}");
+static const u8 gMatsudaDebugMenu_StartJapText[] = _("かいし"); // because StartText is only called by StringCopy, this part appears to be unused.
+static const u8 gMatsudaDebugMenu_GoBackText[] = _("もどる");
+
+#ifdef GERMAN
+static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP,");
+#else
+static const u8 gMatsudaDebugMenu_BattlePointsText[] = _("{COLOR MAGENTA}BP.");
+#endif
+
+static const u8 MatsudaDebugMenuText_Cool[] = _("かっこよさ"); // cool
+static const u8 MatsudaDebugMenuText_Cute[] = _("かわいさ"); // cute
+static const u8 MatsudaDebugMenuText_Beauty[] = _("うつくしさ"); // beauty
+static const u8 MatsudaDebugMenuText_Smart[] = _("かしこさ"); // smart
+static const u8 MatsudaDebugMenuText_Tough[] = _("たくましさ"); // tough
+static const u8 MatsudaDebugMenuText_Sheen[] = _("けづや"); // sheen
+
+static const u8 *const gMatsudaDebugMenuTextList1[] =
+ {
+ MatsudaDebugMenuText_Cool,
+ MatsudaDebugMenuText_Cute,
+ MatsudaDebugMenuText_Beauty,
+ MatsudaDebugMenuText_Smart,
+ MatsudaDebugMenuText_Tough,
+ MatsudaDebugMenuText_Sheen,
+ };
+
+static const u8 MatsudaDebugMenuText_CoolContest[] = _("かっこよさコンテスト");
+static const u8 MatsudaDebugMenuText_BeautyContest[] = _("うつくしさコンテスト");
+static const u8 MatsudaDebugMenuText_CuteContest[] = _("かわいさコンテスト ");
+static const u8 MatsudaDebugMenuText_SmartContest[] = _("かしこさコンテスト ");
+static const u8 MatsudaDebugMenuText_ToughContest[] = _("たくましさコンテスト");
+
+static const u8 *const gMatsudaDebugMenuTextList2[] =
+ {
+ MatsudaDebugMenuText_CoolContest,
+ MatsudaDebugMenuText_BeautyContest,
+ MatsudaDebugMenuText_CuteContest,
+ MatsudaDebugMenuText_SmartContest,
+ MatsudaDebugMenuText_ToughContest,
+ };
+
+static const u8 MatsudaDebugMenuText_Fallarbor[] = _("ハジツゲ/ノーマル"); // Fallarbor / Normal
+static const u8 MatsudaDebugMenuText_Verdanturf[] = _("シダケ/スーパー "); // Verdanturf / Super
+static const u8 MatsudaDebugMenuText_Slateport[] = _("カイナ/ハイパー "); // Slateport / Hyper
+static const u8 MatsudaDebugMenuText_Lilycove[] = _("ミナモ/マスター "); // Lilycove / Master
+
+static const u8 *const gMatsudaDebugMenuTextList3[] =
+ {
+ MatsudaDebugMenuText_Fallarbor,
+ MatsudaDebugMenuText_Verdanturf,
+ MatsudaDebugMenuText_Slateport,
+ MatsudaDebugMenuText_Lilycove,
+ };
+
+static const struct OamData gUnknown_083C9400 =
+ {
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 1023,
+ .priority = 0,
+ .paletteNum = 15,
+ .affineParam = 0,
+ };
+
static void sub_80AA064(void)
{
AnimateSprites();
@@ -955,7 +953,7 @@ void sub_80AAF30(void)
gUnknown_02038670[i] = 0;
gUnknown_02038680[i] = 0;
gUnknown_02038678[i] = 0;
- memcpy(&gContestMons[i], &gContestMons[3], sizeof(struct ContestPokemon));
+ gContestMons[i] = gContestMons[3];
}
gUnknown_02038670[3] = 0x12C;
diff --git a/src/debug/nakamura_debug_menu.c b/src/debug/nakamura_debug_menu.c
new file mode 100644
index 000000000..550ac7bbd
--- /dev/null
+++ b/src/debug/nakamura_debug_menu.c
@@ -0,0 +1,189 @@
+#if DEBUG
+#include "global.h"
+#include "menu.h"
+
+EWRAM_DATA u8 _nakamuraData0 = 0;
+EWRAM_DATA u8 _nakamuraData1 = 0;
+EWRAM_DATA u8 _nakamuraData2 = 0;
+EWRAM_DATA u8 _nakamuraData3 = 0;
+EWRAM_DATA u8 _nakamuraData4 = 0;
+EWRAM_DATA u8 _nakamuraData5 = 0;
+EWRAM_DATA u16 _nakamuraData6 = 0;
+EWRAM_DATA u16 _nakamuraData8 = 0;
+EWRAM_DATA u16 _nakamuraDataA = 0;
+EWRAM_DATA u16 _nakamuraDataC = 0;
+
+__attribute__((unused)) static u8 _nakamuraStatic0[0x18];
+__attribute__((unused)) static u8 _nakamuraStatic18;
+__attribute__((unused)) static u8 gDebugFiller3000814[4];
+
+asm(".global _nakamuraStatic0");
+asm(".global _nakamuraStatic18");
+
+u8 debug_sub_815FC54();
+u8 debug_sub_815F2B4();
+u8 debug_sub_815FC94();
+u8 debug_sub_815FB1C();
+u8 debug_sub_815F2F4();
+u8 debug_sub_815F62C();
+u8 debug_sub_815FBE8();
+u8 debug_sub_815FE1C();
+u8 debug_sub_8160D98();
+
+const u8 Str_843E36C[] = _("Berries");
+const u8 Str_843E374[] = _("Goods");
+const u8 Str_843E37A[] = _("{PKMN} list");
+const u8 Str_843E382[] = _("トラップ");
+const u8 Str_843E387[] = _("Move your base");
+const u8 Str_843E396[] = _("Moving {PKMN}");
+const u8 Str_843E3A0[] = _("Fishing points");
+const u8 Str_843E3AF[] = _("Set {POKEBLOCK}");
+const u8 Str_843E3B9[] = _("Make bases(to max)");
+const u8 Str_843E3CC[] = _("Base location");
+
+const struct MenuAction _843E3DC[] = {
+ { Str_843E36C, debug_sub_815FC54 },
+ { Str_843E37A, debug_sub_815F2B4 },
+ { Str_843E374, debug_sub_815FC94 },
+ { Str_843E387, debug_sub_815FB1C },
+ { Str_843E3B9, debug_sub_815F2F4 },
+ { Str_843E3CC, debug_sub_815F62C },
+ { Str_843E396, debug_sub_815FBE8 },
+ { Str_843E3A0, debug_sub_815FE1C },
+ { Str_843E3AF, debug_sub_8160D98 },
+};
+
+const u8 _843E424[][4] = {
+ { 1, 118, 47, 14 },
+ { 2, 125, 53, 10 },
+ { 3, 113, 49, 8 },
+ { 0xB, 118, 67, 6 },
+ { 0xC, 121, 40, 11 },
+ { 0xD, 111, 35, 1 },
+ { 0x15, 115, 20, 53 },
+ { 0x16, 121, 18, 13 },
+ { 0x17, 119, 26, 81 },
+ { 0x1F, 127, 59, 67 },
+ { 0x20, 125, 55, 11 },
+ { 0x21, 111, 27, 27 },
+ { 0x29, 114, 9, 47 },
+ { 0x2A, 115, 32, 39 },
+ { 0x2B, 115, 23, 8 },
+ { 0x33, 114, 30, 51 },
+ { 0x34, 115, 26, 15 },
+ { 0x35, 115, 32, 46 },
+ { 0x3D, 114, 11, 62 },
+ { 0x3E, 115, 21, 18 },
+ { 0x3F, 115, 25, 24 },
+ { 0x47, 114, 19, 70 },
+ { 0x48, 115, 32, 6 },
+ { 0x49, 114, 32, 57 },
+ { 0x51, 116, 71, 4 },
+ { 0x52, 123, 47, 3 },
+ { 0x53, 123, 57, 5 },
+ { 0x5B, 116, 79, 11 },
+ { 0x5C, 123, 49, 3 },
+ { 0x5D, 120, 18, 12 },
+ { 0x65, 120, 28, 62 },
+ { 0x66, 116, 56, 6 },
+ { 0x67, 119, 16, 81 },
+ { 0x6F, 120, 30, 62 },
+ { 0x70, 116, 55, 15 },
+ { 0x71, 119, 16, 28 },
+ { 0x79, 111, 33, 34 },
+ { 0x7A, 118, 29, 5 },
+ { 0x7B, 127, 45, 24 },
+ { 0x83, 111, 24, 36 },
+ { 0x84, 125, 7, 25 },
+ { 0x85, 115, 8, 30 },
+ { 0x8D, 111, 34, 50 },
+ { 0x8E, 127, 59, 72 },
+ { 0x8F, 127, 61, 21 },
+ { 0x97, 127, 67, 63 },
+ { 0x98, 125, 24, 32 },
+ { 0x99, 111, 35, 31 },
+ { 0xA1, 111, 13, 19 },
+ { 0xA2, 121, 43, 7 },
+ { 0xA3, 118, 47, 5 },
+ { 0xA4, 111, 14, 19 },
+ { 0xAB, 118, 46, 5 },
+ { 0xAC, 121, 42, 7 },
+ { 0xAD, 119, 19, 76 },
+ { 0xAE, 115, 7, 20 },
+ { 0xB5, 110, 16, 25 },
+ { 0xB6, 114, 11, 27 },
+ { 0xB7, 115, 8, 20 },
+ { 0xBF, 110, 17, 25 },
+ { 0xC0, 114, 12, 27 },
+ { 0xC1, 119, 18, 76 },
+ { 0xC9, 119, 5, 2 },
+ { 0xCA, 119, 4, 89 },
+ { 0xCB, 120, 38, 54 },
+ { 0xCC, 120, 5, 76 },
+ { 0xD3, 119, 5, 15 },
+ { 0xD4, 119, 7, 101 },
+ { 0xD5, 120, 31, 23 },
+ { 0xDD, 119, 34, 24 },
+ { 0xDE, 120, 26, 10 },
+ { 0xDF, 119, 4, 15 },
+ { 0xE7, 119, 31, 73 },
+ { 0xE8, 120, 29, 85 },
+ { 0xE9, 119, 6, 2 },
+};
+
+const u8 Str_843E550[] = _("R");
+const u8 Str_843E552[] = _("X");
+const u8 Str_843E554[] = _("Y");
+const u8 Str_843E556[] = _(
+ "♂1\n"
+ "♂2\n"
+ "♂3\n"
+ "♂4\n"
+ "♂5\n"
+ "♀1\n"
+ "♀2\n"
+ "♀3\n"
+ "♀4\n"
+ "♀5");
+const u8 Str_843E574[] = _("ー");
+const u8 Str_843E576[] = _("あ");
+const u8 Str_843E578[] = _("ア");
+const u8 Str_843E57A[] = _("A");
+const u8 Str_843E57C[] = _("a");
+const u8 Str_843E57E[] = _("0");
+const u8 Str_843E580[] = _(
+ "ADD\n"
+ "DEL\n"
+ "EXIT");
+const u8 Str_843E58D[] = _(
+ "Fishing location R119\n"
+ " Y1\n"
+ " Y2\n"
+ " Y3\n"
+ "Encounter location\n"
+ "\n"
+ "\n"
+ "front of you");
+const u8 _843E5D1[] = {0x0F, 0x16, 0x19};
+const u8 Str_843E5D4[] = _(
+ "Aボタン {ESCAPE}\p"
+ "  Bボタン ー\n"
+ "START けってい");
+const u8 Str_843E5F0[] = _("?");
+const u8 Str_843E5F2[] = _("HP どりょくち");
+const u8 Str_843E5FB[] = _("こうげき どりょくち");
+const u8 Str_843E606[] = _("ぼうぎょ どりょくち");
+const u8 Str_843E611[] = _("すばやさ どりょくち");
+const u8 Str_843E61C[] = _("とくこう どりょくち");
+const u8 Str_843E627[] = _("とくぼう どりょくち");
+const u8 Str_843E632[] = _("なつきど");
+const u8 Str_843E637[] = _("どりょくち ごうけい");
+const u8 Str_843E642[] = _("ここから");
+const u8 Str_843E647[] = _("ここまで");
+const u8 Str_843E64C[] = _("かいすう");
+const u8 Str_843E651[] = _("けっか");
+const u8 Str_843E655[] = _("かい");
+const u8 Str_843E658[] = _("0");
+const u8 Str_843E65A[] = _("はんい");
+
+#endif // DEBUG
diff --git a/src/debug/nohara_debug_menu.c b/src/debug/nohara_debug_menu.c
new file mode 100644
index 000000000..b3885ff76
--- /dev/null
+++ b/src/debug/nohara_debug_menu.c
@@ -0,0 +1,12 @@
+#if DEBUG
+#include "global.h"
+
+__attribute__((unused)) static u8 gDebug_03000724;
+__attribute__((unused)) static u8 gDebug_03000725;
+__attribute__((unused)) static u8 gDebug_03000726;
+
+asm(".global gDebug_03000724");
+asm(".global gDebug_03000725");
+asm(".global gDebug_03000726");
+
+#endif
diff --git a/src/debug/start_menu_debug.c b/src/debug/start_menu_debug.c
new file mode 100644
index 000000000..9b12c1cc1
--- /dev/null
+++ b/src/debug/start_menu_debug.c
@@ -0,0 +1,6051 @@
+#if DEBUG
+
+#include "global.h"
+#include "constants/songs.h"
+#include "battle.h"
+#include "debug.h"
+#include "link.h"
+#include "main.h"
+#include "menu.h"
+#include "mystery_event_menu.h"
+#include "overworld.h"
+#include "reset_rtc_screen.h"
+#include "rtc.h"
+#include "save.h"
+#include "sound.h"
+#include "task.h"
+#include "text.h"
+#include "trade.h"
+
+// berry_blender.c
+extern void unref_sub_80524BC(void);
+
+void debug_sub_8076BB4(u8);
+void debug_sub_8077CF4();
+
+u8 DebugMenu_Exit(void);
+u8 DebugMenu_OpenWatanabe(void);
+u8 DebugMenu_OpenSogabe(void);
+u8 DebugMenu_OpenTamada(void);
+u8 DebugMenu_OpenKagaya(void);
+u8 DebugMenu_OpenMatsuda(void);
+u8 DebugMenu_OpenNohara(void);
+u8 DebugMenu_OpenNakamura(void);
+u8 DebugMenu_Teleport(void);
+u8 DebugMenu_EditPKMN(void);
+u8 DebugMenu_SwitchBG(void);
+u8 DebugMenu_OpenMori(void);
+u8 DebugMenu_OpenTomomichi(void);
+u8 DebugMenu_OpenAoki(void);
+u8 DebugMenu_OpenTaya(void);
+u8 DebugMenu_ToggleClearFlag(void);
+u8 DebugMenu_ControlEncounter(void);
+u8 DebugMenu_PTime(void);
+u8 DebugMenu_MakeItems(void);
+u8 debug_sub_8091300(void);
+u8 DebugMenu_ViewPortraits(void);
+u8 DebugMenu_TimeRecords(void);
+u8 DebugMenu_SetTime(void);
+u8 DebugMenu_NationalDex(void);
+u8 DebugMenu_CreatePKMN(void);
+u8 DebugMenu_ViewPokemonGraphics(void);
+u8 DebugMenu_BattleForDebug(void);
+u8 DebugMenu_AllBadges(void);
+u8 DebugMenu_HoennNationalDex(void);
+u8 DebugMenu_SetRamBerry(void);
+u8 DebugMenu_UseHM(void);
+u8 DebugMenu_OpenIwasawa(void);
+u8 DebugMenu_ToggleBGM(void);
+u8 DebugMenu_OpenSizeComparison(void);
+u8 DebugMenu_Safari(void);
+u8 DebugMenu_RematchTrainers(void);
+u8 DebugMenu_MiragaIslandRND(void);
+u8 DebugMenu_HallOfFame(void);
+u8 DebugMenu_OpenMysteryEvent(void);
+u8 DebugMenu_OpenLegendsRecord(void);
+u8 DebugMenu_OpenWeatherEvents(void);
+u8 DebugMenu_CellInfo(void);
+u8 DebugMenu_CheckPKBLCK(void);
+u8 DebugMenu_EffortValues(void);
+u8 DebugMenu_HoennDex(void);
+u8 DebugMenu_OpenSeeTrainers(void);
+u8 DebugMenu_OpenBerryInfo(void);
+u8 DebugMenu_BattleTowerStages(void);
+u8 DebugMenu_EndSequenceDemo(void);
+u8 DebugMenu_RandomNumberTest(void);
+u8 DebugMenu_MeTooBackupMan(void);
+u8 DebugMenu_OpenMurakawa(void);
+u8 DebugMenu_OpenKiwa(void);
+u8 DebugMenu_8076CBC(void);
+u8 DebugMenu_8076CC0(void);
+u8 DebugMenu_8076CD4(void);
+u8 DebugMenu_8076C6C(void);
+u8 DebugMenu_8076CD8(void);
+u8 DebugMenu_8076D28(void);
+u8 DebugMenu_8076D3C(void);
+u8 DebugMenu_8076C80(void);
+u8 DebugMenu_8076C90(void);
+u8 DebugMenu_8076D50(void);
+u8 DebugMenu_8076CEC(void);
+u8 DebugMenu_8076D14(void);
+u8 DebugMenu_8076D00(void);
+u8 DebugMenu_8076D5C(void);
+u8 DebugMenu_8076E18(void);
+u8 DebugMenu_8076EDC(void);
+void DebugMenu_8076FEC(void);
+
+const u8 Str_839B740[] = _("·WATANABE");
+const u8 Str_839B74A[] = _("SOGABE");
+const u8 Str_839B751[] = _("·TAMADA");
+const u8 Str_839B759[] = _("KAGAYA");
+const u8 Str_839B760[] = _("MATUDA");
+const u8 Str_839B767[] = _("NOHARA");
+const u8 Str_839B76E[] = _("NAKAMURA");
+const u8 Str_839B777[] = _("EXIT");
+const u8 Str_839B77C[] = _("Teleport");
+const u8 Str_839B785[] = _("Switch BG");
+const u8 Str_839B78F[] = _("Edit your {PKMN}");
+const u8 Str_839B79C[] = _("MORI");
+const u8 Str_839B7A1[] = _("TOMOMITI");
+const u8 Str_839B7AA[] = _("·AOKI");
+const u8 Str_839B7B0[] = _("TAYA");
+const u8 Str_839B7B5[] = _("Control Encounter");
+const u8 Str_839B7C7[] = _("PTIME");
+const u8 Str_839B7CD[] = _("Make items");
+const u8 Str_839B7D8[] = _("Transport");
+const u8 Str_839B7E2[] = _("See portraits");
+const u8 Str_839B7F0[] = _("Time records");
+const u8 Str_839B7FD[] = _("Set time");
+const u8 Str_839B806[] = _("National オカDex");
+const u8 Str_839B815[] = _("Hoenn オカDex");
+const u8 Str_839B821[] = _("Create {PKMN}");
+const u8 Str_839B82B[] = _("See {PKMN} graphics");
+const u8 Str_839B83B[] = _("See trainers");
+const u8 Str_839B848[] = _("Battle for debug");
+const u8 Str_839B859[] = _("Full set of badges");
+const u8 Str_839B86C[] = _("Hoenn National Dex");
+const u8 Str_839B87F[] = _("Set Ram berry");
+const u8 Str_839B88D[] = _("Use HM");
+const u8 Str_839B894[] = _("IWASAWA");
+const u8 Str_839B89C[] = _("BGM ON/OFF");
+const u8 Str_839B8A7[] = _("Size comparison");
+const u8 Str_839B8B7[] = _("Clear flag ON/OFF");
+const u8 Str_839B8C9[] = _("Safari");
+const u8 Str_839B8D0[] = _("Rematch trainers");
+const u8 Str_839B8E1[] = _("Mirage island RND");
+const u8 Str_839B8F3[] = _("Hall of fame");
+const u8 Str_839B900[] = _("Mystery event");
+const u8 Str_839B90E[] = _("Legends records");
+const u8 Str_839B91E[] = _("Weather events");
+const u8 Str_839B92D[] = _("Cell info.");
+const u8 Str_839B938[] = _("Check {POKEBLOCK}");
+const u8 Str_839B944[] = _("Effort values");
+const u8 Str_839B952[] = _("Berrie Info");
+const u8 Str_839B95E[] = _("Battle Tower stages");
+const u8 Str_839B972[] = _("End sequence demo");
+const u8 Str_839B984[] = _("Random number test");
+const u8 Str_839B997[] = _("Me-too BackupMan");
+const u8 Str_839B9A8[] = _("MURAKAWA");
+const u8 Str_839B9B1[] = _("KINA(FONT)");
+
+const struct MenuAction gDebug0x839B9BC[] =
+{
+ { Str_839B777, DebugMenu_Exit },
+ { Str_839B740, DebugMenu_OpenWatanabe },
+ { Str_839B74A, DebugMenu_OpenSogabe },
+ { Str_839B751, DebugMenu_OpenTamada },
+ { Str_839B759, DebugMenu_OpenKagaya },
+ { Str_839B760, DebugMenu_OpenMatsuda },
+ { Str_839B767, DebugMenu_OpenNohara },
+ { Str_839B76E, DebugMenu_OpenNakamura },
+ { Str_839B77C, DebugMenu_Teleport },
+ { Str_839B78F, DebugMenu_EditPKMN },
+ { Str_839B785, DebugMenu_SwitchBG },
+ { Str_839B79C, DebugMenu_OpenMori },
+ { Str_839B7A1, DebugMenu_OpenTomomichi },
+ { Str_839B7AA, DebugMenu_OpenAoki },
+ { Str_839B7B0, DebugMenu_OpenTaya },
+ { Str_839B8B7, DebugMenu_ToggleClearFlag },
+ { Str_839B7B5, DebugMenu_ControlEncounter },
+ { Str_839B7C7, DebugMenu_PTime },
+ { Str_839B7CD, DebugMenu_MakeItems },
+ { Str_839B7D8, debug_sub_8091300 },
+ { Str_839B7E2, DebugMenu_ViewPortraits },
+ { Str_839B7F0, DebugMenu_TimeRecords },
+ { Str_839B7FD, DebugMenu_SetTime },
+ { Str_839B806, DebugMenu_NationalDex },
+ { Str_839B821, DebugMenu_CreatePKMN },
+ { Str_839B82B, DebugMenu_ViewPokemonGraphics },
+ { Str_839B848, DebugMenu_BattleForDebug },
+ { Str_839B859, DebugMenu_AllBadges },
+ { Str_839B86C, DebugMenu_HoennNationalDex },
+ { Str_839B87F, DebugMenu_SetRamBerry },
+ { Str_839B88D, DebugMenu_UseHM },
+ { Str_839B894, DebugMenu_OpenIwasawa },
+ { Str_839B89C, DebugMenu_ToggleBGM },
+ { Str_839B8A7, DebugMenu_OpenSizeComparison },
+ { Str_839B8C9, DebugMenu_Safari },
+ { Str_839B8D0, DebugMenu_RematchTrainers },
+ { Str_839B8E1, DebugMenu_MiragaIslandRND },
+ { Str_839B8F3, DebugMenu_HallOfFame },
+ { Str_839B900, DebugMenu_OpenMysteryEvent },
+ { Str_839B90E, DebugMenu_OpenLegendsRecord },
+ { Str_839B91E, DebugMenu_OpenWeatherEvents },
+ { Str_839B92D, DebugMenu_CellInfo },
+ { Str_839B938, DebugMenu_CheckPKBLCK },
+ { Str_839B944, DebugMenu_EffortValues },
+ { Str_839B815, DebugMenu_HoennDex },
+ { Str_839B83B, DebugMenu_OpenSeeTrainers },
+ { Str_839B952, DebugMenu_OpenBerryInfo },
+ { Str_839B95E, DebugMenu_BattleTowerStages },
+ { Str_839B972, DebugMenu_EndSequenceDemo },
+ { Str_839B984, DebugMenu_RandomNumberTest },
+ { Str_839B997, DebugMenu_MeTooBackupMan },
+ { Str_839B9A8, DebugMenu_OpenMurakawa },
+ { Str_839B9B1, DebugMenu_OpenKiwa },
+};
+
+const u8 gUnknown_Debug_839BB64[] =
+{
+ 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x00, 0x0b, 0x0c, 0x0d, 0x0e, 0x1f, 0x12, 0x13, 0x00, 0x08, 0x09, 0x0a, 0x1e, 0x10, 0x24, 0x0f, 0x00, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x00,
+ 0x1c, 0x1d, 0x14, 0x20, 0x21, 0x22, 0x23, 0x00, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x00, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x32, 0x00, 0x11, 0x33, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00,
+};
+
+const u8 gUnknown_Debug_0839BBA4[] = _("Debugging Version");
+const u8 gUnknown_Debug_0839BBB6[] = _("{VERSION} Version");
+const u8 gUnknown_Debug_0839BBC1[] = _("Normal RTC compatible");
+const u8 Str_839BBD7[] = _("か の じっけん");
+const u8 Str_839BBE0[] = _("じっけん2");
+const u8 Str_839BBE6[] = _("BGじっけん");
+const u8 Str_839BBED[] = _("Battle");
+const u8 Str_839BBF4[] = _("つうしん じっけん");
+const u8 Str_839BBFE[] = _("LINK Test2");
+const u8 Str_839BC09[] = _("フィールド はじめる");
+const u8 Str_839BC14[] = _("フィールド つづき");
+const u8 Str_839BC1E[] = _("Sound test");
+const u8 Str_839BC29[] = _("{POKEBLOCK} test");
+const u8 Str_839BC34[] = _("Crash backup data");
+const u8 Str_839BC46[] = _("e-Card test");
+const u8 Str_839BC52[] = _("こうかんデモ   ");
+const u8 Str_839BC5C[] = _("Time in game");
+const u8 Str_839BC69[] = _("フェスタ モード");
+const u8 Str_839BC72[] = _("Mimic e-Card");
+const u8 Str_839BC7F[] = _("RTC reset");
+const u8 Str_839BC89[] = _("Converter");
+
+const struct MenuAction gUnknown_Debug_839BC94[] =
+{
+ { Str_839BBD7, DebugMenu_8076CBC },
+ { Str_839BBE0, DebugMenu_8076CC0 },
+ { Str_839BBE6, DebugMenu_8076CD4 },
+ { Str_839BBED, DebugMenu_8076C6C },
+ { Str_839BC29, DebugMenu_8076CD8 },
+ { Str_839BBFE, DebugMenu_8076D28 },
+ { Str_839BC1E, DebugMenu_8076D3C },
+ { Str_839BC09, DebugMenu_8076C80 },
+ { Str_839BC14, DebugMenu_8076C90 },
+ { Str_839BC34, DebugMenu_8076D50 },
+ { Str_839BC46, DebugMenu_8076CEC },
+ { Str_839BC52, DebugMenu_8076D14 },
+ { Str_839BC72, DebugMenu_8076D00 },
+ { Str_839BC5C, DebugMenu_8076D5C },
+ { Str_839BC7F, DebugMenu_8076E18 },
+ { Str_839BC89, DebugMenu_8076EDC },
+};
+
+// NOTE: When decompiling this file, I found out that having an extraneous extern
+// in a C file can affect the generated asm. If this extern is commented out,
+// debug_sub_8076BB4 will access the array differently and no longer match.
+//extern const struct MenuAction gUnknown_Debug_839BC94[];
+
+const u8 gMenuOrders_839BD14[][10] =
+{
+ { 3, 6, 4, 0xFF },
+ { 5, 9, 10, 12, 13, 14, 15, 0xFF },
+};
+
+const u8 Str_839BD26[] = {2, 0, 0, 0}; // doesn't appear to be referenced
+
+const u8 Str_839BD2C[] = _("RTCを リセット します\n" // Reset RTC
+ "Aで じっこう   Bでキャンセル");
+
+const u8 Str_839BD4C[] = _("RTCを リセット した!");
+
+const u8 Str_839BD5A[] = _("セーブデータを コンバートします\n"
+ "Aで けってい  Bで キャンセル");
+
+const u8 Str_839BD7D[] = _("へんかんが しゅうりょう しました!");
+
+
+extern const u8 Str_839BD2C[];
+extern const u8 Str_839BD4C[];
+
+__attribute__((unused)) static u8 gUnknown_030006B8[4];
+__attribute__((unused)) static u8 gUnknown_030006BC[4];
+__attribute__((unused)) static u8 gUnknown_030006C0;
+__attribute__((unused)) static u8 gUnknown_030006C1;
+static const u8 *gUnknown_030006C4;
+__attribute__((unused)) static u8 gUnknown_030006C8;
+
+void debug_sub_8076AC8(u8 a)
+{
+ s32 r4;
+
+ gUnknown_030006C4 = gMenuOrders_839BD14[a];
+ for (r4 = 0; gUnknown_030006C4[r4] != 0xFF; r4++)
+ ;
+ Menu_EraseWindowRect(16, 0, 29, 19);
+ Menu_DrawStdWindowFrame(16, 0, 29, r4 * 2 + 1);
+ Menu_PrintItemsReordered(17, 1, r4, (struct MenuAction2 *)gUnknown_Debug_839BC94, gUnknown_030006C4);
+ InitMenu(0, 17, 1, r4, 0, 12);
+}
+
+void debug_sub_8076B4C(void)
+{
+ u8 taskId = FindTaskIdByFunc(debug_sub_8076BB4);
+
+ if (taskId != 0xFF)
+ DestroyTask(taskId);
+}
+
+// Initializes test menu
+void debug_sub_8076B68(void)
+{
+ Menu_PrintText(gUnknown_Debug_0839BBB6, 1, 1);
+ Menu_PrintText(gUnknown_Debug_0839BBC1, 1, 3);
+ Menu_PrintText(gUnknown_Debug_0839BBA4, 1, 9);
+ debug_sub_8077CF4(4, 11);
+ debug_sub_8076AC8(0);
+ CreateTask(debug_sub_8076BB4, 1);
+}
+
+// Handles input for the test menu
+void debug_sub_8076BB4(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s8 input = Menu_ProcessInput();
+ s8 cursorPos = Menu_GetCursorPos();
+
+ switch (input)
+ {
+ default:
+ gUnknown_Debug_839BC94[gUnknown_030006C4[cursorPos]].func();
+ break;
+ case -2:
+ if (gMain.newKeys & 0x20)
+ {
+ if (data[0] == 0)
+ data[0] = 1;
+ else
+ data[0]--;
+ debug_sub_8076AC8(data[0]);
+ PlaySE(SE_SELECT);
+ }
+ else if (gMain.newKeys & 0x10)
+ {
+ if (data[0] == 1)
+ data[0] = 0;
+ else
+ data[0]++;
+ debug_sub_8076AC8(data[0]);
+ PlaySE(SE_SELECT);
+ }
+ break;
+ case -1:
+ DoSoftReset();
+ break;
+ }
+}
+
+u8 DebugMenu_8076C6C(void)
+{
+ SetMainCallback2(debug_sub_8010800);
+ return 0;
+}
+
+u8 DebugMenu_8076C80(void)
+{
+ debug_sub_8076B4C();
+ DebugMenu_8076FEC();
+ return 0;
+}
+
+u8 DebugMenu_8076C90(void)
+{
+ if (gSaveFileStatus == SAVE_STATUS_ERROR)
+ {
+ PlaySE(0x16);
+ }
+ else
+ {
+ debug_sub_8076B4C();
+ SetMainCallback2(CB2_ContinueSavedGame);
+ }
+ return 0;
+}
+
+u8 DebugMenu_8076CBC(void)
+{
+ return 0;
+}
+
+u8 DebugMenu_8076CC0(void)
+{
+ SetMainCallback2(debug_nullsub_66);
+ return 0;
+}
+
+u8 DebugMenu_8076CD4(void)
+{
+ return 0;
+}
+
+u8 DebugMenu_8076CD8(void)
+{
+ SetMainCallback2(unref_sub_80524BC);
+ return 0;
+}
+
+u8 DebugMenu_8076CEC(void)
+{
+ SetMainCallback2(CB2_InitMysteryEventMenu);
+ return 0;
+}
+
+u8 DebugMenu_8076D00(void)
+{
+ SetMainCallback2(debug_sub_815D15C);
+ return 0;
+}
+
+u8 DebugMenu_8076D14(void)
+{
+ SetMainCallback2(sub_804B790);
+ return 0;
+}
+
+u8 DebugMenu_8076D28(void)
+{
+ SetMainCallback2(LinkTestScreen);
+ return 0;
+}
+
+u8 DebugMenu_8076D3C(void)
+{
+ SetMainCallback2(CB2_StartSoundCheckMenu);
+ return 0;
+}
+
+u8 DebugMenu_8076D50(void)
+{
+ Save_EraseAllData();
+ return 0;
+}
+
+u8 DebugMenu_8076D5C(void)
+{
+ debug_sub_8076B4C();
+ debug_sub_806F8F8();
+ return 0;
+}
+
+void DebugMenu_8076D6C(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_839BD2C, 2, 15);
+ data[0]++;
+ break;
+ case 1:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_839BD4C, 2, 15);
+ PlaySE(0x49);
+ RtcReset();
+ data[0]++;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ DestroyTask(taskId);
+ DoSoftReset();
+ }
+ break;
+ case 2:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ DestroyTask(taskId);
+ DoSoftReset();
+ }
+ break;
+ }
+}
+
+__attribute__((naked))
+u8 DebugMenu_8076E18()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8076B4C\n"
+ " ldr r0, ._67 @ DebugMenu_8076D6C\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._68:\n"
+ " .align 2, 0\n"
+ "._67:\n"
+ " .word DebugMenu_8076D6C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076E30()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " lsl r0, r3, #0x2\n"
+ " add r0, r0, r3\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._73 @ gTasks\n"
+ " add r4, r0, r1\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r4, r0]\n"
+ " cmp r1, #0x1\n"
+ " beq ._69 @cond_branch\n"
+ " cmp r1, #0x1\n"
+ " bgt ._70 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq ._71 @cond_branch\n"
+ " b ._86\n"
+ "._74:\n"
+ " .align 2, 0\n"
+ "._73:\n"
+ " .word gTasks+0x8\n"
+ "._70:\n"
+ " cmp r1, #0x2\n"
+ " beq ._75 @cond_branch\n"
+ " b ._86\n"
+ "._71:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._78 @ Str_839BD5A\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " b ._77\n"
+ "._79:\n"
+ " .align 2, 0\n"
+ "._78:\n"
+ " .word Str_839BD5A\n"
+ "._69:\n"
+ " ldr r0, ._82 @ gMain\n"
+ " ldrh r2, [r0, #0x2e]\n"
+ " and r1, r1, r2\n"
+ " cmp r1, #0\n"
+ " beq ._80 @cond_branch\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " bl sub_813B79C\n"
+ " ldr r0, ._82 + 4 @ Str_839BD7D\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ "._77:\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._86\n"
+ "._83:\n"
+ " .align 2, 0\n"
+ "._82:\n"
+ " .word gMain\n"
+ " .word Str_839BD7D\n"
+ "._80:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._86 @cond_branch\n"
+ " add r0, r3, #0\n"
+ " bl DestroyTask\n"
+ " bl DoSoftReset\n"
+ " b ._86\n"
+ "._75:\n"
+ " ldr r0, ._87 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._86 @cond_branch\n"
+ " add r0, r3, #0\n"
+ " bl DestroyTask\n"
+ " bl DoSoftReset\n"
+ "._86:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._88:\n"
+ " .align 2, 0\n"
+ "._87:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_8076EDC()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8076B4C\n"
+ " ldr r0, ._89 @ DebugMenu_8076E30\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._90:\n"
+ " .align 2, 0\n"
+ "._89:\n"
+ " .word DebugMenu_8076E30+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076EF4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xb\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r4, ._93 @ gUnknown_Debug_839BDC4\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " add r3, r4, #0\n"
+ " bl Menu_PrintItems\n"
+ " mov r5, #0x0\n"
+ " add r4, r4, #0x4\n"
+ "._92:\n"
+ " lsl r0, r5, #0x3\n"
+ " add r0, r0, r4\n"
+ " ldr r1, [r0]\n"
+ " mov r0, #0x1\n"
+ " and r1, r1, r0\n"
+ " mov r0, #0xb6\n"
+ " cmp r1, #0\n"
+ " bne ._91 @cond_branch\n"
+ " mov r0, #0xb5\n"
+ "._91:\n"
+ " lsl r2, r5, #0x1\n"
+ " add r2, r2, #0x1\n"
+ " lsl r2, r2, #0x18\n"
+ " lsr r2, r2, #0x18\n"
+ " mov r1, #0xa\n"
+ " bl sub_8071F60\n"
+ " add r0, r5, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " cmp r5, #0x7\n"
+ " bls ._92 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x9\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._94:\n"
+ " .align 2, 0\n"
+ "._93:\n"
+ " .word gUnknown_Debug_839BDC4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076F60()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " bl Menu_ProcessInput\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r2, r0, #0x18\n"
+ " lsl r4, r4, #0x18\n"
+ " asr r4, r4, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._97 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r4, r0\n"
+ " bne ._96 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl debug_sub_8076B68\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " b ._97\n"
+ "._96:\n"
+ " ldr r3, ._100 @ gUnknown_Debug_839BDC4\n"
+ " lsl r2, r2, #0x18\n"
+ " asr r2, r2, #0x15\n"
+ " add r0, r3, #4\n"
+ " add r0, r2, r0\n"
+ " ldrb r4, [r0]\n"
+ " ldr r0, ._100 + 4 @ gSaveBlock2\n"
+ " mov r1, #0x1\n"
+ " and r1, r1, r4\n"
+ " strb r1, [r0, #0x8]\n"
+ " add r2, r2, r3\n"
+ " ldr r1, [r2]\n"
+ " bl StringCopy\n"
+ " mov r0, #0x80\n"
+ " and r4, r4, r0\n"
+ " cmp r4, #0\n"
+ " bne ._98 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " bl debug_sub_8057508\n"
+ " b ._99\n"
+ "._101:\n"
+ " .align 2, 0\n"
+ "._100:\n"
+ " .word gUnknown_Debug_839BDC4\n"
+ " .word gSaveBlock2\n"
+ "._98:\n"
+ " mov r0, #0x1\n"
+ " bl debug_sub_8057508\n"
+ "._99:\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " ldr r0, ._102 @ debug_sub_8058C00\n"
+ " bl SetMainCallback2\n"
+ "._97:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._103:\n"
+ " .align 2, 0\n"
+ "._102:\n"
+ " .word debug_sub_8058C00+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8076FEC()
+{
+ asm(
+ " push {lr}\n"
+ " bl DebugMenu_8076EF4\n"
+ " ldr r0, ._104 @ DebugMenu_8076F60\n"
+ " mov r1, #0xa\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._105:\n"
+ " .align 2, 0\n"
+ "._104:\n"
+ " .word DebugMenu_8076F60+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077004()
+{
+ asm(
+ " ldr r2, ._106 @ gUnknown_030006C4\n"
+ " ldr r0, ._106 + 4 @ gUnknown_030006C1\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._106 + 8 @ gUnknown_Debug_839BB64\n"
+ " add r0, r0, r1\n"
+ " str r0, [r2]\n"
+ " bx lr\n"
+ "._107:\n"
+ " .align 2, 0\n"
+ "._106:\n"
+ " .word gUnknown_030006C4 \n"
+ " .word gUnknown_030006C1 \n"
+ " .word gUnknown_Debug_839BB64\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077020()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._109 @ gMenuCallback\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._108 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ "._108:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._110:\n"
+ " .align 2, 0\n"
+ "._109:\n"
+ " .word gMenuCallback\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077048()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._111 @ gMenuCallback\n"
+ " ldr r1, ._111 + 4 @ DebugMenu_807706C\n"
+ " str r1, [r0]\n"
+ " bl ScriptContext2_Enable\n"
+ " ldr r0, ._111 + 8 @ DebugMenu_8077020\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._112:\n"
+ " .align 2, 0\n"
+ "._111:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_807706C+1\n"
+ " .word DebugMenu_8077020+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807706C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._113 @ gWindowTemplate_81E6CE4\n"
+ " bl InitMenuWindow\n"
+ " bl DebugMenu_8077004\n"
+ " bl DebugMenu_807719C\n"
+ " bl DebugMenu_80771EC\n"
+ " bl DebugMenu_8077238\n"
+ " ldr r1, ._113 + 4 @ gMenuCallback\n"
+ " ldr r0, ._113 + 8 @ DebugMenu_807709C\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._114:\n"
+ " .align 2, 0\n"
+ "._113:\n"
+ " .word gWindowTemplate_81E6CE4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_807709C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807709C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._120 @ gMain\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._115 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._120 + 4 @ gUnknown_030006C0\n"
+ " strb r0, [r1]\n"
+ "._115:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._116 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._120 + 4 @ gUnknown_030006C0\n"
+ " strb r0, [r1]\n"
+ "._116:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._117 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._120 + 8 @ gUnknown_030006C1\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " bne ._118 @cond_branch\n"
+ " mov r0, #0x7\n"
+ " b ._119\n"
+ "._121:\n"
+ " .align 2, 0\n"
+ "._120:\n"
+ " .word gMain\n"
+ " .word gUnknown_030006C0 \n"
+ " .word gUnknown_030006C1 \n"
+ "._118:\n"
+ " sub r0, r0, #0x1\n"
+ "._119:\n"
+ " strb r0, [r1]\n"
+ " bl DebugMenu_8077004\n"
+ " bl DebugMenu_807719C\n"
+ "._117:\n"
+ " ldr r0, ._125 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._122 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._125 + 4 @ gUnknown_030006C1\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x7\n"
+ " bne ._123 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._124\n"
+ "._126:\n"
+ " .align 2, 0\n"
+ "._125:\n"
+ " .word gMain\n"
+ " .word gUnknown_030006C1 \n"
+ "._123:\n"
+ " add r0, r0, #0x1\n"
+ "._124:\n"
+ " strb r0, [r1]\n"
+ " bl DebugMenu_8077004\n"
+ " bl DebugMenu_807719C\n"
+ "._122:\n"
+ " ldr r0, ._129 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._127 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r1, ._129 + 4 @ gDebug0x839B9BC\n"
+ " ldr r0, ._129 + 8 @ gUnknown_030006C0\n"
+ " ldrb r2, [r0]\n"
+ " ldr r0, ._129 + 12 @ gUnknown_030006C4\n"
+ " ldr r0, [r0]\n"
+ " add r0, r0, r2\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r1, r1, #0x4\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " bl _call_via_r0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " b ._132\n"
+ "._130:\n"
+ " .align 2, 0\n"
+ "._129:\n"
+ " .word gMain\n"
+ " .word gDebug0x839B9BC\n"
+ " .word gUnknown_030006C0 \n"
+ " .word gUnknown_030006C4 \n"
+ "._127:\n"
+ " mov r0, #0xa\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._131 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._132\n"
+ "._131:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._132:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807719C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0xe\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r3, ._133 @ gDebug0x839B9BC\n"
+ " ldr r0, ._133 + 4 @ gUnknown_030006C4\n"
+ " ldr r0, [r0]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintItemsReordered\n"
+ " ldr r4, ._133 + 8 @ gUnknown_030006C0\n"
+ " ldrb r0, [r4]\n"
+ " str r0, [sp]\n"
+ " mov r0, #0xd\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x8\n"
+ " bl InitMenu\n"
+ " strb r0, [r4]\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._134:\n"
+ " .align 2, 0\n"
+ "._133:\n"
+ " .word gDebug0x839B9BC\n"
+ " .word gUnknown_030006C4 \n"
+ " .word gUnknown_030006C0 \n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80771EC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._135 @ gStringVar4\n"
+ " ldr r1, ._135 + 4 @ Str_839BE04\n"
+ " bl StringCopy\n"
+ " ldr r4, ._135 + 8 @ gSaveBlock1\n"
+ " mov r1, #0x4\n"
+ " ldsb r1, [r4, r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r1, #0x5\n"
+ " ldsb r1, [r4, r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, #0x13\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0xf\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._135 @ gStringVar4\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0xd\n"
+ " bl Menu_PrintText\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._136:\n"
+ " .align 2, 0\n"
+ "._135:\n"
+ " .word gStringVar4\n"
+ " .word Str_839BE04\n"
+ " .word gSaveBlock1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077238()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xffffffe8\n"
+ " ldr r1, ._139 @ Str_839BE07\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " bl memcpy\n"
+ " add r0, sp, #0x4\n"
+ " mov r9, r0\n"
+ " ldr r1, ._139 + 4 @ Str_839BE09\n"
+ " mov r2, #0x3\n"
+ " bl memcpy\n"
+ " add r1, sp, #0x8\n"
+ " mov sl, r1\n"
+ " ldr r1, ._139 + 8 @ Str_839BE0C\n"
+ " mov r0, sl\n"
+ " mov r2, #0x3\n"
+ " bl memcpy\n"
+ " mov r2, #0x0\n"
+ " str r2, [sp, #0x14]\n"
+ " add r4, sp, #0x10\n"
+ " mov r6, sp\n"
+ " add r6, r6, #0x12\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl PlayerGetDestCoords\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r6, r2]\n"
+ " bl MapGridGetZCoordAt\n"
+ " mov r8, r0\n"
+ " mov r0, r8\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r8, r0\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0x7\n"
+ " strh r0, [r4]\n"
+ " ldrh r0, [r6]\n"
+ " sub r0, r0, #0x7\n"
+ " strh r0, [r6]\n"
+ " ldr r7, ._139 + 12 @ gStringVar4\n"
+ " add r0, r7, #0\n"
+ " mov r1, sp\n"
+ " bl StringCopy\n"
+ " add r5, sp, #0xc\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r4, r2]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " bl StringAppend\n"
+ " add r0, r7, #0\n"
+ " mov r1, r9\n"
+ " bl StringAppend\n"
+ " mov r0, #0x0\n"
+ " ldsh r1, [r6, r0]\n"
+ " add r0, r5, #0\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " bl StringAppend\n"
+ " add r0, r7, #0\n"
+ " mov r1, sl\n"
+ " bl StringAppend\n"
+ " add r0, r5, #0\n"
+ " mov r1, r8\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " bl StringAppend\n"
+ " ldrb r0, [r7]\n"
+ " cmp r0, #0xff\n"
+ " beq ._137 @cond_branch\n"
+ " add r1, r7, #0\n"
+ "._138:\n"
+ " ldr r0, [sp, #0x14]\n"
+ " add r0, r0, #0x1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " str r0, [sp, #0x14]\n"
+ " add r0, r0, r1\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0xff\n"
+ " bne ._138 @cond_branch\n"
+ "._137:\n"
+ " mov r0, #0x1c\n"
+ " ldr r1, [sp, #0x14]\n"
+ " sub r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x10\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._139 + 12 @ gStringVar4\n"
+ " mov r1, #0x1d\n"
+ " ldr r2, [sp, #0x14]\n"
+ " sub r1, r1, r2\n"
+ " lsl r1, r1, #0x18\n"
+ " lsr r1, r1, #0x18\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0x18\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._140:\n"
+ " .align 2, 0\n"
+ "._139:\n"
+ " .word Str_839BE07\n"
+ " .word Str_839BE09\n"
+ " .word Str_839BE0C\n"
+ " .word gStringVar4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_Exit()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenSogabe()
+{
+ asm(
+ " push {lr}\n"
+ " bl unref_sub_814A414\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenTamada()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8075C30\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenKagaya()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitKagayaDebugMenu_A\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenMatsuda()
+{
+ asm(
+ " push {lr}\n"
+ " bl unref_sub_80A9B28\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenNohara()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitNoharaDebugMenu\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenWatanabe()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._141 @ InitWatanabeDebugMenu\n"
+ " bl SetMainCallback2\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._142:\n"
+ " .align 2, 0\n"
+ "._141:\n"
+ " .word InitWatanabeDebugMenu+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_EndSequenceDemo()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._143 @ sub_81439D0\n"
+ " bl SetMainCallback2\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._144:\n"
+ " .align 2, 0\n"
+ "._143:\n"
+ " .word sub_81439D0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_HallOfFame()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl GameClear\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenSizeComparison()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitSizeComparison\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_HoennNationalDex()
+{
+ asm(
+ " push {lr}\n"
+ " bl IsNationalPokedexEnabled\n"
+ " cmp r0, #0\n"
+ " beq ._145 @cond_branch\n"
+ " bl DisableNationalPokedex\n"
+ " b ._146\n"
+ "._145:\n"
+ " bl EnableNationalPokedex\n"
+ "._146:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_8077434()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x4\n"
+ " bhi ._165 @cond_branch\n"
+ " lsl r0, r0, #0x2\n"
+ " ldr r1, ._149 @ \n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " mov pc, r0\n"
+ "._150:\n"
+ " .align 2, 0\n"
+ "._149:\n"
+ " .word ._148\n"
+ "._148:\n"
+ " .word ._151\n"
+ " .word ._152\n"
+ " .word ._153\n"
+ " .word ._154\n"
+ " .word ._155\n"
+ "._151:\n"
+ " ldr r0, ._157 @ Str_839BE0F\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x4\n"
+ " bl debug_sub_80C2C18\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0xff\n"
+ " mov r2, #0xff\n"
+ " mov r3, #0x0\n"
+ " bl debug_sub_80C2D24\n"
+ " b ._165\n"
+ "._158:\n"
+ " .align 2, 0\n"
+ "._157:\n"
+ " .word Str_839BE0F\n"
+ "._152:\n"
+ " ldr r0, ._160 @ Str_839BE12\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x0\n"
+ " bl debug_sub_80C2C18\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0xff\n"
+ " mov r2, #0x0\n"
+ " b ._159\n"
+ "._161:\n"
+ " .align 2, 0\n"
+ "._160:\n"
+ " .word Str_839BE12\n"
+ "._153:\n"
+ " ldr r0, ._163 @ Str_839BE16\n"
+ " mov r1, #0x3\n"
+ " mov r2, #0x0\n"
+ " bl debug_sub_80C2C18\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0x0\n"
+ " b ._162\n"
+ "._164:\n"
+ " .align 2, 0\n"
+ "._163:\n"
+ " .word Str_839BE16\n"
+ "._154:\n"
+ " ldr r0, ._166 @ Str_839BE1A\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x0\n"
+ " bl debug_sub_80C2C18\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0xff\n"
+ "._162:\n"
+ " mov r2, #0xff\n"
+ "._159:\n"
+ " mov r3, #0xff\n"
+ " bl debug_sub_80C2D24\n"
+ " b ._165\n"
+ "._167:\n"
+ " .align 2, 0\n"
+ "._166:\n"
+ " .word Str_839BE1A\n"
+ "._155:\n"
+ " ldr r0, ._168 @ Str_839BE1E\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x0\n"
+ " bl debug_sub_80C2C18\n"
+ " mov r0, #0xff\n"
+ " str r0, [sp]\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r1, #0xff\n"
+ " mov r2, #0xff\n"
+ " mov r3, #0xff\n"
+ " bl debug_sub_80C2D24\n"
+ "._165:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._169:\n"
+ " .align 2, 0\n"
+ "._168:\n"
+ " .word Str_839BE1E\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_807750C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._170 @ gUnknown_Debug_839BE24\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._171:\n"
+ " .align 2, 0\n"
+ "._170:\n"
+ " .word gUnknown_Debug_839BE24\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_SetRamBerry()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._172 @ gUnknown_Debug_839BE24\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x5\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._172 + 4 @ gMenuCallback\n"
+ " ldr r0, ._172 + 8 @ DebugMenu_807750C\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._173:\n"
+ " .align 2, 0\n"
+ "._172:\n"
+ " .word gUnknown_Debug_839BE24\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_807750C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_ToggleBGM()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r2, ._175 @ gDisableMusic\n"
+ " mov r1, #0x0\n"
+ " ldrb r0, [r2]\n"
+ " cmp r0, #0\n"
+ " bne ._174 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._174:\n"
+ " strb r1, [r2]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._176:\n"
+ " .align 2, 0\n"
+ "._175:\n"
+ " .word gDisableMusic\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_BattleForDebug()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitBattleForDebug\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_NationalDex()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r4, #0x0\n"
+ " ldr r5, ._178 @ 0x181\n"
+ "._177:\n"
+ " add r4, r4, #0x1\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " bl GetSetPokedexFlag\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetSetPokedexFlag\n"
+ " cmp r4, r5\n"
+ " bls ._177 @cond_branch\n"
+ " ldr r1, ._178 + 4 @ gUnknown_03005CE8\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._179:\n"
+ " .align 2, 0\n"
+ "._178:\n"
+ " .word 0x181\n"
+ " .word gUnknown_03005CE8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_HoennDex()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r5, #0x0\n"
+ "._180:\n"
+ " add r5, r5, #0x1\n"
+ " lsl r5, r5, #0x10\n"
+ " lsr r5, r5, #0x10\n"
+ " add r0, r5, #0\n"
+ " bl HoennToNationalOrder\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " bl GetSetPokedexFlag\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x3\n"
+ " bl GetSetPokedexFlag\n"
+ " cmp r5, #0xc9\n"
+ " bls ._180 @cond_branch\n"
+ " ldr r1, ._181 @ gUnknown_03005CE8\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._182:\n"
+ " .align 2, 0\n"
+ "._181:\n"
+ " .word gUnknown_03005CE8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_CreatePKMN()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitCreatePokemon\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_ViewPokemonGraphics()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitSeePokemonGraphics\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenSeeTrainers()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl InitSeeTrainers\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenMori()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitMoriDebugMenu\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenTomomichi()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitTomomichiDebugWindow\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenAoki()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenTaya()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitTayaDebugWindow\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenNakamura()
+{
+ asm(
+ " push {lr}\n"
+ " bl InitNakamuraDebugMenu\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenIwasawa()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8138CC4\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_Teleport()
+{
+ asm(
+ " push {lr}\n"
+ " bl Overworld_SetWarpDestToLastHealLoc\n"
+ " bl sub_8080E88\n"
+ " bl ScriptContext2_Enable\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_EditPKMN()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " bl debug_sub_815FFDC\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80776B4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r1, ._183 @ Str_839BE4C\n"
+ " mov r0, sp\n"
+ " mov r2, #0x7\n"
+ " bl memcpy\n"
+ " lsl r3, r4, #0x1\n"
+ " lsl r5, r4, #0x19\n"
+ " lsr r5, r5, #0x18\n"
+ " add r3, r3, #0x1\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x19\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x1d\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r0, ._183 + 4 @ gUnknown_030006C8\n"
+ " ldrb r0, [r0]\n"
+ " ASR r0, r4\n"
+ " mov r1, #0x1\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x2\n"
+ " add r0, r0, sp\n"
+ " mov r1, #0x19\n"
+ " add r2, r5, #0\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._184:\n"
+ " .align 2, 0\n"
+ "._183:\n"
+ " .word Str_839BE4C\n"
+ " .word gUnknown_030006C8 \n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077704()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xffffffec\n"
+ " ldr r1, ._185 @ Str_839BE53\n"
+ " mov r0, sp\n"
+ " mov r2, #0x11\n"
+ " bl memcpy\n"
+ " mov r0, #0x13\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x8\n"
+ " bl Menu_BlankWindowRect\n"
+ " mov r0, sp\n"
+ " mov r1, #0x15\n"
+ " mov r2, #0x0\n"
+ " bl Menu_PrintText\n"
+ " ldr r2, ._185 + 4 @ gUnknown_030006C8\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x13\n"
+ " ldrh r0, [r0]\n"
+ " lsr r0, r0, #0x8\n"
+ " mov r1, #0xf\n"
+ " and r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_80776B4\n"
+ " mov r0, #0x1\n"
+ " bl DebugMenu_80776B4\n"
+ " mov r0, #0x2\n"
+ " bl DebugMenu_80776B4\n"
+ " mov r0, #0x3\n"
+ " bl DebugMenu_80776B4\n"
+ " add sp, sp, #0x14\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._186:\n"
+ " .align 2, 0\n"
+ "._185:\n"
+ " .word Str_839BE53\n"
+ " .word gUnknown_030006C8 \n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_8077760()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " ldr r2, ._190 @ gMain\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " add r5, r2, #0\n"
+ " cmp r0, #0\n"
+ " beq ._187 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._190 + 4 @ gUnknown_030006B8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._188 @cond_branch\n"
+ " sub r0, r0, #0x1\n"
+ " b ._189\n"
+ "._191:\n"
+ " .align 2, 0\n"
+ "._190:\n"
+ " .word gMain\n"
+ " .word gUnknown_030006B8 \n"
+ "._188:\n"
+ " mov r0, #0x3\n"
+ "._189:\n"
+ " strb r0, [r1]\n"
+ "._187:\n"
+ " ldrh r1, [r5, #0x2e]\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._192 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ " bl Menu_MoveCursor\n"
+ " ldr r1, ._195 @ gUnknown_030006B8\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0x3\n"
+ " beq ._193 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " b ._194\n"
+ "._196:\n"
+ " .align 2, 0\n"
+ "._195:\n"
+ " .word gUnknown_030006B8 \n"
+ "._193:\n"
+ " mov r0, #0x0\n"
+ "._194:\n"
+ " strb r0, [r1]\n"
+ "._192:\n"
+ " ldrh r1, [r5, #0x2e]\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._197 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r4, ._201 @ gUnknown_030006C8\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x1\n"
+ " LSL r1, r0\n"
+ " ldrb r0, [r4]\n"
+ " eor r1, r1, r0\n"
+ " strb r1, [r4]\n"
+ " bl Menu_GetCursorPos\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_80776B4\n"
+ "._197:\n"
+ " ldrh r2, [r5, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " bne ._198 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r2\n"
+ " cmp r0, #0\n"
+ " beq ._199 @cond_branch\n"
+ "._198:\n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0x13\n"
+ " ldrh r0, [r2]\n"
+ " ldr r1, ._201 + 4 @ 0xf0ff\n"
+ " and r1, r1, r0\n"
+ " ldr r0, ._201 @ gUnknown_030006C8\n"
+ " ldrb r0, [r0]\n"
+ " lsl r0, r0, #0x8\n"
+ " add r1, r1, r0\n"
+ " strh r1, [r2]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._200\n"
+ "._202:\n"
+ " .align 2, 0\n"
+ "._201:\n"
+ " .word gUnknown_030006C8 \n"
+ " .word 0xf0ff\n"
+ "._199:\n"
+ " mov r0, #0x0\n"
+ "._200:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_SwitchBG()
+{
+ asm(
+ " push {lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " bl Menu_EraseScreen\n"
+ " bl DebugMenu_8077704\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " mov r0, #0x6\n"
+ " str r0, [sp, #0x4]\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x14\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x4\n"
+ " bl InitMenu\n"
+ " ldr r1, ._203 @ gMenuCallback\n"
+ " ldr r0, ._203 + 4 @ DebugMenu_8077760\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " add sp, sp, #0x8\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._204:\n"
+ " .align 2, 0\n"
+ "._203:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077760+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807786C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " ldr r1, ._205 @ Str_839BE64\n"
+ " mov r0, sp\n"
+ " mov r2, #0x7\n"
+ " bl memcpy\n"
+ " mov r0, #0x19\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x1d\n"
+ " mov r3, #0x3\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " lsl r0, r4, #0x1\n"
+ " add r0, r0, r4\n"
+ " add r0, r0, sp\n"
+ " mov r1, #0x1a\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._206:\n"
+ " .align 2, 0\n"
+ "._205:\n"
+ " .word Str_839BE64\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80778A8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._211 @ gMain\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._207 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r2, ._211 + 4 @ sWildEncountersDisabled\n"
+ " ldrb r0, [r2]\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " strb r0, [r2]\n"
+ " ldrb r0, [r2]\n"
+ " bl DebugMenu_807786C\n"
+ "._207:\n"
+ " ldrh r1, [r4, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._208 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._209 @cond_branch\n"
+ "._208:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._210\n"
+ "._212:\n"
+ " .align 2, 0\n"
+ "._211:\n"
+ " .word gMain\n"
+ " .word sWildEncountersDisabled\n"
+ "._209:\n"
+ " mov r0, #0x0\n"
+ "._210:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_ControlEncounter()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._213 @ sWildEncountersDisabled\n"
+ " ldrb r0, [r0]\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._213 + 4 @ gMenuCallback\n"
+ " ldr r0, ._213 + 8 @ DebugMenu_80778A8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._214:\n"
+ " .align 2, 0\n"
+ "._213:\n"
+ " .word sWildEncountersDisabled\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80778A8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_UseHM()
+{
+ asm(
+ " ldr r1, ._215 @ gMenuCallback\n"
+ " ldr r0, ._215 + 4 @ DebugMenu_8077C14\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " bx lr\n"
+ "._216:\n"
+ " .align 2, 0\n"
+ "._215:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077C14+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077934()
+{
+ asm(
+ " push {lr}\n"
+ " mov r1, #0x0\n"
+ " ldr r3, ._218 @ gSaveBlock1\n"
+ " mov r2, #0x1\n"
+ "._217:\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0x63\n"
+ " bls ._217 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._219:\n"
+ " .align 2, 0\n"
+ "._218:\n"
+ " .word gSaveBlock1+0x97a\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077954()
+{
+ asm(
+ " push {lr}\n"
+ " mov r1, #0x0\n"
+ " ldr r3, ._222 @ gSaveBlock1\n"
+ " mov r2, #0x0\n"
+ "._221:\n"
+ " add r0, r1, r3\n"
+ " strb r2, [r0]\n"
+ " add r1, r1, #0x1\n"
+ " cmp r1, #0x63\n"
+ " bls ._221 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._223:\n"
+ " .align 2, 0\n"
+ "._222:\n"
+ " .word gSaveBlock1+0x97a\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077974()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r1, ._226 @ gSaveBlock1\n"
+ " mov r0, #0x4\n"
+ " ldsb r0, [r1, r0]\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " ldrb r1, [r1, #0x5]\n"
+ " lsl r1, r1, #0x18\n"
+ " asr r1, r1, #0x18\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " bl IsRematchTrainerIn\n"
+ " cmp r0, #0\n"
+ " beq ._224 @cond_branch\n"
+ " ldr r0, ._226 + 4 @ gStringVar1\n"
+ " ldr r1, ._226 + 8 @ Str_839BE8D\n"
+ " bl StringCopy\n"
+ " b ._225\n"
+ "._227:\n"
+ " .align 2, 0\n"
+ "._226:\n"
+ " .word gSaveBlock1\n"
+ " .word gStringVar1\n"
+ " .word Str_839BE8D\n"
+ "._224:\n"
+ " ldr r0, ._230 @ gStringVar1\n"
+ " ldr r1, ._230 + 4 @ Str_839BE90\n"
+ " bl StringCopy\n"
+ "._225:\n"
+ " ldr r1, ._230 + 8 @ gSaveBlock1\n"
+ " mov r0, #0x4\n"
+ " ldsb r0, [r1, r0]\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " ldrb r1, [r1, #0x5]\n"
+ " lsl r1, r1, #0x18\n"
+ " asr r1, r1, #0x18\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " bl DoesSomeoneWantRematchIn\n"
+ " cmp r0, #0\n"
+ " beq ._228 @cond_branch\n"
+ " ldr r0, ._230 + 12 @ gStringVar2\n"
+ " ldr r1, ._230 + 16 @ Str_839BE8D\n"
+ " bl StringCopy\n"
+ " b ._229\n"
+ "._231:\n"
+ " .align 2, 0\n"
+ "._230:\n"
+ " .word gStringVar1\n"
+ " .word Str_839BE90\n"
+ " .word gSaveBlock1\n"
+ " .word gStringVar2\n"
+ " .word Str_839BE8D\n"
+ "._228:\n"
+ " ldr r0, ._232 @ gStringVar2\n"
+ " ldr r1, ._232 + 4 @ Str_839BE90\n"
+ " bl StringCopy\n"
+ "._229:\n"
+ " ldr r0, ._232 + 8 @ Str_839BE6B\n"
+ " bl sub_8071F40\n"
+ " ldr r1, ._232 + 12 @ gMenuCallback\n"
+ " ldr r0, ._232 + 16 @ DebugMenu_8077DB4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._233:\n"
+ " .align 2, 0\n"
+ "._232:\n"
+ " .word gStringVar2\n"
+ " .word Str_839BE90\n"
+ " .word Str_839BE6B\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077DB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A20()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._234 @ gSaveBlock1\n"
+ " ldr r1, ._234 + 4 @ 0x978\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0xff\n"
+ " strh r1, [r0]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._235:\n"
+ " .align 2, 0\n"
+ "._234:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x978\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A40()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._236 @ gSaveBlock1\n"
+ " ldr r1, ._236 + 4 @ 0x978\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x0\n"
+ " strh r1, [r0]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._237:\n"
+ " .align 2, 0\n"
+ "._236:\n"
+ " .word gSaveBlock1\n"
+ " .word 0x978\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A60()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._238 @ gUnknown_Debug_839BEE4\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._239:\n"
+ " .align 2, 0\n"
+ "._238:\n"
+ " .word gUnknown_Debug_839BEE4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_RematchTrainers()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._240 @ gUnknown_Debug_839BEE4\n"
+ " mov r1, #0xd\n"
+ " mov r2, #0x5\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._240 + 4 @ gMenuCallback\n"
+ " ldr r0, ._240 + 8 @ DebugMenu_8077A60\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._241:\n"
+ " .align 2, 0\n"
+ "._240:\n"
+ " .word gUnknown_Debug_839BEE4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077A60+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077A9C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._242 @ gNumSafariBalls\n"
+ " mov r0, #0x1e\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._243:\n"
+ " .align 2, 0\n"
+ "._242:\n"
+ " .word gNumSafariBalls\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077AB4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._244 @ gNumSafariBalls\n"
+ " mov r0, #0x1\n"
+ " strb r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._245:\n"
+ " .align 2, 0\n"
+ "._244:\n"
+ " .word gNumSafariBalls\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077ACC()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._246 @ gSafariZoneStepCounter\n"
+ " mov r2, #0xfa\n"
+ " lsl r2, r2, #0x1\n"
+ " add r0, r2, #0\n"
+ " strh r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._247:\n"
+ " .align 2, 0\n"
+ "._246:\n"
+ " .word gSafariZoneStepCounter\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077AE8()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._248 @ gSafariZoneStepCounter\n"
+ " mov r0, #0x1\n"
+ " strh r0, [r1]\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._249:\n"
+ " .align 2, 0\n"
+ "._248:\n"
+ " .word gSafariZoneStepCounter\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077B00()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " bl unref_sub_80C853C\n"
+ " cmp r0, #0\n"
+ " beq ._250 @cond_branch\n"
+ " ldr r0, ._252 @ Str_839BF14\n"
+ " bl sub_8071F40\n"
+ " b ._251\n"
+ "._253:\n"
+ " .align 2, 0\n"
+ "._252:\n"
+ " .word Str_839BF14\n"
+ "._250:\n"
+ " ldr r0, ._254 @ Str_839BF1F\n"
+ " bl sub_8071F40\n"
+ "._251:\n"
+ " ldr r1, ._254 + 4 @ gMenuCallback\n"
+ " ldr r0, ._254 + 8 @ DebugMenu_8077DB4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._255:\n"
+ " .align 2, 0\n"
+ "._254:\n"
+ " .word Str_839BF1F\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077DB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077B3C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._256 @ gUnknown_Debug_839BF6C\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._257:\n"
+ " .align 2, 0\n"
+ "._256:\n"
+ " .word gUnknown_Debug_839BF6C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_Safari()
+{
+ asm(
+ " push {lr}\n"
+ " bl GetSafariZoneFlag\n"
+ " cmp r0, #0\n"
+ " beq ._258 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._260 @ gUnknown_Debug_839BF6C\n"
+ " mov r1, #0xe\n"
+ " mov r2, #0x5\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r0, ._260 + 4 @ gStringVar1\n"
+ " ldr r1, ._260 + 8 @ gSafariZoneStepCounter\n"
+ " ldrh r1, [r1]\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._260 + 12 @ Str_839BF0C\n"
+ " bl sub_8071F40\n"
+ " ldr r1, ._260 + 16 @ gMenuCallback\n"
+ " ldr r0, ._260 + 20 @ DebugMenu_8077B3C\n"
+ " str r0, [r1]\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x0\n"
+ " b ._259\n"
+ "._261:\n"
+ " .align 2, 0\n"
+ "._260:\n"
+ " .word gUnknown_Debug_839BF6C\n"
+ " .word gStringVar1\n"
+ " .word gSafariZoneStepCounter\n"
+ " .word Str_839BF0C\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077B3C+1\n"
+ "._258:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x16\n"
+ " bl PlaySE\n"
+ " mov r0, #0x1\n"
+ "._259:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BB4()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_80AFEE4\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BC0()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8122080\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BCC()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8120968\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BD8()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_8130318\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BE4()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_80986AC\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077BF4()
+{
+ asm(
+ " push {lr}\n"
+ " bl debug_sub_80D93F4\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077C00()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._262 @ gUnknown_Debug_839BF94\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._263:\n"
+ " .align 2, 0\n"
+ "._262:\n"
+ " .word gUnknown_Debug_839BF94\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077C14()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._264 @ gUnknown_Debug_839BF94\n"
+ " mov r1, #0xa\n"
+ " mov r2, #0x9\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._264 + 4 @ gMenuCallback\n"
+ " ldr r0, ._264 + 8 @ DebugMenu_8077C00\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._265:\n"
+ " .align 2, 0\n"
+ "._264:\n"
+ " .word gUnknown_Debug_839BF94\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077C00+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077C3C()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " mov r7, sl\n"
+ " mov r6, r9\n"
+ " mov r5, r8\n"
+ " push {r5, r6, r7}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov sl, r0\n"
+ " add r7, r1, #0\n"
+ " ldr r0, ._271 @ gUnknown_030006BC\n"
+ " ldr r1, ._271 + 4 @ gUnknown_Debug_839BFE8\n"
+ " str r1, [r0]\n"
+ " mov r1, #0x0\n"
+ " strb r1, [r7]\n"
+ " add r7, r7, #0x1\n"
+ " strb r1, [r7]\n"
+ " add r7, r7, #0x1\n"
+ " mov r3, #0x0\n"
+ " mov r8, r0\n"
+ "._269:\n"
+ " mov r5, #0x0\n"
+ " ldr r1, ._271 @ gUnknown_030006BC\n"
+ " ldr r0, [r1]\n"
+ " ldr r2, [r0, #0x4]\n"
+ " mov r4, #0x0\n"
+ " ldr r1, [r0, #0x8]\n"
+ " add r3, r3, #0x1\n"
+ " mov r9, r3\n"
+ " cmp r5, r1\n"
+ " bge ._266 @cond_branch\n"
+ " add r3, r0, #0\n"
+ " add r6, r1, #0\n"
+ "._267:\n"
+ " ldr r0, [r3, #0xc]\n"
+ " add r0, r0, r4\n"
+ " add r0, r0, sl\n"
+ " ldrb r0, [r0]\n"
+ " sub r0, r0, #0x30\n"
+ " mul r0, r0, r2\n"
+ " add r5, r5, r0\n"
+ " add r4, r4, #0x1\n"
+ " add r0, r2, #0\n"
+ " mov r1, #0xa\n"
+ " str r3, [sp]\n"
+ " bl __divsi3\n"
+ " add r2, r0, #0\n"
+ " ldr r3, [sp]\n"
+ " cmp r4, r6\n"
+ " blt ._267 @cond_branch\n"
+ "._266:\n"
+ " mov r0, r8\n"
+ " ldr r1, [r0]\n"
+ " ldr r0, [r1]\n"
+ " cmp r0, r5\n"
+ " bcs ._268 @cond_branch\n"
+ " add r5, r0, #0\n"
+ "._268:\n"
+ " ldrb r3, [r1, #0x8]\n"
+ " add r0, r7, #0\n"
+ " add r1, r5, #0\n"
+ " mov r2, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r7, r0, #0\n"
+ " mov r3, r9\n"
+ " mov r1, r8\n"
+ " ldr r0, [r1]\n"
+ " add r0, r0, #0x10\n"
+ " str r0, [r1]\n"
+ " cmp r3, #0x1\n"
+ " ble ._269 @cond_branch\n"
+ " mov r1, sl\n"
+ " ldrb r0, [r1, #0x1d]\n"
+ " add r0, r0, #0x7a\n"
+ " strb r0, [r7]\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0xf6\n"
+ " bls ._270 @cond_branch\n"
+ " mov r0, #0xf6\n"
+ " strb r0, [r7]\n"
+ "._270:\n"
+ " mov r0, #0xff\n"
+ " strb r0, [r7, #0x1]\n"
+ " add sp, sp, #0x4\n"
+ " pop {r3, r4, r5}\n"
+ " mov r8, r3\n"
+ " mov r9, r4\n"
+ " mov sl, r5\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._272:\n"
+ " .align 2, 0\n"
+ "._271:\n"
+ " .word gUnknown_030006BC \n"
+ " .word gUnknown_Debug_839BFE8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void debug_sub_8077CF4()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " ldr r0, ._273 @ BuildDateTime\n"
+ " ldr r6, ._273 + 4 @ gStringVar4\n"
+ " add r1, r6, #0\n"
+ " bl DebugMenu_8077C3C\n"
+ " add r0, r6, #0\n"
+ " add r1, r4, #0\n"
+ " add r2, r5, #0\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._274:\n"
+ " .align 2, 0\n"
+ "._273:\n"
+ " .word BuildDateTime\n"
+ " .word gStringVar4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077D24()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add sp, sp, #0xfffffff8\n"
+ " add r6, r0, #0\n"
+ " add r4, r1, #0\n"
+ " add r5, r2, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " lsl r5, r5, #0x18\n"
+ " lsr r5, r5, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " lsl r3, r5, #0x1\n"
+ " add r3, r3, #0x1\n"
+ " lsl r3, r3, #0x18\n"
+ " lsr r3, r3, #0x18\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " add r2, r4, #0\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " mov r0, #0x1\n"
+ " mov r1, #0x1\n"
+ " add r2, r5, #0\n"
+ " add r3, r6, #0\n"
+ " bl Menu_PrintItems\n"
+ " mov r0, #0x0\n"
+ " str r0, [sp]\n"
+ " sub r4, r4, #0x1\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " str r4, [sp, #0x4]\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " add r3, r5, #0\n"
+ " bl InitMenu\n"
+ " add sp, sp, #0x8\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077D78()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r5, r0, #0\n"
+ " bl Menu_ProcessInput\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r4, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r4, r0\n"
+ " beq ._275 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ " cmp r4, r0\n"
+ " beq ._276 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._278 @ gMenuCallback\n"
+ " lsl r1, r4, #0x3\n"
+ " add r1, r1, r5\n"
+ " ldr r1, [r1, #0x4]\n"
+ " str r1, [r0]\n"
+ "._275:\n"
+ " mov r0, #0x0\n"
+ " b ._277\n"
+ "._279:\n"
+ " .align 2, 0\n"
+ "._278:\n"
+ " .word gMenuCallback\n"
+ "._276:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._277:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077DB4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._282 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._280 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._281\n"
+ "._283:\n"
+ " .align 2, 0\n"
+ "._282:\n"
+ " .word gMain\n"
+ "._280:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._281:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077DD8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " lsl r3, r3, #0x10\n"
+ " lsr r3, r3, #0x10\n"
+ " add r1, r3, #0\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._284 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0x1\n"
+ " b ._285\n"
+ "._284:\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._286 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " b ._287\n"
+ "._286:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r3\n"
+ " cmp r0, #0\n"
+ " beq ._288 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0xa\n"
+ "._285:\n"
+ " strh r0, [r4]\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, r5\n"
+ " bge ._293 @cond_branch\n"
+ " strh r2, [r4]\n"
+ " b ._293\n"
+ "._288:\n"
+ " mov r0, #0x10\n"
+ " and r1, r1, r0\n"
+ " cmp r1, #0\n"
+ " bne ._291 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._292\n"
+ "._291:\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0xa\n"
+ "._287:\n"
+ " strh r0, [r4]\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, r2\n"
+ " ble ._293 @cond_branch\n"
+ " strh r5, [r4]\n"
+ "._293:\n"
+ " mov r0, #0x1\n"
+ "._292:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077E40()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " ldr r0, ._297 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._294 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._295 @cond_branch\n"
+ "._294:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " b ._302\n"
+ "._298:\n"
+ " .align 2, 0\n"
+ "._297:\n"
+ " .word gMain\n"
+ "._295:\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._299 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " cmp r4, #0\n"
+ " beq ._300 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " bl DebugMenu_807786C\n"
+ " mov r0, #0x0\n"
+ " b ._302\n"
+ "._300:\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_807786C\n"
+ " mov r0, #0x1\n"
+ " b ._302\n"
+ "._299:\n"
+ " add r0, r4, #0\n"
+ "._302:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_MakeItems()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl DebugMenu_8077EAC\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077EAC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._303 @ DebugMenu_8077F40\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r1, ._303 + 4 @ gTasks\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " mov r1, #0x1\n"
+ " strh r1, [r0, #0xa]\n"
+ " strh r1, [r0, #0xc]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._304:\n"
+ " .align 2, 0\n"
+ "._303:\n"
+ " .word DebugMenu_8077F40+1\n"
+ " .word gTasks\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077EE0()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r4, r0, #0\n"
+ " add r6, r1, #0\n"
+ " lsl r4, r4, #0x10\n"
+ " lsr r4, r4, #0x10\n"
+ " lsl r6, r6, #0x10\n"
+ " lsr r6, r6, #0x10\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x16\n"
+ " mov r3, #0x12\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r5, ._305 @ gStringVar1\n"
+ " add r0, r5, #0\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add r0, r4, #0\n"
+ " bl ItemId_GetName\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " add r0, r5, #0\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r5, #0\n"
+ " mov r1, #0x12\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._306:\n"
+ " .align 2, 0\n"
+ "._305:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077F40()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r4, r0, #0x2\n"
+ " add r4, r4, r0\n"
+ " lsl r4, r4, #0x3\n"
+ " ldr r0, ._307 @ gTasks\n"
+ " add r4, r4, r0\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._307 + 4 @ gDebug0x839C008\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ " ldr r0, ._307 + 8 @ DebugMenu_8077F7C\n"
+ " str r0, [r4]\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._308:\n"
+ " .align 2, 0\n"
+ "._307:\n"
+ " .word gTasks\n"
+ " .word gDebug0x839C008\n"
+ " .word DebugMenu_8077F7C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077F7C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._311 @ gTasks\n"
+ " add r4, r1, r0\n"
+ " ldr r3, ._311 + 4 @ gMain\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._309 @cond_branch\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._311 + 8 @ Str_839C014\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ " ldr r0, ._311 + 12 @ DebugMenu_8077FFC\n"
+ " str r0, [r4]\n"
+ " b ._317\n"
+ "._312:\n"
+ " .align 2, 0\n"
+ "._311:\n"
+ " .word gTasks\n"
+ " .word gMain\n"
+ " .word Str_839C014\n"
+ " .word DebugMenu_8077FFC+1\n"
+ "._309:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._313 @cond_branch\n"
+ " ldr r0, ._315 @ DebugMenu_807806C\n"
+ " str r0, [r4]\n"
+ " b ._317\n"
+ "._316:\n"
+ " .align 2, 0\n"
+ "._315:\n"
+ " .word DebugMenu_807806C+1\n"
+ "._313:\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xa\n"
+ " mov r2, #0xae\n"
+ " lsl r2, r2, #0x1\n"
+ " ldrh r3, [r3, #0x30]\n"
+ " mov r1, #0x1\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._317 @cond_branch\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ "._317:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8077FFC()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._321 @ gTasks\n"
+ " add r4, r1, r0\n"
+ " ldr r2, ._321 + 4 @ gMain\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._318 @cond_branch\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl AddBagItem\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " cmp r0, #0x1\n"
+ " bne ._320 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " b ._320\n"
+ "._322:\n"
+ " .align 2, 0\n"
+ "._321:\n"
+ " .word gTasks\n"
+ " .word gMain\n"
+ "._318:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._323 @cond_branch\n"
+ "._320:\n"
+ " ldr r0, ._325 @ DebugMenu_8077F40\n"
+ " str r0, [r4]\n"
+ " b ._327\n"
+ "._326:\n"
+ " .align 2, 0\n"
+ "._325:\n"
+ " .word DebugMenu_8077F40+1\n"
+ "._323:\n"
+ " add r0, r4, #0\n"
+ " add r0, r0, #0xc\n"
+ " ldrh r3, [r2, #0x30]\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x63\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._327 @cond_branch\n"
+ " ldrh r0, [r4, #0xa]\n"
+ " ldrh r1, [r4, #0xc]\n"
+ " bl DebugMenu_8077EE0\n"
+ "._327:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807806C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " bl DebugMenu_8077048\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807808C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffff4\n"
+ " add r4, r0, #0\n"
+ " sub r0, r4, #1\n"
+ " cmp r0, #0xc\n"
+ " bls ._328 @cond_branch\n"
+ " mov r4, #0x1\n"
+ "._328:\n"
+ " lsl r1, r4, #0x5\n"
+ " ldr r0, ._331 @ gSaveBlock1\n"
+ " add r5, r1, r0\n"
+ " bl Menu_EraseScreen\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x13\n"
+ " mov r3, #0x11\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " ldr r0, ._331 + 4 @ Str_839C01E\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintText\n"
+ " mov r0, sp\n"
+ " add r1, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x2\n"
+ " bl Menu_PrintText\n"
+ " ldrh r1, [r5, #0x8]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x4\n"
+ " bl Menu_PrintText\n"
+ " add r4, r5, #0\n"
+ " add r4, r4, #0xb\n"
+ " add r0, r4, #0\n"
+ " bl StringLength\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._329 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintText\n"
+ " b ._330\n"
+ "._332:\n"
+ " .align 2, 0\n"
+ "._331:\n"
+ " .word gSaveBlock1+0x2ddc\n"
+ " .word Str_839C01E\n"
+ "._329:\n"
+ " ldr r0, ._335 @ Str_839C04D\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x6\n"
+ " bl Menu_PrintText\n"
+ "._330:\n"
+ " add r4, r5, #0\n"
+ " add r4, r4, #0x16\n"
+ " add r0, r4, #0\n"
+ " bl StringLength\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r0, r0, #0x10\n"
+ " cmp r0, #0xb\n"
+ " bhi ._333 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintText\n"
+ " b ._334\n"
+ "._336:\n"
+ " .align 2, 0\n"
+ "._335:\n"
+ " .word Str_839C04D\n"
+ "._333:\n"
+ " ldr r0, ._337 @ Str_839C04D\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0x8\n"
+ " bl Menu_PrintText\n"
+ "._334:\n"
+ " ldrb r1, [r5, #0xa]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0xa\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, [r5]\n"
+ " mov r0, sp\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x8\n"
+ " bl ConvertIntToHexStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0xb\n"
+ " mov r2, #0xc\n"
+ " bl Menu_PrintText\n"
+ " add sp, sp, #0xc\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._338:\n"
+ " .align 2, 0\n"
+ "._337:\n"
+ " .word Str_839C04D\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807817C()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " ldr r0, ._340 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._339 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ "._339:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._341:\n"
+ " .align 2, 0\n"
+ "._340:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80781A8()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r1, r1, #0x3\n"
+ " ldr r0, ._344 @ gTasks\n"
+ " add r5, r1, r0\n"
+ " ldrh r1, [r5, #0x8]\n"
+ " mov r2, #0x8\n"
+ " ldsh r0, [r5, r2]\n"
+ " cmp r0, #0\n"
+ " bne ._342 @cond_branch\n"
+ " add r0, r1, #1\n"
+ " strh r0, [r5, #0x8]\n"
+ " b ._343\n"
+ "._345:\n"
+ " .align 2, 0\n"
+ "._344:\n"
+ " .word gTasks\n"
+ "._342:\n"
+ " ldr r2, ._348 @ gMain\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._346 @cond_branch\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r5, r1]\n"
+ " bl DebugMenu_807808C\n"
+ " ldr r0, ._348 + 4 @ DebugMenu_807817C\n"
+ " str r0, [r5]\n"
+ " b ._350\n"
+ "._349:\n"
+ " .align 2, 0\n"
+ "._348:\n"
+ " .word gMain\n"
+ " .word DebugMenu_807817C+1\n"
+ "._346:\n"
+ " add r0, r5, #0\n"
+ " add r0, r0, #0x8\n"
+ " ldrh r1, [r2, #0x30]\n"
+ " mov r3, #0xc0\n"
+ " and r3, r3, r1\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0xd\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0\n"
+ " beq ._350 @cond_branch\n"
+ "._343:\n"
+ " mov r0, #0x4\n"
+ " mov r1, #0x11\n"
+ " mov r2, #0x16\n"
+ " mov r3, #0x12\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r4, ._351 @ gStringVar1\n"
+ " mov r2, #0x8\n"
+ " ldsh r1, [r5, r2]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ "._350:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._352:\n"
+ " .align 2, 0\n"
+ "._351:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_ViewPortraits()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._353 @ DebugMenu_80781A8\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._354:\n"
+ " .align 2, 0\n"
+ "._353:\n"
+ " .word DebugMenu_80781A8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078254()
+{
+ asm(
+ " push {lr}\n"
+ " bl DebugMenu_807808C\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_AllBadges()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._355 @ 0x807\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 4 @ 0x808\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 8 @ 0x809\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 12 @ 0x80a\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 16 @ 0x80b\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 20 @ 0x80c\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 24 @ 0x80d\n"
+ " bl FlagSet\n"
+ " ldr r0, ._355 + 28 @ 0x80e\n"
+ " bl FlagSet\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._356:\n"
+ " .align 2, 0\n"
+ "._355:\n"
+ " .word 0x807\n"
+ " .word 0x808\n"
+ " .word 0x809\n"
+ " .word 0x80a\n"
+ " .word 0x80b\n"
+ " .word 0x80c\n"
+ " .word 0x80d\n"
+ " .word 0x80e\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_TimeRecords()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._357 @ debug_sub_806F9E4\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._358:\n"
+ " .align 2, 0\n"
+ "._357:\n"
+ " .word debug_sub_806F9E4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_SetTime()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl debug_sub_806F99C\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80782EC()
+{
+ asm(
+ " push {lr}\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r0, ._359 @ gStringVar1\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " ldr r0, ._359 + 4 @ Str_839C053\n"
+ " bl sub_8071F40\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._360:\n"
+ " .align 2, 0\n"
+ "._359:\n"
+ " .word gStringVar1\n"
+ " .word Str_839C053\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078310()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._364 @ gTasks\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._361 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._362 @cond_branch\n"
+ " b ._375\n"
+ "._365:\n"
+ " .align 2, 0\n"
+ "._364:\n"
+ " .word gTasks+0x8\n"
+ "._361:\n"
+ " ldr r0, ._367 @ 0x4024\n"
+ " bl VarGet\n"
+ " strh r0, [r4, #0x2]\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_80782EC\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._375\n"
+ "._368:\n"
+ " .align 2, 0\n"
+ "._367:\n"
+ " .word 0x4024\n"
+ "._362:\n"
+ " ldr r3, ._371 @ gMain\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._369 @cond_branch\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " ldr r0, ._371 + 4 @ 0x4024\n"
+ " bl GetVarPointer\n"
+ " ldrh r1, [r4, #0x2]\n"
+ " strh r1, [r0]\n"
+ " b ._370\n"
+ "._372:\n"
+ " .align 2, 0\n"
+ "._371:\n"
+ " .word gMain\n"
+ " .word 0x4024\n"
+ "._369:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._373 @cond_branch\n"
+ "._370:\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ " b ._375\n"
+ "._373:\n"
+ " add r0, r4, #2\n"
+ " ldr r2, ._376 @ 0xffff\n"
+ " ldrh r3, [r3, #0x30]\n"
+ " mov r1, #0x0\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._375 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_80782EC\n"
+ "._375:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._377:\n"
+ " .align 2, 0\n"
+ "._376:\n"
+ " .word 0xffff\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_MiragaIslandRND()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._378 @ DebugMenu_8078310\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._379:\n"
+ " .align 2, 0\n"
+ "._378:\n"
+ " .word DebugMenu_8078310+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80783C8()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r0, ._383 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x30\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._382 @cond_branch\n"
+ " mov r0, #0x5\n"
+ " bl PlaySE\n"
+ " ldr r4, ._383 + 4 @ 0x804\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._381 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_807786C\n"
+ " b ._382\n"
+ "._384:\n"
+ " .align 2, 0\n"
+ "._383:\n"
+ " .word gMain\n"
+ " .word 0x804\n"
+ "._381:\n"
+ " add r0, r4, #0\n"
+ " bl FlagClear\n"
+ " mov r0, #0x1\n"
+ " bl DebugMenu_807786C\n"
+ "._382:\n"
+ " ldr r0, ._388 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._385 @cond_branch\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._386 @cond_branch\n"
+ "._385:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._387\n"
+ "._389:\n"
+ " .align 2, 0\n"
+ "._388:\n"
+ " .word gMain\n"
+ "._386:\n"
+ " mov r0, #0x0\n"
+ "._387:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_ToggleClearFlag()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._390 @ 0x804\n"
+ " bl FlagGet\n"
+ " mov r1, #0x1\n"
+ " eor r0, r0, r1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._390 + 4 @ gMenuCallback\n"
+ " ldr r0, ._390 + 8 @ DebugMenu_80783C8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._391:\n"
+ " .align 2, 0\n"
+ "._390:\n"
+ " .word 0x804\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80783C8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078464()
+{
+ asm(
+ " push {r4, lr}\n"
+ " ldr r4, ._396 @ 0x82a\n"
+ " add r0, r4, #0\n"
+ " bl FlagGet\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_8077E40\n"
+ " add r1, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._392 @cond_branch\n"
+ " cmp r1, #0\n"
+ " bgt ._393 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._394 @cond_branch\n"
+ " b ._401\n"
+ "._397:\n"
+ " .align 2, 0\n"
+ "._396:\n"
+ " .word 0x82a\n"
+ "._393:\n"
+ " cmp r1, #0x1\n"
+ " beq ._398 @cond_branch\n"
+ " b ._401\n"
+ "._392:\n"
+ " add r0, r4, #0\n"
+ " bl FlagClear\n"
+ " b ._401\n"
+ "._398:\n"
+ " add r0, r4, #0\n"
+ " bl FlagSet\n"
+ " b ._401\n"
+ "._394:\n"
+ " mov r0, #0x1\n"
+ " b ._402\n"
+ "._401:\n"
+ " mov r0, #0x0\n"
+ "._402:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenWeatherEvents()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._404 @ 0x82a\n"
+ " bl FlagGet\n"
+ " mov r1, #0x0\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " bne ._403 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._403:\n"
+ " add r0, r1, #0\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._404 + 4 @ gMenuCallback\n"
+ " ldr r0, ._404 + 8 @ DebugMenu_8078464\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._405:\n"
+ " .align 2, 0\n"
+ "._404:\n"
+ " .word 0x82a\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078464+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80784E8()
+{
+ asm(
+ " push {lr}\n"
+ " bl IsMysteryGiftEnabled\n"
+ " bl DebugMenu_8077E40\n"
+ " add r1, r0, #0\n"
+ " cmp r1, #0\n"
+ " beq ._406 @cond_branch\n"
+ " cmp r1, #0\n"
+ " bgt ._407 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._408 @cond_branch\n"
+ " b ._413\n"
+ "._407:\n"
+ " cmp r1, #0x1\n"
+ " beq ._410 @cond_branch\n"
+ " b ._413\n"
+ "._406:\n"
+ " bl DisableMysteryGift\n"
+ " b ._413\n"
+ "._410:\n"
+ " bl EnableMysteryGift\n"
+ " b ._413\n"
+ "._408:\n"
+ " mov r0, #0x1\n"
+ " b ._414\n"
+ "._413:\n"
+ " mov r0, #0x0\n"
+ "._414:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenMysteryEvent()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " bl IsMysteryGiftEnabled\n"
+ " mov r1, #0x0\n"
+ " cmp r0, #0\n"
+ " bne ._415 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._415:\n"
+ " add r0, r1, #0\n"
+ " bl DebugMenu_807786C\n"
+ " ldr r1, ._416 @ gMenuCallback\n"
+ " ldr r0, ._416 + 4 @ DebugMenu_80784E8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._417:\n"
+ " .align 2, 0\n"
+ "._416:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80784E8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078550()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r6, r0, #0x10\n"
+ " lsl r0, r6, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl GetGameStat\n"
+ " add r7, r0, #0\n"
+ " ldr r0, ._420 @ gStringVar1\n"
+ " add r1, r6, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " ldr r0, ._420 + 4 @ gStringVar2\n"
+ " ldr r5, ._420 + 8 @ gUnknown_Debug_839C26C\n"
+ " lsl r4, r6, #0x3\n"
+ " add r1, r5, #4\n"
+ " add r1, r4, r1\n"
+ " ldr r1, [r1]\n"
+ " bl StringCopy\n"
+ " add r4, r4, r5\n"
+ " ldr r0, [r4]\n"
+ " cmp r0, #0\n"
+ " bne ._418 @cond_branch\n"
+ " ldr r0, ._420 + 12 @ gStringVar3\n"
+ " ldr r1, ._420 + 16 @ Str_839C085\n"
+ " bl StringCopy\n"
+ " b ._423\n"
+ "._421:\n"
+ " .align 2, 0\n"
+ "._420:\n"
+ " .word gStringVar1\n"
+ " .word gStringVar2\n"
+ " .word gUnknown_Debug_839C26C\n"
+ " .word gStringVar3\n"
+ " .word Str_839C085\n"
+ "._418:\n"
+ " cmp r6, #0x1\n"
+ " beq ._422 @cond_branch\n"
+ " ldr r0, ._424 @ gStringVar3\n"
+ " add r1, r7, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0xa\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " b ._423\n"
+ "._425:\n"
+ " .align 2, 0\n"
+ "._424:\n"
+ " .word gStringVar3\n"
+ "._422:\n"
+ " ldr r4, ._426 @ gStringVar3\n"
+ " lsr r1, r7, #0x10\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " mov r6, #0xf0\n"
+ " strb r6, [r4, #0x3]\n"
+ " add r0, r4, #4\n"
+ " lsr r1, r7, #0x8\n"
+ " mov r5, #0xff\n"
+ " and r1, r1, r5\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " strb r6, [r4, #0x6]\n"
+ " add r4, r4, #0x7\n"
+ " and r7, r7, r5\n"
+ " add r0, r4, #0\n"
+ " add r1, r7, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ "._423:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._426 + 4 @ Str_839C07C\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._427:\n"
+ " .align 2, 0\n"
+ "._426:\n"
+ " .word gStringVar3\n"
+ " .word Str_839C07C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807860C()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._432 @ gTasks\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._428 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._429 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._430 @cond_branch\n"
+ " b ._447\n"
+ "._433:\n"
+ " .align 2, 0\n"
+ "._432:\n"
+ " .word gTasks+0x8\n"
+ "._429:\n"
+ " cmp r0, #0x2\n"
+ " beq ._434 @cond_branch\n"
+ " b ._447\n"
+ "._430:\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078550\n"
+ "._441:\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._447\n"
+ "._428:\n"
+ " ldr r3, ._439 @ gMain\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._437 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " mov r0, #0x1\n"
+ " b ._438\n"
+ "._440:\n"
+ " .align 2, 0\n"
+ "._439:\n"
+ " .word gMain\n"
+ "._437:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r2, r0, #0x10\n"
+ " cmp r2, #0\n"
+ " bne ._441 @cond_branch\n"
+ " ldrh r1, [r3, #0x30]\n"
+ " mov r0, #0x40\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._442 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x2]\n"
+ " lsl r0, r0, #0x10\n"
+ " asr r0, r0, #0x10\n"
+ " cmp r0, #0x32\n"
+ " bne ._446 @cond_branch\n"
+ " strh r2, [r4, #0x2]\n"
+ " b ._446\n"
+ "._442:\n"
+ " mov r0, #0x80\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._447 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " sub r0, r0, #0x1\n"
+ " strh r0, [r4, #0x2]\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bge ._446 @cond_branch\n"
+ " mov r0, #0x31\n"
+ " strh r0, [r4, #0x2]\n"
+ "._446:\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078550\n"
+ " b ._447\n"
+ "._434:\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._447:\n"
+ " mov r0, #0x0\n"
+ "._438:\n"
+ " pop {r4, r5}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80786C0()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " bl DebugMenu_807860C\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80786D0()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_807860C\n"
+ " cmp r0, #0\n"
+ " beq ._449 @cond_branch\n"
+ " ldr r1, ._450 @ gTasks\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r0, #0xa]\n"
+ " ldr r1, ._450 + 4 @ gUnknown_Debug_839C26C\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._449 @cond_branch\n"
+ " sub r1, r0, #1\n"
+ " add r0, r2, #0\n"
+ " bl SetGameStat\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ "._449:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._451:\n"
+ " .align 2, 0\n"
+ "._450:\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_839C26C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078714()
+{
+ asm(
+ " push {r4, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_807860C\n"
+ " cmp r0, #0\n"
+ " beq ._453 @cond_branch\n"
+ " ldr r1, ._454 @ gTasks\n"
+ " lsl r0, r4, #0x2\n"
+ " add r0, r0, r4\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r2, [r0, #0xa]\n"
+ " ldr r1, ._454 + 4 @ gUnknown_Debug_839C26C\n"
+ " lsl r0, r2, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldr r0, [r0]\n"
+ " cmp r0, #0\n"
+ " beq ._453 @cond_branch\n"
+ " add r0, r2, #0\n"
+ " mov r1, #0x0\n"
+ " bl SetGameStat\n"
+ " mov r0, #0x15\n"
+ " bl PlaySE\n"
+ "._453:\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._455:\n"
+ " .align 2, 0\n"
+ "._454:\n"
+ " .word gTasks\n"
+ " .word gUnknown_Debug_839C26C\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078758()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " bl CloseMenu\n"
+ " bl ScriptContext2_Enable\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " mov r0, #0x1\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078774()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._456 @ DebugMenu_80786C0\n"
+ " bl DebugMenu_8078758\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._457:\n"
+ " .align 2, 0\n"
+ "._456:\n"
+ " .word DebugMenu_80786C0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078788()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._458 @ DebugMenu_80786D0\n"
+ " bl DebugMenu_8078758\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._459:\n"
+ " .align 2, 0\n"
+ "._458:\n"
+ " .word DebugMenu_80786D0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_807879C()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._460 @ DebugMenu_8078714\n"
+ " bl DebugMenu_8078758\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._461:\n"
+ " .align 2, 0\n"
+ "._460:\n"
+ " .word DebugMenu_8078714+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80787B0()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._462 @ gUnknown_Debug_839C3FC\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._463:\n"
+ " .align 2, 0\n"
+ "._462:\n"
+ " .word gUnknown_Debug_839C3FC\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenLegendsRecord()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._464 @ gUnknown_Debug_839C3FC\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x3\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._464 + 4 @ gMenuCallback\n"
+ " ldr r0, ._464 + 8 @ DebugMenu_80787B0\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._465:\n"
+ " .align 2, 0\n"
+ "._464:\n"
+ " .word gUnknown_Debug_839C3FC\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_80787B0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80787EC()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add sp, sp, #0xfffffffc\n"
+ " mov r5, sp\n"
+ " add r5, r5, #0x2\n"
+ " mov r0, sp\n"
+ " add r1, r5, #0\n"
+ " bl GetXYCoordsOneStepInFrontOfPlayer\n"
+ " ldr r4, ._466 @ gSpecialVar_Result\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " bl MapGridGetMetatileBehaviorAt\n"
+ " strh r0, [r4]\n"
+ " ldr r0, ._466 + 4 @ gStringVar1\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " bl MapGridGetMetatileIdAt\n"
+ " strh r0, [r4]\n"
+ " ldr r0, ._466 + 8 @ gStringVar2\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " mov r0, sp\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r0, r1]\n"
+ " mov r2, #0x0\n"
+ " ldsh r1, [r5, r2]\n"
+ " bl MapGridGetZCoordAt\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " strh r0, [r4]\n"
+ " ldr r0, ._466 + 12 @ gStringVar3\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToHexStringN\n"
+ " ldr r0, ._466 + 16 @ gStringVar4\n"
+ " ldr r1, ._466 + 20 @ Str_839C414\n"
+ " bl StringExpandPlaceholders\n"
+ " add sp, sp, #0x4\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._467:\n"
+ " .align 2, 0\n"
+ "._466:\n"
+ " .word gSpecialVar_Result\n"
+ " .word gStringVar1\n"
+ " .word gStringVar2\n"
+ " .word gStringVar3\n"
+ " .word gStringVar4\n"
+ " .word Str_839C414\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078880()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._472 @ gTasks\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._468 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._469 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._470 @cond_branch\n"
+ " b ._480\n"
+ "._473:\n"
+ " .align 2, 0\n"
+ "._472:\n"
+ " .word gTasks\n"
+ "._469:\n"
+ " cmp r0, #0x2\n"
+ " beq ._474 @cond_branch\n"
+ " b ._480\n"
+ "._470:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " b ._476\n"
+ "._468:\n"
+ " ldr r0, ._478 @ gStringVar4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ "._476:\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ " b ._480\n"
+ "._479:\n"
+ " .align 2, 0\n"
+ "._478:\n"
+ " .word gStringVar4\n"
+ "._474:\n"
+ " ldr r0, ._481 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._480 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._480:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._482:\n"
+ " .align 2, 0\n"
+ "._481:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_CellInfo()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._483 @ DebugMenu_8078880\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl DebugMenu_80787EC\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._484:\n"
+ " .align 2, 0\n"
+ "._483:\n"
+ " .word DebugMenu_8078880+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenBerryInfo()
+{
+ asm(
+ " push {r4, lr}\n"
+ " bl DebugOpenBerryInfo\n"
+ " add r4, r0, #0\n"
+ " cmp r4, #0\n"
+ " bne ._485 @cond_branch\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ " b ._486\n"
+ "._485:\n"
+ " mov r0, #0x0\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x13\n"
+ " mov r3, #0x13\n"
+ " bl Menu_DrawStdWindowFrame\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x1\n"
+ " mov r2, #0x1\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._487 @ gMenuCallback\n"
+ " ldr r0, ._487 + 4 @ DebugMenu_8077DB4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ "._486:\n"
+ " pop {r4}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._488:\n"
+ " .align 2, 0\n"
+ "._487:\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8077DB4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078950()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._489 @ Str_839C42E\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._490:\n"
+ " .align 2, 0\n"
+ "._489:\n"
+ " .word Str_839C42E\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078968()
+{
+ asm(
+ " push {lr}\n"
+ " lsl r0, r0, #0x10\n"
+ " cmp r0, #0\n"
+ " bne ._491 @cond_branch\n"
+ " ldr r0, ._493 @ gStringVar1\n"
+ " mov r1, #0x32\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " b ._492\n"
+ "._494:\n"
+ " .align 2, 0\n"
+ "._493:\n"
+ " .word gStringVar1\n"
+ "._491:\n"
+ " ldr r0, ._495 @ gStringVar1\n"
+ " mov r1, #0x64\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ "._492:\n"
+ " ldr r0, ._495 @ gStringVar1\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._496:\n"
+ " .align 2, 0\n"
+ "._495:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80789A4()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r4, ._497 @ gStringVar1\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x4\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x9\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._498:\n"
+ " .align 2, 0\n"
+ "._497:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_80789CC()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r4, r0, #0x2\n"
+ " add r4, r4, r0\n"
+ " lsl r4, r4, #0x3\n"
+ " ldr r6, ._499 @ gTasks\n"
+ " add r5, r4, r6\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r5]\n"
+ " ldr r0, ._499 + 4 @ gSaveBlock2\n"
+ " ldr r1, ._499 + 8 @ 0x55c\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r5, #0x2]\n"
+ " bl DebugMenu_8078950\n"
+ " ldrh r0, [r5]\n"
+ " bl DebugMenu_8078968\n"
+ " sub r6, r6, #0x8\n"
+ " add r4, r4, r6\n"
+ " ldr r0, ._499 + 12 @ DebugMenu_8078A14\n"
+ " str r0, [r4]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._500:\n"
+ " .align 2, 0\n"
+ "._499:\n"
+ " .word gTasks+0x8\n"
+ " .word gSaveBlock2\n"
+ " .word 0x55c\n"
+ " .word DebugMenu_8078A14+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078A14()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r4, r1, #0x3\n"
+ " ldr r5, ._504 @ gTasks\n"
+ " add r2, r4, r5\n"
+ " ldr r0, ._504 + 4 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0xc0\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._501 @cond_branch\n"
+ " mov r1, #0x0\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r2, r3]\n"
+ " cmp r0, #0\n"
+ " bne ._502 @cond_branch\n"
+ " mov r1, #0x1\n"
+ "._502:\n"
+ " strh r1, [r2]\n"
+ " ldrh r0, [r2]\n"
+ " bl DebugMenu_8078968\n"
+ " b ._510\n"
+ "._505:\n"
+ " .align 2, 0\n"
+ "._504:\n"
+ " .word gTasks+0x8\n"
+ " .word gMain\n"
+ "._501:\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._506 @cond_branch\n"
+ " ldr r1, ._508 @ gSaveBlock2\n"
+ " mov r3, #0x0\n"
+ " ldsh r0, [r2, r3]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r3, ._508 + 4 @ 0x55c\n"
+ " add r1, r1, r3\n"
+ " add r0, r0, r1\n"
+ " ldrh r0, [r0]\n"
+ " strh r0, [r2, #0x2]\n"
+ " ldrh r0, [r2, #0x2]\n"
+ " bl DebugMenu_80789A4\n"
+ " add r0, r5, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r4, r0\n"
+ " ldr r1, ._508 + 8 @ DebugMenu_8078AA4\n"
+ " b ._507\n"
+ "._509:\n"
+ " .align 2, 0\n"
+ "._508:\n"
+ " .word gSaveBlock2\n"
+ " .word 0x55c\n"
+ " .word DebugMenu_8078AA4+1\n"
+ "._506:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._510 @cond_branch\n"
+ " add r0, r5, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r4, r0\n"
+ " ldr r1, ._511 @ DebugMenu_8078B38\n"
+ "._507:\n"
+ " str r1, [r0]\n"
+ "._510:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._512:\n"
+ " .align 2, 0\n"
+ "._511:\n"
+ " .word DebugMenu_8078B38+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078AA4()
+{
+ asm(
+ " push {r4, r5, r6, r7, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r5, r1, #0x3\n"
+ " ldr r7, ._515 @ gTasks\n"
+ " add r4, r5, r7\n"
+ " add r0, r4, #2\n"
+ " mov r2, #0xfa\n"
+ " lsl r2, r2, #0x3\n"
+ " ldr r6, ._515 + 4 @ gMain\n"
+ " ldrh r3, [r6, #0x30]\n"
+ " mov r1, #0x0\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._513 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_80789A4\n"
+ " b ._521\n"
+ "._516:\n"
+ " .align 2, 0\n"
+ "._515:\n"
+ " .word gTasks+0x8\n"
+ " .word gMain\n"
+ "._513:\n"
+ " ldrh r1, [r6, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._517 @cond_branch\n"
+ " ldr r1, ._519 @ gSaveBlock2\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " lsl r0, r0, #0x1\n"
+ " ldr r2, ._519 + 4 @ 0x55c\n"
+ " add r1, r1, r2\n"
+ " add r0, r0, r1\n"
+ " ldrh r1, [r4, #0x2]\n"
+ " strh r1, [r0]\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " add r0, r7, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._519 + 8 @ DebugMenu_8078B38\n"
+ " b ._518\n"
+ "._520:\n"
+ " .align 2, 0\n"
+ "._519:\n"
+ " .word gSaveBlock2\n"
+ " .word 0x55c\n"
+ " .word DebugMenu_8078B38+1\n"
+ "._517:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._521 @cond_branch\n"
+ " bl DebugMenu_8078950\n"
+ " ldrh r0, [r4]\n"
+ " bl DebugMenu_8078968\n"
+ " add r0, r7, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._522 @ DebugMenu_8078A14\n"
+ "._518:\n"
+ " str r1, [r0]\n"
+ "._521:\n"
+ " pop {r4, r5, r6, r7}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._523:\n"
+ " .align 2, 0\n"
+ "._522:\n"
+ " .word DebugMenu_8078A14+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078B38()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_BattleTowerStages()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " bl ScriptContext2_Enable\n"
+ " ldr r0, ._524 @ DebugMenu_80789CC\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._525:\n"
+ " .align 2, 0\n"
+ "._524:\n"
+ " .word DebugMenu_80789CC+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078B70()
+{
+ asm(
+ " push {lr}\n"
+ " add r1, r0, #0\n"
+ " lsl r1, r1, #0x10\n"
+ " lsr r1, r1, #0x10\n"
+ " ldr r0, ._526 @ gStringVar1\n"
+ " mov r2, #0x0\n"
+ " mov r3, #0x1\n"
+ " bl ConvertIntToHexStringN\n"
+ " ldr r0, ._526 + 4 @ Str_839C438\n"
+ " bl sub_8071F40\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._527:\n"
+ " .align 2, 0\n"
+ "._526:\n"
+ " .word gStringVar1\n"
+ " .word Str_839C438\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078B94()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " mov r3, #0x0\n"
+ " ldr r1, ._531 @ gUnknown_Debug_839C444\n"
+ " ldrb r0, [r1]\n"
+ " cmp r0, #0\n"
+ " beq ._529 @cond_branch\n"
+ " ldr r5, ._531 + 4 @ gSaveBlock1\n"
+ " add r4, r1, #0\n"
+ "._530:\n"
+ " lsl r0, r3, #0x3\n"
+ " add r2, r0, r5\n"
+ " add r0, r0, r4\n"
+ " ldr r1, [r0, #0x4]\n"
+ " ldr r0, [r0]\n"
+ " str r0, [r2]\n"
+ " str r1, [r2, #0x4]\n"
+ " add r0, r3, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r3, r0, #0x18\n"
+ " cmp r3, #0x27\n"
+ " bhi ._529 @cond_branch\n"
+ " lsl r0, r3, #0x3\n"
+ " add r0, r0, r4\n"
+ " ldrb r0, [r0]\n"
+ " cmp r0, #0\n"
+ " bne ._530 @cond_branch\n"
+ "._529:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._532:\n"
+ " .align 2, 0\n"
+ "._531:\n"
+ " .word gUnknown_Debug_839C444\n"
+ " .word gSaveBlock1+0x7f8\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078BD4()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " ldr r1, ._536 @ gTasks\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x0\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0\n"
+ " beq ._533 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " beq ._534 @cond_branch\n"
+ " b ._545\n"
+ "._537:\n"
+ " .align 2, 0\n"
+ "._536:\n"
+ " .word gTasks+0x8\n"
+ "._533:\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078B70\n"
+ " ldrh r0, [r4]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4]\n"
+ " b ._545\n"
+ "._534:\n"
+ " ldr r2, ._541 @ gMain\n"
+ " ldrh r1, [r2, #0x2e]\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._539 @cond_branch\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ " bl DebugMenu_8078B94\n"
+ " b ._545\n"
+ "._542:\n"
+ " .align 2, 0\n"
+ "._541:\n"
+ " .word gMain\n"
+ "._539:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._543 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ " bl ScriptContext2_Disable\n"
+ " b ._545\n"
+ "._543:\n"
+ " add r0, r4, #2\n"
+ " ldrh r3, [r2, #0x30]\n"
+ " mov r1, #0x0\n"
+ " mov r2, #0x4\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._545 @cond_branch\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " bl DebugMenu_8078B70\n"
+ "._545:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_CheckPKBLCK()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._546 @ DebugMenu_8078BD4\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._547:\n"
+ " .align 2, 0\n"
+ "._546:\n"
+ " .word DebugMenu_8078BD4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078C80()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._548 @ Str_839C5A4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._548 + 4 @ gMenuCallback\n"
+ " ldr r0, ._548 + 8 @ DebugMenu_8078CA8\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._549:\n"
+ " .align 2, 0\n"
+ "._548:\n"
+ " .word Str_839C5A4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078CA8+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078CA8()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._552 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._550 @cond_branch\n"
+ " ldr r1, ._552 + 4 @ gMenuCallback\n"
+ " ldr r0, ._552 + 8 @ DebugMenu_8078CE4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " b ._555\n"
+ "._553:\n"
+ " .align 2, 0\n"
+ "._552:\n"
+ " .word gMain\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078CE4+1\n"
+ "._550:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._554 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._555\n"
+ "._554:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._555:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078CE4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r1, ._558 @ \n"
+ " mov r2, #0x80\n"
+ " lsl r2, r2, #0xa\n"
+ " mov r0, #0x0\n"
+ " bl DebugMenu_8078E40\n"
+ " cmp r0, #0x1\n"
+ " bne ._556 @cond_branch\n"
+ " ldr r0, ._558 + 4 @ \n"
+ " ldr r1, ._558 + 8 @ \n"
+ " bl StringCopy\n"
+ " b ._557\n"
+ "._559:\n"
+ " .align 2, 0\n"
+ "._558:\n"
+ " .word +0x2000000\n"
+ " .word gStringVar4\n"
+ " .word Str_839C5CC\n"
+ "._556:\n"
+ " ldr r0, ._560 @ gStringVar4\n"
+ " ldr r1, ._560 + 4 @ Str_839C5DF\n"
+ " bl StringCopy\n"
+ "._557:\n"
+ " ldr r1, ._560 + 8 @ gMenuCallback\n"
+ " ldr r0, ._560 + 12 @ DebugMenu_8078D7C\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._561:\n"
+ " .align 2, 0\n"
+ "._560:\n"
+ " .word gStringVar4\n"
+ " .word Str_839C5DF\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078D7C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078D30()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " ldr r5, ._563 @ \n"
+ " mov r4, #0x0\n"
+ " mov r6, #0x80\n"
+ " lsl r6, r6, #0x5\n"
+ "._562:\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " add r2, r6, #0\n"
+ " bl DebugMenu_8078E68\n"
+ " add r5, r5, r6\n"
+ " add r0, r4, #1\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r4, r0, #0x18\n"
+ " cmp r4, #0x1f\n"
+ " bls ._562 @cond_branch\n"
+ " ldr r0, ._563 + 4 @ \n"
+ " ldr r1, ._563 + 8 @ \n"
+ " bl StringCopy\n"
+ " ldr r1, ._563 + 12 @ \n"
+ " ldr r0, ._563 + 16 @ \n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._564:\n"
+ " .align 2, 0\n"
+ "._563:\n"
+ " .word +0x2000000\n"
+ " .word gStringVar4\n"
+ " .word Str_839C5D6\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078D7C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078D7C()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " ldr r0, ._565 @ gStringVar4\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " ldr r1, ._565 + 4 @ gMenuCallback\n"
+ " ldr r0, ._565 + 8 @ DebugMenu_8078DA4\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._566:\n"
+ " .align 2, 0\n"
+ "._565:\n"
+ " .word gStringVar4\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078DA4+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078DA4()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._569 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " bne ._567 @cond_branch\n"
+ " mov r0, #0x0\n"
+ " b ._568\n"
+ "._570:\n"
+ " .align 2, 0\n"
+ "._569:\n"
+ " .word gMain\n"
+ "._567:\n"
+ " bl CloseMenu\n"
+ " mov r0, #0x1\n"
+ "._568:\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_MeTooBackupMan()
+{
+ asm(
+ " push {lr}\n"
+ " bl Menu_EraseScreen\n"
+ " ldr r0, ._571 @ gUnknown_Debug_839C594\n"
+ " mov r1, #0xc\n"
+ " mov r2, #0x2\n"
+ " bl DebugMenu_8077D24\n"
+ " ldr r1, ._571 + 4 @ gMenuCallback\n"
+ " ldr r0, ._571 + 8 @ DebugMenu_8078DF0\n"
+ " str r0, [r1]\n"
+ " mov r0, #0x0\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._572:\n"
+ " .align 2, 0\n"
+ "._571:\n"
+ " .word gUnknown_Debug_839C594\n"
+ " .word gMenuCallback\n"
+ " .word DebugMenu_8078DF0+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078DF0()
+{
+ asm(
+ " push {lr}\n"
+ " ldr r0, ._573 @ gUnknown_Debug_839C594\n"
+ " bl DebugMenu_8077D78\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._574:\n"
+ " .align 2, 0\n"
+ "._573:\n"
+ " .word gUnknown_Debug_839C594\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E04()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r6, r1, #0\n"
+ " add r5, r2, #0\n"
+ " b ._575\n"
+ "._577:\n"
+ " ldr r0, ._579 @ 0xfffff000\n"
+ " add r5, r5, r0\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x5\n"
+ " add r6, r6, r0\n"
+ " add r0, r4, #1\n"
+ "._575:\n"
+ " lsl r0, r0, #0x10\n"
+ " lsr r4, r0, #0x10\n"
+ " add r0, r4, #0\n"
+ " add r1, r6, #0\n"
+ " bl ProgramFlashSectorAndVerify\n"
+ " cmp r0, #0\n"
+ " bne ._576 @cond_branch\n"
+ " mov r0, #0x80\n"
+ " lsl r0, r0, #0x5\n"
+ " cmp r5, r0\n"
+ " bhi ._577 @cond_branch\n"
+ " mov r0, #0x1\n"
+ " b ._578\n"
+ "._580:\n"
+ " .align 2, 0\n"
+ "._579:\n"
+ " .word 0xfffff000\n"
+ "._576:\n"
+ " mov r0, #0x0\n"
+ "._578:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E40()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " add r4, r0, #0\n"
+ " add r5, r1, #0\n"
+ " add r6, r2, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl m4aSoundVSyncOff\n"
+ " add r0, r4, #0\n"
+ " add r1, r5, #0\n"
+ " add r2, r6, #0\n"
+ " bl DebugMenu_8078E04\n"
+ " add r4, r0, #0\n"
+ " bl m4aSoundVSyncOn\n"
+ " add r0, r4, #0\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E68()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r1, #0\n"
+ " add r3, r2, #0\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " mov r1, #0x0\n"
+ " add r2, r4, #0\n"
+ " bl ReadFlash\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078E80()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " mov r0, #0x2\n"
+ " mov r1, #0xf\n"
+ " mov r2, #0x16\n"
+ " mov r3, #0x10\n"
+ " bl Menu_BlankWindowRect\n"
+ " ldr r1, ._581 @ gUnknown_Debug_839C5F4\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " lsl r0, r0, #0x3\n"
+ " add r0, r0, r1\n"
+ " ldrb r1, [r0, #0x4]\n"
+ " mov r0, #0xd0\n"
+ " mov r2, #0xf\n"
+ " bl sub_8071F60\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._582:\n"
+ " .align 2, 0\n"
+ "._581:\n"
+ " .word gUnknown_Debug_839C5F4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078EB0()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " add r5, r0, #0\n"
+ " ldr r4, ._583 @ gStringVar1\n"
+ " mov r0, #0x2\n"
+ " ldsh r1, [r5, r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x1\n"
+ " mov r3, #0x3\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xf0\n"
+ " mov r1, #0x5\n"
+ " mov r2, #0x11\n"
+ " bl sub_8071F60\n"
+ " mov r0, #0x4\n"
+ " ldsh r1, [r5, r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x6\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0xf0\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x11\n"
+ " bl sub_8071F60\n"
+ " mov r0, #0x6\n"
+ " ldsh r1, [r5, r0]\n"
+ " add r0, r4, #0\n"
+ " mov r2, #0x2\n"
+ " mov r3, #0x2\n"
+ " bl ConvertIntToDecimalStringN\n"
+ " add r0, r4, #0\n"
+ " mov r1, #0x9\n"
+ " mov r2, #0x11\n"
+ " bl Menu_PrintText\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._584:\n"
+ " .align 2, 0\n"
+ "._583:\n"
+ " .word gStringVar1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078F1C()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r4, r0, #0x2\n"
+ " add r4, r4, r0\n"
+ " lsl r4, r4, #0x3\n"
+ " ldr r6, ._585 @ gTasks\n"
+ " add r5, r4, r6\n"
+ " mov r0, #0x0\n"
+ " strh r0, [r5]\n"
+ " ldr r1, ._585 + 4 @ gSaveBlock2\n"
+ " ldrh r0, [r1, #0xe]\n"
+ " strh r0, [r5, #0x2]\n"
+ " ldrb r0, [r1, #0x10]\n"
+ " strh r0, [r5, #0x4]\n"
+ " ldrb r0, [r1, #0x11]\n"
+ " strh r0, [r5, #0x6]\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " add r0, r5, #0\n"
+ " bl DebugMenu_8078EB0\n"
+ " add r0, r5, #0\n"
+ " bl DebugMenu_8078E80\n"
+ " sub r6, r6, #0x8\n"
+ " add r4, r4, r6\n"
+ " ldr r0, ._585 + 8 @ DebugMenu_8078F68\n"
+ " str r0, [r4]\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._586:\n"
+ " .align 2, 0\n"
+ "._585:\n"
+ " .word gTasks+0x8\n"
+ " .word gSaveBlock2\n"
+ " .word DebugMenu_8078F68+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8078F68()
+{
+ asm(
+ " push {r4, r5, r6, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r0, r0, #0x18\n"
+ " lsl r1, r0, #0x2\n"
+ " add r1, r1, r0\n"
+ " lsl r5, r1, #0x3\n"
+ " ldr r6, ._589 @ gTasks\n"
+ " add r4, r5, r6\n"
+ " ldr r3, ._589 + 4 @ gMain\n"
+ " ldrh r1, [r3, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._587 @cond_branch\n"
+ " ldr r1, ._589 + 8 @ gSaveBlock2\n"
+ " ldrh r0, [r4, #0x2]\n"
+ " strh r0, [r1, #0xe]\n"
+ " ldrh r0, [r4, #0x4]\n"
+ " strb r0, [r1, #0x10]\n"
+ " ldrh r0, [r4, #0x6]\n"
+ " strb r0, [r1, #0x11]\n"
+ " mov r0, #0x49\n"
+ " bl PlaySE\n"
+ " b ._588\n"
+ "._590:\n"
+ " .align 2, 0\n"
+ "._589:\n"
+ " .word gTasks+0x8\n"
+ " .word gMain\n"
+ " .word gSaveBlock2\n"
+ "._587:\n"
+ " mov r0, #0x2\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._591 @cond_branch\n"
+ "._588:\n"
+ " add r0, r6, #0\n"
+ " sub r0, r0, #0x8\n"
+ " add r0, r5, r0\n"
+ " ldr r1, ._593 @ DebugMenu_8079020\n"
+ " str r1, [r0]\n"
+ " b ._601\n"
+ "._594:\n"
+ " .align 2, 0\n"
+ "._593:\n"
+ " .word DebugMenu_8079020+1\n"
+ "._591:\n"
+ " mov r0, #0x20\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._595 @cond_branch\n"
+ " ldrh r1, [r4]\n"
+ " mov r2, #0x0\n"
+ " ldsh r0, [r4, r2]\n"
+ " cmp r0, #0\n"
+ " beq ._601 @cond_branch\n"
+ " sub r0, r1, #1\n"
+ " b ._597\n"
+ "._595:\n"
+ " mov r0, #0x10\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._598 @cond_branch\n"
+ " ldrh r0, [r4]\n"
+ " cmp r0, #0x1\n"
+ " bhi ._601 @cond_branch\n"
+ " add r0, r0, #0x1\n"
+ "._597:\n"
+ " strh r0, [r4]\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_8078E80\n"
+ " b ._601\n"
+ "._598:\n"
+ " mov r0, #0x0\n"
+ " ldsh r2, [r4, r0]\n"
+ " lsl r2, r2, #0x3\n"
+ " ldr r0, ._602 @ gUnknown_Debug_839C5F4\n"
+ " add r2, r2, r0\n"
+ " ldrb r0, [r2, #0x5]\n"
+ " lsl r0, r0, #0x1\n"
+ " add r0, r4, r0\n"
+ " ldrh r1, [r2]\n"
+ " ldrh r2, [r2, #0x2]\n"
+ " ldrh r3, [r3, #0x30]\n"
+ " bl DebugMenu_8077DD8\n"
+ " cmp r0, #0x1\n"
+ " bne ._601 @cond_branch\n"
+ " add r0, r4, #0\n"
+ " bl DebugMenu_8078EB0\n"
+ "._601:\n"
+ " pop {r4, r5, r6}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._603:\n"
+ " .align 2, 0\n"
+ "._602:\n"
+ " .word gUnknown_Debug_839C5F4\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8079020()
+{
+ asm(
+ " push {r4, lr}\n"
+ " add r4, r0, #0\n"
+ " lsl r4, r4, #0x18\n"
+ " lsr r4, r4, #0x18\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r4, #0\n"
+ " bl DestroyTask\n"
+ " pop {r4}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_PTime()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._604 @ DebugMenu_8078F1C\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._605:\n"
+ " .align 2, 0\n"
+ "._604:\n"
+ " .word DebugMenu_8078F1C+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8079058()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._610 @ gTasks\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r0, #0x8\n"
+ " ldsh r1, [r4, r0]\n"
+ " cmp r1, #0x1\n"
+ " beq ._606 @cond_branch\n"
+ " cmp r1, #0x1\n"
+ " bgt ._607 @cond_branch\n"
+ " cmp r1, #0\n"
+ " beq ._608 @cond_branch\n"
+ " b ._620\n"
+ "._611:\n"
+ " .align 2, 0\n"
+ "._610:\n"
+ " .word gTasks\n"
+ "._607:\n"
+ " cmp r1, #0x2\n"
+ " beq ._612 @cond_branch\n"
+ " b ._620\n"
+ "._608:\n"
+ " ldr r0, ._615 @ gUnknown_Debug_03004BD0\n"
+ " str r1, [r0]\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " b ._614\n"
+ "._616:\n"
+ " .align 2, 0\n"
+ "._615:\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "._606:\n"
+ " ldr r0, ._618 @ gDebug0x839C60C\n"
+ " mov r1, #0x4\n"
+ " mov r2, #0xf\n"
+ " bl Menu_PrintText\n"
+ " mov r0, #0x14\n"
+ " mov r1, #0x8\n"
+ " mov r2, #0x1\n"
+ " bl DisplayYesNoMenu\n"
+ "._614:\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ " b ._620\n"
+ "._619:\n"
+ " .align 2, 0\n"
+ "._618:\n"
+ " .word gDebug0x839C60C\n"
+ "._612:\n"
+ " bl Menu_ProcessInputNoWrap_\n"
+ " lsl r0, r0, #0x18\n"
+ " asr r1, r0, #0x18\n"
+ " mov r0, #0x2\n"
+ " neg r0, r0\n"
+ " cmp r1, r0\n"
+ " beq ._620 @cond_branch\n"
+ " cmp r1, #0\n"
+ " bne ._621 @cond_branch\n"
+ " ldr r1, ._623 @ gUnknown_Debug_03004BD0\n"
+ " mov r0, #0x1\n"
+ " b ._622\n"
+ "._624:\n"
+ " .align 2, 0\n"
+ "._623:\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "._621:\n"
+ " ldr r1, ._625 @ gUnknown_Debug_03004BD0\n"
+ " mov r0, #0x0\n"
+ "._622:\n"
+ " str r0, [r1]\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._620:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._626:\n"
+ " .align 2, 0\n"
+ "._625:\n"
+ " .word gUnknown_Debug_03004BD0\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenMurakawa()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._627 @ DebugMenu_8079058\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " mov r0, #0x1\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._628:\n"
+ " .align 2, 0\n"
+ "._627:\n"
+ " .word DebugMenu_8079058+1\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+void DebugMenu_8079110()
+{
+ asm(
+ " push {r4, r5, lr}\n"
+ " lsl r0, r0, #0x18\n"
+ " lsr r5, r0, #0x18\n"
+ " ldr r1, ._633 @ gTasks\n"
+ " lsl r0, r5, #0x2\n"
+ " add r0, r0, r5\n"
+ " lsl r0, r0, #0x3\n"
+ " add r4, r0, r1\n"
+ " mov r1, #0x8\n"
+ " ldsh r0, [r4, r1]\n"
+ " cmp r0, #0x1\n"
+ " beq ._629 @cond_branch\n"
+ " cmp r0, #0x1\n"
+ " bgt ._630 @cond_branch\n"
+ " cmp r0, #0\n"
+ " beq ._631 @cond_branch\n"
+ " b ._642\n"
+ "._634:\n"
+ " .align 2, 0\n"
+ "._633:\n"
+ " .word gTasks\n"
+ "._630:\n"
+ " cmp r0, #0x2\n"
+ " beq ._635 @cond_branch\n"
+ " b ._642\n"
+ "._631:\n"
+ " bl Menu_DisplayDialogueFrame\n"
+ " b ._637\n"
+ "._629:\n"
+ " ldr r0, ._639 @ Str_839C61A\n"
+ " mov r1, #0x2\n"
+ " mov r2, #0xf\n"
+ " bl MenuPrintMessage\n"
+ "._637:\n"
+ " ldrh r0, [r4, #0x8]\n"
+ " add r0, r0, #0x1\n"
+ " strh r0, [r4, #0x8]\n"
+ " b ._642\n"
+ "._640:\n"
+ " .align 2, 0\n"
+ "._639:\n"
+ " .word Str_839C61A\n"
+ "._635:\n"
+ " bl Menu_UpdateWindowText\n"
+ " lsl r0, r0, #0x18\n"
+ " cmp r0, #0\n"
+ " beq ._642 @cond_branch\n"
+ " ldr r0, ._643 @ gMain\n"
+ " ldrh r1, [r0, #0x2e]\n"
+ " mov r0, #0x1\n"
+ " and r0, r0, r1\n"
+ " cmp r0, #0\n"
+ " beq ._642 @cond_branch\n"
+ " bl Menu_EraseScreen\n"
+ " bl ScriptContext2_Disable\n"
+ " add r0, r5, #0\n"
+ " bl DestroyTask\n"
+ "._642:\n"
+ " pop {r4, r5}\n"
+ " pop {r0}\n"
+ " bx r0\n"
+ "._644:\n"
+ " .align 2, 0\n"
+ "._643:\n"
+ " .word gMain\n"
+ "\n"
+ );
+}
+
+__attribute__((naked))
+u8 DebugMenu_OpenKiwa()
+{
+ asm(
+ " push {lr}\n"
+ " bl CloseMenu\n"
+ " ldr r0, ._645 @ DebugMenu_8079110\n"
+ " mov r1, #0x50\n"
+ " bl CreateTask\n"
+ " bl ScriptContext2_Enable\n"
+ " pop {r1}\n"
+ " bx r1\n"
+ "._646:\n"
+ " .align 2, 0\n"
+ "._645:\n"
+ " .word DebugMenu_8079110+1\n"
+ "\n"
+ );
+}
+
+#endif
diff --git a/src/debug/taya_debug_window.c b/src/debug/taya_debug_window.c
new file mode 100644
index 000000000..f7e0e3770
--- /dev/null
+++ b/src/debug/taya_debug_window.c
@@ -0,0 +1,6 @@
+#if DEBUG
+#include "global.h"
+
+EWRAM_DATA u8 unk_2030224[4] = { 0 };
+
+#endif
diff --git a/src/debug/tomomichi_debug_menu.c b/src/debug/tomomichi_debug_menu.c
new file mode 100644
index 000000000..c3616797e
--- /dev/null
+++ b/src/debug/tomomichi_debug_menu.c
@@ -0,0 +1,20 @@
+#if DEBUG
+#include "global.h"
+
+// These should be static, uninitialized once it gets decompiled.
+#define BSS_DATA __attribute__((section(".bss")))
+BSS_DATA u8 gDebug_03000700[4] = {0};
+BSS_DATA u8 gDebug_03000704[4] = {0};
+BSS_DATA u8 gDebug_03000708[4] = {0};
+BSS_DATA u8 gDebug_0300070C = 0;
+BSS_DATA u8 gDebug_0300070D = 0;
+BSS_DATA u8 gDebug_0300070E = 0;
+BSS_DATA u8 gDebug_0300070F = 0;
+BSS_DATA u8 gDebug_03000710[13] = {0};
+BSS_DATA u8 gDebug_0300071D = 0;
+BSS_DATA u8 gDebug_0300071E = 0;
+BSS_DATA u8 gDebug_0300071F = 0;
+BSS_DATA u8 gDebug_03000720 = 0;
+BSS_DATA u8 gDebug_03000721 = 0;
+
+#endif
diff --git a/src/debug/watanabe_debug_menu.c b/src/debug/watanabe_debug_menu.c
new file mode 100644
index 000000000..6c94b0466
--- /dev/null
+++ b/src/debug/watanabe_debug_menu.c
@@ -0,0 +1,11 @@
+#if DEBUG
+#include "global.h"
+
+EWRAM_DATA u8 gUnknown_Debug_20389EC[0x20] = { 0 };
+EWRAM_DATA u8 gUnknown_Debug_2038A0C[0x10] = { 0 };
+EWRAM_DATA u8 gUnknown_Debug_2038A1C[4] = { 0 };
+EWRAM_DATA u8 gUnknown_Debug_2038A20[4] = { 0 };
+
+u8 byte_3005E30[0x20];
+
+#endif
diff --git a/src/engine/decompress.c b/src/decompress.c
index 69edf01aa..69edf01aa 100644
--- a/src/engine/decompress.c
+++ b/src/decompress.c
diff --git a/src/field/decoration.c b/src/decoration.c
index 0e7fa5f41..477414993 100644
--- a/src/field/decoration.c
+++ b/src/decoration.c
@@ -622,7 +622,7 @@ const u8 DecorDesc_REGISTEEL_DOLL[] = _(
"Place it on a mat\n"
"or a desk.");
#elif GERMAN
-#include "../data/decoration/descriptions_de.h"
+#include "data/decoration/descriptions_de.h"
#endif
const u16 DecorGfx_SMALL_DESK[] = {
@@ -1392,7 +1392,7 @@ const struct Decoration gDecorations[] = {
{DECOR_REGISTEEL_DOLL, _("REGISTEEL DOLL"), DECORPERM_SOLID_MAT, DECORSHAPE_1x2, DECORCAT_DOLL, 10000, DecorDesc_REGISTEEL_DOLL, DecorGfx_REGISTEEL_DOLL}
};
#elif GERMAN
-#include "../data/decoration/decorations.h"
+#include "data/decoration/decorations.h"
#endif
const u8 *const gUnknown_083EC5E4[] = {
diff --git a/src/field/decoration_inventory.c b/src/decoration_inventory.c
index dd0e972aa..8f7f5eb92 100644
--- a/src/field/decoration_inventory.c
+++ b/src/decoration_inventory.c
@@ -164,3 +164,14 @@ u8 sub_81341D4(void)
}
return count;
}
+
+
+#if DEBUG
+void debug_sub_814A3A8(void)
+{
+ u8 decor;
+
+ for (decor = 0; decor < DECOR_COUNT; decor++)
+ IsThereStorageSpaceForDecoration(decor);
+}
+#endif
diff --git a/src/field/dewford_trend.c b/src/dewford_trend.c
index 9afb7a16d..9afb7a16d 100644
--- a/src/field/dewford_trend.c
+++ b/src/dewford_trend.c
diff --git a/src/field/diploma.c b/src/diploma.c
index b31fc7dec..b31fc7dec 100644
--- a/src/field/diploma.c
+++ b/src/diploma.c
diff --git a/src/easy_chat_2.c b/src/easy_chat_2.c
index c56fe7576..ed6a97ba2 100644
--- a/src/easy_chat_2.c
+++ b/src/easy_chat_2.c
@@ -5,7 +5,7 @@
#include "decompress.h"
#include "easy_chat.h"
#include "event_data.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_message_box.h"
#include "graphics.h"
#include "menu.h"
diff --git a/src/scene/egg_hatch.c b/src/egg_hatch.c
index 282ad31fb..282ad31fb 100644
--- a/src/scene/egg_hatch.c
+++ b/src/egg_hatch.c
diff --git a/src/field/event_data.c b/src/event_data.c
index 9d6d2372b..9d6d2372b 100644
--- a/src/field/event_data.c
+++ b/src/event_data.c
diff --git a/src/field/field_map_obj.c b/src/event_object_movement.c
index 77b4c8b5c..155ce33f5 100644
--- a/src/field/field_map_obj.c
+++ b/src/event_object_movement.c
@@ -1,12 +1,10 @@
#include "global.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "berry.h"
#include "event_data.h"
#include "field_camera.h"
#include "field_effect.h"
#include "field_effect_helpers.h"
-#include "field_ground_effect.h"
-#include "field_map_obj_helpers.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "palette.h"
@@ -18,6 +16,8 @@
#include "constants/map_objects.h"
#include "trainer_see.h"
+// this file was known as evobjmv.c in Game Freak's original source
+
// rodata
const u8 gUnknown_0830FD14[] = {1, 1, 6, 7, 8, 9, 6, 7, 8, 9, 11, 11, 0, 0, 0, 0};
@@ -1578,13 +1578,13 @@ void (*const gUnknown_0836DA88[])(struct Sprite *) =
const u8 gUnknown_0836DBBC[] = {0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
const u8 gUnknown_0836DC09[] = {DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_NORTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_WEST, DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_EAST, DIR_WEST, DIR_NORTH, DIR_EAST, DIR_SOUTH, DIR_EAST, DIR_NORTH, DIR_WEST, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_SOUTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH, DIR_NORTH, DIR_WEST, DIR_EAST, DIR_SOUTH};
-#include "../data/field_map_obj/map_object_graphics_info_pointers.h"
-#include "../data/field_map_obj/field_effect_object_template_pointers.h"
-#include "../data/field_map_obj/map_object_pic_tables.h"
-#include "../data/field_map_obj/map_object_anims.h"
-#include "../data/field_map_obj/base_oam.h"
-#include "../data/field_map_obj/map_object_subsprites.h"
-#include "../data/field_map_obj/map_object_graphics_info.h"
+#include "data/field_map_obj/map_object_graphics_info_pointers.h"
+#include "data/field_map_obj/field_effect_object_template_pointers.h"
+#include "data/field_map_obj/map_object_pic_tables.h"
+#include "data/field_map_obj/map_object_anims.h"
+#include "data/field_map_obj/base_oam.h"
+#include "data/field_map_obj/map_object_subsprites.h"
+#include "data/field_map_obj/map_object_graphics_info.h"
const struct SpritePalette gUnknown_0837377C[] = {
{gMapObjectPalette0, 0x1103},
@@ -1790,14 +1790,14 @@ const u16 *const gUnknown_0837399C[] = {
Unknown_8373988
};
-#include "../data/field_map_obj/berry_tree_graphics_tables.h"
-#include "../data/field_map_obj/field_effect_objects.h"
+#include "data/field_map_obj/berry_tree_graphics_tables.h"
+#include "data/field_map_obj/field_effect_objects.h"
const s16 gUnknown_0837520C[] = {0x20, 0x40, 0x60, 0x80};
const s16 gUnknown_08375204[] = {0x20, 0x40, 0x80, 0xc0};
const s16 gUnknown_0837521C[] = {0x20, 0x30, 0x40, 0x50};
-#include "../data/field_map_obj/callback_subroutine_pointers.h"
+#include "data/field_map_obj/callback_subroutine_pointers.h"
const u8 gUnknown_083755F4[] = {0x00, 0x00, 0x01, 0x02, 0x03, 0x00, 0x00, 0x01, 0x01};
const u8 gUnknown_083755FD[] = {0x04, 0x04, 0x05, 0x06, 0x07, 0x04, 0x04, 0x05, 0x05};
@@ -1886,7 +1886,7 @@ const u8 gUnknown_08375767[][4] = {
{3, 4, 2, 1}
};
-#include "../data/field_map_obj/anim_func_ptrs.h"
+#include "data/field_map_obj/anim_func_ptrs.h"
// text
@@ -1907,6 +1907,9 @@ static u8 gUnknown_030005A4;
static u16 gUnknown_030005A6;
struct MapObject gMapObjects[16];
+#if DEBUG
+u8 gUnknown_Debug_03004BC0;
+#endif
void npc_clear_ids_and_state(struct MapObject *mapObj)
{
@@ -1923,6 +1926,9 @@ void npcs_clear_ids_and_state(void)
for (i = 0; i < 16; i++)
npc_clear_ids_and_state(&gMapObjects[i]);
+#if DEBUG
+ gUnknown_Debug_03004BC0 = 0;
+#endif
}
void sub_805AA98(void)
@@ -1966,7 +1972,7 @@ u8 sub_805AB54(void)
u8 GetFieldObjectIdByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
{
- if (localId <= 0xFE)
+ if (localId < 255)
return GetFieldObjectIdByLocalIdAndMapInternal(localId, mapNum, mapGroup);
else
return GetFieldObjectIdByLocalId(localId);
@@ -2017,20 +2023,80 @@ u8 GetFieldObjectIdByLocalId(u8 localId)
return 16;
}
-#ifdef NONMATCHING
+// The bitfield at 0x18 needs to be u16 for this function to match
+struct MapObjectAlt
+{
+ /*0x00*/ u32 active:1;
+ u32 mapobj_bit_1:1;
+ u32 mapobj_bit_2:1;
+ u32 mapobj_bit_3:1;
+ u32 mapobj_bit_4:1;
+ u32 mapobj_bit_5:1;
+ u32 mapobj_bit_6:1;
+ u32 mapobj_bit_7:1;
+ /*0x01*/ u32 mapobj_bit_8:1;
+ u32 mapobj_bit_9:1;
+ u32 mapobj_bit_10:1;
+ u32 mapobj_bit_11:1;
+ u32 mapobj_bit_12:1;
+ u32 mapobj_bit_13:1;
+ u32 mapobj_bit_14:1;
+ u32 mapobj_bit_15:1;
+ /*0x02*/ u32 mapobj_bit_16:1;
+ u32 mapobj_bit_17:1;
+ u32 mapobj_bit_18:1;
+ u32 mapobj_bit_19:1;
+ u32 mapobj_bit_20:1;
+ u32 mapobj_bit_21:1;
+ u32 mapobj_bit_22:1;
+ u32 mapobj_bit_23:1;
+ /*0x03*/ u32 mapobj_bit_24:1;
+ u32 mapobj_bit_25:1;
+ u32 mapobj_bit_26:1;
+ u32 mapobj_bit_27:1;
+ u32 mapobj_bit_28:1;
+ u32 mapobj_bit_29:1;
+ u32 mapobj_bit_30:1;
+ u32 mapobj_bit_31:1;
+ /*0x04*/ u8 spriteId;
+ /*0x05*/ u8 graphicsId;
+ /*0x06*/ u8 animPattern;
+ /*0x07*/ u8 trainerType;
+ /*0x08*/ u8 localId;
+ /*0x09*/ u8 mapNum;
+ /*0x0A*/ u8 mapGroup;
+ /*0x0B*/ u8 mapobj_unk_0B_0:4;
+ u8 elevation:4;
+ /*0x0C*/ struct Coords16 coords1;
+ /*0x10*/ struct Coords16 coords2;
+ /*0x14*/ struct Coords16 coords3;
+ /*0x18*/ u16 mapobj_unk_18:4; //current direction?
+ /*0x18*/ u16 placeholder18:4;
+ /*0x19*/ u16 rangeX:4;
+ /*0x19*/ u16 rangeY:4;
+ /*0x1A*/ u8 mapobj_unk_1A;
+ /*0x1B*/ u8 mapobj_unk_1B;
+ /*0x1C*/ u8 mapobj_unk_1C;
+ /*0x1D*/ u8 trainerRange_berryTreeId;
+ /*0x1E*/ u8 mapobj_unk_1E;
+ /*0x1F*/ u8 mapobj_unk_1F;
+ /*0x20*/ u8 mapobj_unk_20;
+ /*0x21*/ u8 mapobj_unk_21;
+ /*0x22*/ u8 animId;
+ /*size = 0x24*/
+};
+
u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
{
- struct MapObject *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
+ struct MapObjectAlt *mapObj; //TODO: resolve the mapobj_unk_19b weirdness
u8 var;
- u16 r3;
- u16 r2;
+ s16 r3;
+ s16 r2;
- //asm("nop"::"r"(b));
if (GetAvailableFieldObjectSlot(template->localId, b, c, &var) != 0)
return 16;
- //_0805ACCE
- mapObj = &gMapObjects[var];
- npc_clear_ids_and_state(mapObj);
+ mapObj = (void *)&gMapObjects[var];
+ npc_clear_ids_and_state((struct MapObject *)mapObj);
r3 = template->x + 7;
r2 = template->y + 7;
mapObj->active = TRUE;
@@ -2039,6 +2105,7 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8
mapObj->animPattern = template->movementType;
mapObj->localId = template->localId;
mapObj->mapNum = b;
+ asm("":::"r6");
mapObj->mapGroup = c;
mapObj->coords1.x = r3;
mapObj->coords1.y = r2;
@@ -2048,185 +2115,26 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8
mapObj->coords3.y = r2;
mapObj->mapobj_unk_0B_0 = template->elevation;
mapObj->elevation = template->elevation;
- mapObj->range.as_nybbles.x = template->unkA_0;
- mapObj->range.as_nybbles.y = template->unkA_4;
+ mapObj->rangeX = template->unkA_0;
+ mapObj->rangeY = template->unkA_4;
mapObj->trainerType = template->unkC;
mapObj->trainerRange_berryTreeId = template->unkE;
mapObj->mapobj_unk_20 = gUnknown_0836DC09[template->movementType];
FieldObjectSetDirection((struct MapObject *)mapObj, mapObj->mapobj_unk_20);
- FieldObjectHandleDynamicGraphicsId(mapObj);
- //asm("":::"r5","r6");
+ asm("":::"r5","r6");
+ FieldObjectHandleDynamicGraphicsId((struct MapObject *)mapObj);
if (gUnknown_0836DBBC[mapObj->animPattern] != 0)
{
- if (mapObj->range.as_nybbles.x == 0)
- mapObj->range.as_nybbles.x++;
- if (mapObj->range.as_nybbles.y == 0)
- mapObj->range.as_nybbles.y++;
+ if (mapObj->rangeX == 0)
+ mapObj->rangeX++;
+ if (mapObj->rangeY == 0)
+ mapObj->rangeY++;
}
+#if DEBUG
+ gUnknown_Debug_03004BC0++;
+#endif
return var;
}
-#else
-__attribute__((naked))
-u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x4\n\
- adds r5, r0, 0\n\
- lsls r1, 24\n\
- lsrs r6, r1, 24\n\
- lsls r2, 24\n\
- lsrs r7, r2, 24\n\
- ldrb r0, [r5]\n\
- adds r1, r6, 0\n\
- adds r2, r7, 0\n\
- mov r3, sp\n\
- bl GetAvailableFieldObjectSlot\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0805ACCE\n\
- movs r0, 0x10\n\
- b _0805ADC2\n\
-_0805ACCE:\n\
- mov r0, sp\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 3\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, _0805ADD0 @ =gMapObjects\n\
- adds r4, r0, r1\n\
- adds r0, r4, 0\n\
- bl npc_clear_ids_and_state\n\
- ldrh r3, [r5, 0x4]\n\
- adds r3, 0x7\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- ldrh r2, [r5, 0x6]\n\
- adds r2, 0x7\n\
- lsls r2, 16\n\
- lsrs r2, 16\n\
- ldrb r0, [r4]\n\
- movs r1, 0x1\n\
- orrs r0, r1\n\
- movs r1, 0x4\n\
- orrs r0, r1\n\
- strb r0, [r4]\n\
- ldrb r0, [r5, 0x1]\n\
- strb r0, [r4, 0x5]\n\
- ldrb r0, [r5, 0x9]\n\
- strb r0, [r4, 0x6]\n\
- ldrb r0, [r5]\n\
- strb r0, [r4, 0x8]\n\
- strb r6, [r4, 0x9]\n\
- strb r7, [r4, 0xA]\n\
- strh r3, [r4, 0xC]\n\
- strh r2, [r4, 0xE]\n\
- strh r3, [r4, 0x10]\n\
- strh r2, [r4, 0x12]\n\
- strh r3, [r4, 0x14]\n\
- strh r2, [r4, 0x16]\n\
- ldrb r0, [r5, 0x8]\n\
- movs r7, 0xF\n\
- adds r1, r7, 0\n\
- ands r1, r0\n\
- ldrb r2, [r4, 0xB]\n\
- movs r0, 0x10\n\
- negs r0, r0\n\
- mov r8, r0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r4, 0xB]\n\
- ldrb r1, [r5, 0x8]\n\
- lsls r1, 4\n\
- ands r0, r7\n\
- orrs r0, r1\n\
- strb r0, [r4, 0xB]\n\
- ldrb r1, [r5, 0xA]\n\
- lsls r1, 28\n\
- movs r0, 0xF\n\
- mov r9, r0\n\
- lsrs r1, 28\n\
- ldrb r2, [r4, 0x19]\n\
- mov r0, r8\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x19]\n\
- ldrb r1, [r5, 0xA]\n\
- lsrs r1, 4\n\
- lsls r1, 4\n\
- ands r0, r7\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x19]\n\
- ldrh r0, [r5, 0xC]\n\
- strb r0, [r4, 0x7]\n\
- ldrh r0, [r5, 0xE]\n\
- strb r0, [r4, 0x1D]\n\
- ldr r1, _0805ADD4 @ =gUnknown_0836DC09\n\
- ldrb r0, [r5, 0x9]\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- adds r0, r4, 0\n\
- adds r0, 0x20\n\
- strb r1, [r0]\n\
- ldrb r1, [r0]\n\
- adds r0, r4, 0\n\
- bl FieldObjectSetDirection\n\
- adds r0, r4, 0\n\
- bl FieldObjectHandleDynamicGraphicsId\n\
- ldr r1, _0805ADD8 @ =gUnknown_0836DBBC\n\
- ldrb r0, [r4, 0x6]\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- beq _0805ADBE\n\
- ldrb r2, [r4, 0x19]\n\
- adds r0, r7, 0\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _0805ADA6\n\
- lsls r0, r2, 28\n\
- lsrs r0, 28\n\
- adds r0, 0x1\n\
- mov r1, r9\n\
- ands r0, r1\n\
- mov r1, r8\n\
- ands r1, r2\n\
- orrs r1, r0\n\
- strb r1, [r4, 0x19]\n\
-_0805ADA6:\n\
- ldrb r2, [r4, 0x19]\n\
- movs r0, 0xF0\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- bne _0805ADBE\n\
- lsrs r1, r2, 4\n\
- adds r1, 0x1\n\
- lsls r1, 4\n\
- adds r0, r7, 0\n\
- ands r0, r2\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x19]\n\
-_0805ADBE:\n\
- mov r0, sp\n\
- ldrb r0, [r0]\n\
-_0805ADC2:\n\
- add sp, 0x4\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_0805ADD0: .4byte gMapObjects\n\
-_0805ADD4: .4byte gUnknown_0836DC09\n\
-_0805ADD8: .4byte gUnknown_0836DBBC\n\
- .syntax divided\n");
-}
-#endif
u8 sub_805ADDC(u8 localId)
{
@@ -2270,6 +2178,9 @@ void RemoveFieldObject(struct MapObject *mapObject)
{
mapObject->active = FALSE;
RemoveFieldObjectInternal(mapObject);
+#if DEBUG
+ gUnknown_Debug_03004BC0--;
+#endif
}
void RemoveFieldObjectByLocalIdAndMap(u8 localId, u8 mapNum, u8 mapGroup)
@@ -2332,6 +2243,9 @@ u8 sub_805AFCC(struct MapObjectTemplate *mapObjTemplate, struct SpriteTemplate *
spriteId = CreateSprite(sprTemplate, 0, 0, 0);
if (spriteId == 64)
{
+#if DEBUG
+ gUnknown_Debug_03004BC0--;
+#endif
gMapObjects[mapObjectId].active = FALSE;
return 16;
}
@@ -2460,7 +2374,7 @@ u8 AddPseudoFieldObject(u16 graphicsId, void (*callback)(struct Sprite *), s16 x
extern void sub_8064970(struct Sprite *);
extern void sub_8060470(s16 *, s16 *, s16, s16);
-extern void InitObjectPriorityByZCoord();
+void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z);
u8 sub_805B410(u8 graphicsId, u8 b, s16 x, s16 y, u8 elevation, u8 direction)
{
@@ -2578,11 +2492,19 @@ void sub_805B710(u16 a, u16 b)
{
u8 i;
+#if DEBUG
+ gUnknown_Debug_03004BC0 = 0;
+#endif
ClearPlayerAvatarInfo();
for (i = 0; i < 16; i++)
{
if (gMapObjects[i].active)
+ {
sub_805B75C(i, a, b);
+#if DEBUG
+ gUnknown_Debug_03004BC0++;
+#endif
+ }
}
sub_805AAB0();
}
@@ -3347,7 +3269,7 @@ u8 sub_805C904(struct MapObject *mapObject, struct Sprite *sprite)
}
extern u8 FieldObjectExecRegularAnim(struct MapObject *, struct Sprite *);
-extern void sub_8064820(struct Sprite *, s16);
+void sub_8064820(struct Sprite *, s16);
u8 sub_805C930(struct MapObject *mapObject, struct Sprite *sprite)
{
@@ -8353,3 +8275,1149 @@ void UpdateMapObjSpriteVisibility(struct MapObject *mapObject, struct Sprite *sp
sprite->invisible = 1;
}
}
+
+static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8);
+static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8);
+static void DoTracksGroundEffect_BikeTireTracks(
+struct MapObject *mapObj, struct Sprite *sprite, u8);
+void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite);
+u8 GetReflectionTypeByMetatileBehavior(u32 behavior);
+
+static void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags)
+{
+ FieldObjectUpdateMetatileBehaviors(mapObj);
+ GetGroundEffectFlags_Reflection(mapObj, flags);
+ GetGroundEffectFlags_TallGrassOnSpawn(mapObj, flags);
+ GetGroundEffectFlags_LongGrassOnSpawn(mapObj, flags);
+ GetGroundEffectFlags_SandPile(mapObj, flags);
+ GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
+ GetGroundEffectFlags_ShortGrass(mapObj, flags);
+ GetGroundEffectFlags_HotSprings(mapObj, flags);
+}
+
+static void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags)
+{
+ FieldObjectUpdateMetatileBehaviors(mapObj);
+ GetGroundEffectFlags_Reflection(mapObj, flags);
+ GetGroundEffectFlags_TallGrassOnBeginStep(mapObj, flags);
+ GetGroundEffectFlags_LongGrassOnBeginStep(mapObj, flags);
+ GetGroundEffectFlags_Tracks(mapObj, flags);
+ GetGroundEffectFlags_SandPile(mapObj, flags);
+ GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
+ GetGroundEffectFlags_Puddle(mapObj, flags);
+ GetGroundEffectFlags_ShortGrass(mapObj, flags);
+ GetGroundEffectFlags_HotSprings(mapObj, flags);
+}
+
+static void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags)
+{
+ FieldObjectUpdateMetatileBehaviors(mapObj);
+ GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
+ GetGroundEffectFlags_SandPile(mapObj, flags);
+ GetGroundEffectFlags_Puddle(mapObj, flags);
+ GetGroundEffectFlags_Ripple(mapObj, flags);
+ GetGroundEffectFlags_ShortGrass(mapObj, flags);
+ GetGroundEffectFlags_HotSprings(mapObj, flags);
+ GetGroundEffectFlags_Seaweed(mapObj, flags);
+ GetGroundEffectFlags_JumpLanding(mapObj, flags);
+}
+
+void FieldObjectUpdateMetatileBehaviors(struct MapObject *mapObj)
+{
+ mapObj->mapobj_unk_1F = MapGridGetMetatileBehaviorAt(mapObj->coords3.x, mapObj->coords3.y);
+ mapObj->mapobj_unk_1E = MapGridGetMetatileBehaviorAt(mapObj->coords2.x, mapObj->coords2.y);
+}
+
+void GetGroundEffectFlags_Reflection(struct MapObject *mapObj, u32 *flags)
+{
+ u32 reflectionFlags[2] = { 0x00000020, 0x00000010 };
+ u8 type = FieldObjectCheckForReflectiveSurface(mapObj);
+
+ if (type)
+ {
+ if (!mapObj->mapobj_bit_17)
+ {
+ mapObj->mapobj_bit_17 = 0;
+ mapObj->mapobj_bit_17 = 1;
+ *flags |= reflectionFlags[type - 1];
+ }
+ }
+ else
+ {
+ mapObj->mapobj_bit_17 = 0;
+ }
+}
+
+void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E))
+ *flags |= 0x1;
+}
+
+void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E))
+ *flags |= 0x2;
+}
+
+void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
+ *flags |= 0x4;
+}
+
+void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
+ *flags |= 0x8;
+}
+
+void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
+ {
+ *flags |= 0x100;
+ }
+ else if (MetatileBehavior_IsSandOrDeepSand(mapObj->mapobj_unk_1F)
+ || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F))
+ {
+ *flags |= 0x80;
+ }
+}
+
+void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
+ {
+ if (!mapObj->mapobj_bit_20)
+ {
+ mapObj->mapobj_bit_20 = 0;
+ mapObj->mapobj_bit_20 = 1;
+ *flags |= 0x800;
+ }
+ }
+ else
+ {
+ mapObj->mapobj_bit_20 = 0;
+ }
+}
+
+void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *flags)
+{
+ if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F))
+ || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F)))
+ {
+ if (!mapObj->mapobj_bit_19)
+ {
+ mapObj->mapobj_bit_19 = 0;
+ mapObj->mapobj_bit_19 = 1;
+ *flags |= 0x40;
+ }
+ }
+ else
+ {
+ mapObj->mapobj_bit_19 = 0;
+ }
+}
+
+void GetGroundEffectFlags_Puddle(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F))
+ {
+ *flags |= 0x400;
+ }
+}
+
+void GetGroundEffectFlags_Ripple(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_HasRipples(mapObj->mapobj_unk_1E))
+ *flags |= 0x200;
+}
+
+void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F))
+ {
+ if (!mapObj->mapobj_bit_18)
+ {
+ mapObj->mapobj_bit_18 = 0;
+ mapObj->mapobj_bit_18 = 1;
+ *flags |= 0x20000;
+ }
+ }
+ else
+ {
+ mapObj->mapobj_bit_18 = 0;
+ }
+}
+
+void GetGroundEffectFlags_HotSprings(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F))
+ {
+ if (!mapObj->mapobj_bit_21)
+ {
+ mapObj->mapobj_bit_21 = 0;
+ mapObj->mapobj_bit_21 = 1;
+ *flags |= 0x40000;
+ }
+ }
+ else
+ {
+ mapObj->mapobj_bit_21 = 0;
+ }
+}
+
+void GetGroundEffectFlags_Seaweed(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsSeaweed(mapObj->mapobj_unk_1E))
+ *flags |= 0x80000;
+}
+
+void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags)
+{
+ typedef bool8 (*MetatileFunc)(u8);
+
+ static const MetatileFunc metatileFuncs[] = {
+ MetatileBehavior_IsTallGrass,
+ MetatileBehavior_IsLongGrass,
+ MetatileBehavior_IsPuddle,
+ MetatileBehavior_IsSurfableWaterOrUnderwater,
+ MetatileBehavior_IsShallowFlowingWater,
+ MetatileBehavior_IsATile,
+ };
+
+ static const u32 jumpLandingFlags[] = {
+ 0x00001000, // Landing in tall grass
+ 0x00002000, // Landing in long grass
+ 0x00004000, // Landing on puddle
+ 0x00008000, // Landing on surfable water or underwater
+ 0x00004000, // Landing on shallow flowing water
+ 0x00010000, // Landing on any other type of ground
+ };
+
+ if (mapObj->mapobj_bit_5 && !mapObj->mapobj_bit_25)
+ {
+ u8 i;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (metatileFuncs[i](mapObj->mapobj_unk_1E))
+ {
+ *flags |= jumpLandingFlags[i];
+ return;
+ }
+ }
+ }
+}
+
+u8 FieldObjectCheckForReflectiveSurface(struct MapObject *mapObj)
+{
+ const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
+
+ // ceil div by tile width?
+ s16 width = (info->width + 8) >> 4;
+ s16 height = (info->height + 8) >> 4;
+ s16 i;
+ s16 j;
+ u8 result;
+ u8 b;
+ s16 one;
+
+#define RETURN_REFLECTION_TYPE_AT(x, y) \
+ b = MapGridGetMetatileBehaviorAt(x, y); \
+ result = GetReflectionTypeByMetatileBehavior(b); \
+ if (result != 0) \
+ return result;
+
+ for (i = 0, one = 1; i < height; i++)
+ {
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x, mapObj->coords2.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x, mapObj->coords3.y + one + i)
+ for (j = 1; j < width; j++)
+ {
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x + j, mapObj->coords2.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x - j, mapObj->coords2.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x + j, mapObj->coords3.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x - j, mapObj->coords3.y + one + i)
+ }
+ }
+ return 0;
+
+#undef RETURN_REFLECTION_TYPE_AT
+}
+
+u8 GetReflectionTypeByMetatileBehavior(u32 behavior)
+{
+ if (MetatileBehavior_IsIce(behavior))
+ return 1;
+ else if (MetatileBehavior_IsReflective(behavior))
+ return 2;
+ else
+ return 0;
+}
+
+u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
+{
+ static bool8 (*const unknown_08376040[])(u8) = {
+ MetatileBehavior_IsJumpSouth,
+ MetatileBehavior_IsJumpNorth,
+ MetatileBehavior_IsJumpWest,
+ MetatileBehavior_IsJumpEast,
+ };
+
+ u8 b;
+ u8 index = z;
+
+ if (index == 0)
+ return 0;
+ else if (index > 4)
+ index -= 4;
+
+ index--;
+ b = MapGridGetMetatileBehaviorAt(x, y);
+
+ if (unknown_08376040[index](b) == 1)
+ return index + 1;
+
+ return 0;
+}
+
+void FieldObjectSetSpriteOamTableForLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ if (mapObj->mapobj_bit_4)
+ return;
+
+ if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
+ return;
+
+ if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1F))
+ return;
+
+ sprite->subspriteTableNum = 4;
+
+ if (ZCoordToPriority(mapObj->elevation) == 1)
+ sprite->subspriteTableNum = 5;
+}
+
+bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y)
+{
+ u8 mapZ;
+
+ if (z == 0)
+ return FALSE;
+
+ mapZ = MapGridGetZCoordAt(x, y);
+
+ if (mapZ == 0 || mapZ == 0xF)
+ return FALSE;
+
+ if (mapZ != z)
+ return TRUE;
+
+ return FALSE;
+}
+
+static const u8 sUnknown_08376050[] = {
+ 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
+};
+
+// Each byte corresponds to a sprite priority for a field object.
+// This is directly the inverse of gFieldObjectPriorities_08376070.
+static const u8 sFieldObjectPriorities_08376060[] = {
+ 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
+};
+
+// Each byte corresponds to a sprite priority for a field object.
+// This is the inverse of gFieldObjectPriorities_08376060.
+// 1 = Above player sprite
+// 2 = Below player sprite
+static const u8 sFieldObjectPriorities_08376070[] = {
+ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
+};
+
+void FieldObjectUpdateZCoordAndPriority(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ if (mapObj->mapobj_bit_26)
+ return;
+
+ FieldObjectUpdateZCoord(mapObj);
+
+ sprite->subspriteTableNum = sFieldObjectPriorities_08376070[mapObj->elevation];
+ sprite->oam.priority = sFieldObjectPriorities_08376060[mapObj->elevation];
+}
+
+void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z)
+{
+ sprite->subspriteTableNum = sFieldObjectPriorities_08376070[z];
+ sprite->oam.priority = sFieldObjectPriorities_08376060[z];
+}
+
+u8 ZCoordToPriority(u8 z)
+{
+ return sFieldObjectPriorities_08376060[z];
+}
+
+void FieldObjectUpdateZCoord(struct MapObject *mapObj)
+{
+ u8 z = MapGridGetZCoordAt(mapObj->coords2.x, mapObj->coords2.y);
+ u8 z2 = MapGridGetZCoordAt(mapObj->coords3.x, mapObj->coords3.y);
+
+ if (z == 0xF || z2 == 0xF)
+ return;
+
+ mapObj->mapobj_unk_0B_0 = z;
+
+ if (z != 0 && z != 0xF)
+ mapObj->elevation = z;
+}
+
+void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
+{
+ s32 tmp = sprite->centerToCornerVecY;
+ u32 tmpa = *(u16 *)&sprite->pos1.y;
+ u32 tmpb = *(u16 *)&gSpriteCoordOffsetY;
+ s32 tmp2 = (tmpa - tmp) + tmpb;
+ u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
+ sprite->subpriority = tmp3 + sUnknown_08376050[a] + b;
+}
+
+void FieldObjectUpdateSubpriority(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ if (mapObj->mapobj_bit_26)
+ return;
+
+ SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
+}
+
+bool8 AreZCoordsCompatible(u8 a, u8 b)
+{
+ if (a == 0 || b == 0)
+ return TRUE;
+
+ if (a != b)
+ return FALSE;
+
+ return TRUE;
+}
+
+void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+ gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
+ gFieldEffectArguments[7] = 1;
+ FieldEffectStart(FLDEFF_TALL_GRASS);
+}
+
+void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+ gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
+ gFieldEffectArguments[7] = 0;
+ FieldEffectStart(FLDEFF_TALL_GRASS);
+}
+
+void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+ gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
+ gFieldEffectArguments[7] = 1;
+ FieldEffectStart(FLDEFF_LONG_GRASS);
+}
+
+void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+ gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
+ gFieldEffectArguments[7] = 0;
+ FieldEffectStart(FLDEFF_LONG_GRASS);
+}
+
+void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ SetUpReflection(mapObj, sprite, 0);
+}
+
+void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ SetUpReflection(mapObj, sprite, 1);
+}
+
+void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_FEET_IN_FLOWING_WATER, mapObj);
+}
+
+static void (*const gUnknown_08376080[])(struct MapObject *mapObj, struct Sprite *sprite, u8 a) = {
+ nullsub, DoTracksGroundEffect_Footprints, DoTracksGroundEffect_BikeTireTracks,
+};
+
+void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
+ gUnknown_08376080[info->tracks](mapObj, sprite, 0);
+}
+
+void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
+ gUnknown_08376080[info->tracks](mapObj, sprite, 1);
+}
+
+static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+{
+}
+
+static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+{
+ // First half-word is a Field Effect script id. (gFieldEffectScriptPointers)
+ u16 sandFootprints_FieldEffectData[2] = {
+ FLDEFF_SAND_FOOTPRINTS,
+ FLDEFF_DEEP_SAND_FOOTPRINTS
+ };
+
+ gFieldEffectArguments[0] = mapObj->coords3.x;
+ gFieldEffectArguments[1] = mapObj->coords3.y;
+ gFieldEffectArguments[2] = 149;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = mapObj->mapobj_unk_18;
+ FieldEffectStart(sandFootprints_FieldEffectData[a]);
+}
+
+static void DoTracksGroundEffect_BikeTireTracks(
+ struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+{
+ // Specifies which bike track shape to show next.
+ // For example, when the bike turns from up to right, it will show
+ // a track that curves to the right.
+ // Each 4-byte row corresponds to the initial direction of the bike, and
+ // each byte in that row is for the next direction of the bike in the order
+ // of down, up, left, right.
+ static const u8 bikeTireTracks_Transitions[4][4] = {
+ 1, 2, 7, 8,
+ 1, 2, 6, 5,
+ 5, 8, 3, 4,
+ 6, 7, 3, 4,
+ };
+
+ if (mapObj->coords2.x != mapObj->coords3.x || mapObj->coords2.y != mapObj->coords3.y)
+ {
+ gFieldEffectArguments[0] = mapObj->coords3.x;
+ gFieldEffectArguments[1] = mapObj->coords3.y;
+ gFieldEffectArguments[2] = 149;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] =
+ bikeTireTracks_Transitions[mapObj->mapobj_unk_20][mapObj->mapobj_unk_18 - 5];
+ FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS);
+ }
+}
+
+void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ DoRippleFieldEffect(mapObj, sprite);
+}
+
+void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_SPLASH, mapObj);
+}
+
+void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_SAND_PILE, mapObj);
+}
+
+void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 spriteId;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ FieldEffectStart(FLDEFF_JUMP_TALL_GRASS);
+
+ spriteId = sub_8126FF0(
+ mapObj->localId, mapObj->mapNum, mapObj->mapGroup, mapObj->coords2.x, mapObj->coords2.y);
+
+ if (spriteId == MAX_SPRITES)
+ GroundEffect_SpawnOnTallGrass(mapObj, sprite);
+}
+
+void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ FieldEffectStart(FLDEFF_JUMP_LONG_GRASS);
+}
+
+void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH);
+}
+
+void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH);
+}
+
+void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_DUST);
+}
+
+void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_SHORT_GRASS, mapObj);
+}
+
+void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_HOT_SPRINGS_WATER, mapObj);
+}
+
+void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ FieldEffectStart(FLDEFF_BUBBLES);
+}
+
+static void (*const gUnknown_083760A0[])(struct MapObject *mapObj, struct Sprite *sprite) = {
+ GroundEffect_SpawnOnTallGrass,
+ sub_8063E94,
+ sub_8063EE0,
+ sub_8063F2C,
+ GroundEffect_WaterReflection,
+ GroundEffect_IceReflection,
+ GroundEffect_FlowingWater,
+ sub_8063FA0,
+ sub_8063FCC,
+ GroundEffect_Ripple,
+ GroundEffect_StepOnPuddle,
+ GroundEffect_SandPile,
+ GroundEffect_JumpOnTallGrass,
+ GroundEffect_JumpOnLongGrass,
+ GroundEffect_JumpOnShallowWater,
+ GroundEffect_JumpOnWater,
+ GroundEffect_JumpLandingDust,
+ GroundEffect_ShortGrass,
+ GroundEffect_HotSprings,
+ GroundEffect_Seaweed
+};
+
+void sub_8064218(struct MapObject *mapObj, struct Sprite *sprite, u32 flags)
+{
+ u8 i;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_083760A0); i++, flags >>= 1)
+ if (flags & 1)
+ gUnknown_083760A0[i](mapObj, sprite);
+}
+
+void filters_out_some_ground_effects(struct MapObject *mapObj, u32 *flags)
+{
+ if (mapObj->mapobj_bit_4)
+ {
+ mapObj->mapobj_bit_18 = 0;
+ mapObj->mapobj_bit_20 = 0;
+ mapObj->mapobj_bit_19 = 0;
+ mapObj->mapobj_bit_21 = 0;
+ *flags &= 0xFFF9F7BD;
+ }
+}
+
+void FilterOutStepOnPuddleGroundEffectIfJumping(struct MapObject *mapObj, u32 *flags)
+{
+ if (mapObj->mapobj_bit_5)
+ *flags &= 0xFFFFFBFF;
+}
+
+void DoGroundEffects_OnSpawn(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (mapObj->mapobj_bit_2)
+ {
+ flags = 0;
+ FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
+ GetAllGroundEffectFlags_OnSpawn(mapObj, &flags);
+ FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
+ sub_8064218(mapObj, sprite, flags);
+ mapObj->mapobj_bit_2 = 0;
+ mapObj->mapobj_bit_4 = 0;
+ }
+}
+
+void DoGroundEffects_OnBeginStep(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (mapObj->mapobj_bit_2)
+ {
+ flags = 0;
+ FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
+ GetAllGroundEffectFlags_OnBeginStep(mapObj, &flags);
+ FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
+ filters_out_some_ground_effects(mapObj, &flags);
+ sub_8064218(mapObj, sprite, flags);
+ mapObj->mapobj_bit_2 = 0;
+ mapObj->mapobj_bit_4 = 0;
+ }
+}
+
+void DoGroundEffects_OnFinishStep(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (mapObj->mapobj_bit_3)
+ {
+ flags = 0;
+ FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
+ GetAllGroundEffectFlags_OnFinishStep(mapObj, &flags);
+ FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
+ FilterOutStepOnPuddleGroundEffectIfJumping(mapObj, &flags);
+ sub_8064218(mapObj, sprite, flags);
+ mapObj->mapobj_bit_3 = 0;
+ mapObj->mapobj_bit_5 = 0;
+ }
+}
+
+typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
+
+void Step1(struct Sprite *sprite, u8 dir);
+void Step2(struct Sprite *sprite, u8 dir);
+void Step3(struct Sprite *sprite, u8 dir);
+void Step4(struct Sprite *sprite, u8 dir);
+void Step8(struct Sprite *sprite, u8 dir);
+
+const SpriteStepFunc Unknown_83760F0[] = {
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1,
+ Step1
+};
+
+const SpriteStepFunc Unknown_8376130[] = {
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2,
+ Step2
+};
+
+const SpriteStepFunc Unknown_8376150[] = {
+ Step2,
+ Step3,
+ Step3,
+ Step2,
+ Step3,
+ Step3
+};
+
+const SpriteStepFunc Unknown_8376168[] = {
+ Step4,
+ Step4,
+ Step4,
+ Step4
+};
+
+const SpriteStepFunc Unknown_8376178[] = {
+ Step8,
+ Step8
+};
+
+const SpriteStepFunc *const gUnknown_08376180[] = {
+ Unknown_83760F0,
+ Unknown_8376130,
+ Unknown_8376150,
+ Unknown_8376168,
+ Unknown_8376178
+};
+
+const s16 gUnknown_08376194[] = {
+ 16, 8, 6, 4, 2
+};
+
+const s8 Unknown_837619E[] = {
+ -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
+};
+
+const s8 Unknown_83761AE[] = {
+ 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
+};
+
+const s8 Unknown_83761BE[] = {
+ -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
+};
+
+const s8 *const gUnknown_083761D0[] = {
+ Unknown_837619E,
+ Unknown_83761AE,
+ Unknown_83761BE
+};
+
+bool8 FreezeMapObject(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_bit_6 || mapObject->mapobj_bit_8)
+ {
+ return TRUE;
+ }
+ else
+ {
+ mapObject->mapobj_bit_8 = 1;
+ mapObject->mapobj_bit_23 = gSprites[mapObject->spriteId].animPaused;
+ mapObject->mapobj_bit_24 = gSprites[mapObject->spriteId].affineAnimPaused;
+ gSprites[mapObject->spriteId].animPaused = 1;
+ gSprites[mapObject->spriteId].affineAnimPaused = 1;
+ return FALSE;
+ }
+}
+
+void FreezeMapObjects(void)
+{
+ u8 i;
+ for (i = 0; i < 16; i++)
+ if (gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
+ FreezeMapObject(&gMapObjects[i]);
+}
+
+void FreezeMapObjectsExceptOne(u8 a1)
+{
+ u8 i;
+ for (i = 0; i < 16; i++)
+ if (i != a1 && gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
+ FreezeMapObject(&gMapObjects[i]);
+}
+
+void UnfreezeMapObject(struct MapObject *mapObject)
+{
+ if (mapObject->active && mapObject->mapobj_bit_8)
+ {
+ mapObject->mapobj_bit_8 = 0;
+ gSprites[mapObject->spriteId].animPaused = mapObject->mapobj_bit_23;
+ gSprites[mapObject->spriteId].affineAnimPaused = mapObject->mapobj_bit_24;
+ }
+}
+
+void UnfreezeMapObjects(void)
+{
+ u8 i;
+ for (i = 0; i < 16; i++)
+ if (gMapObjects[i].active)
+ UnfreezeMapObject(&gMapObjects[i]);
+}
+
+void Step1(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += gDirectionToVector[dir].x;
+ sprite->pos1.y += gDirectionToVector[dir].y;
+}
+
+void Step2(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 2 * (u16) gDirectionToVector[dir].x;
+ sprite->pos1.y += 2 * (u16) gDirectionToVector[dir].y;
+}
+
+void Step3(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 2 * (u16) gDirectionToVector[dir].x + (u16) gDirectionToVector[dir].x;
+ sprite->pos1.y += 2 * (u16) gDirectionToVector[dir].y + (u16) gDirectionToVector[dir].y;
+}
+
+void Step4(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 4 * (u16) gDirectionToVector[dir].x;
+ sprite->pos1.y += 4 * (u16) gDirectionToVector[dir].y;
+}
+
+void Step8(struct Sprite *sprite, u8 dir)
+{
+ sprite->pos1.x += 8 * (u16) gDirectionToVector[dir].x;
+ sprite->pos1.y += 8 * (u16) gDirectionToVector[dir].y;
+}
+
+void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3)
+{
+ sprite->data[3] = a2;
+ sprite->data[4] = a3;
+ sprite->data[5] = 0;
+}
+
+bool8 obj_npc_ministep(struct Sprite *sprite)
+{
+ if (sprite->data[5] >= gUnknown_08376194[sprite->data[4]])
+ return FALSE;
+
+ gUnknown_08376180[sprite->data[4]][sprite->data[5]](sprite, sprite->data[3]);
+
+ sprite->data[5]++;
+
+ if (sprite->data[5] < gUnknown_08376194[sprite->data[4]])
+ return FALSE;
+
+ return TRUE;
+}
+
+void sub_806467C(struct Sprite *sprite, u8 a2)
+{
+ sprite->data[3] = a2;
+ sprite->data[4] = 0;
+ sprite->data[5] = 0;
+}
+
+bool8 sub_806468C(struct Sprite *sprite)
+{
+ if (!(sprite->data[4] & 1))
+ {
+ Step1(sprite, sprite->data[3]);
+ sprite->data[5]++;
+ }
+
+ sprite->data[4]++;
+
+ if (sprite->data[5] > 15)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+s16 sub_80646C8(s16 a1, u8 a2)
+{
+ return gUnknown_083761D0[a2][a1];
+}
+
+void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
+{
+ sprite->data[3] = a2;
+ sprite->data[4] = a3;
+ sprite->data[5] = a4;
+ sprite->data[6] = 0;
+}
+
+u8 sub_8064704(struct Sprite *sprite)
+{
+ s16 v5[3] = {0x10, 0x10, 0x20};
+ u8 v6[3] = {0, 0, 1};
+ u8 v2 = 0;
+
+ if (sprite->data[4])
+ Step1(sprite, sprite->data[3]);
+
+ sprite->pos2.y = sub_80646C8(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+
+ sprite->data[6]++;
+
+ if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
+ v2 = 1;
+
+ if (sprite->data[6] >= v5[sprite->data[4]])
+ {
+ sprite->pos2.y = 0;
+ v2 = -1;
+ }
+
+ return v2;
+}
+
+u8 sub_806478C(struct Sprite *sprite)
+{
+ s16 v5[3] = {0x20, 0x20, 0x40};
+ u8 v6[3] = {1, 1, 2};
+ u8 v2 = 0;
+
+ if (sprite->data[4] && !(sprite->data[6] & 1))
+ Step1(sprite, sprite->data[3]);
+
+ sprite->pos2.y = sub_80646C8(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
+
+ sprite->data[6]++;
+
+ if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
+ v2 = 1;
+
+ if (sprite->data[6] >= v5[sprite->data[4]])
+ {
+ sprite->pos2.y = 0;
+ v2 = -1;
+ }
+
+ return v2;
+}
+
+void sub_8064820(struct Sprite *sprite, s16 a2)
+{
+ sprite->data[3] = a2;
+}
+
+bool8 sub_8064824(struct Sprite *sprite)
+{
+ sprite->data[3]--;
+
+ if (sprite->data[3] == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3)
+{
+ sprite->animNum = a2;
+ sprite->animPaused = 0 ;
+ SeekSpriteAnim(sprite, a3);
+}
+
+bool8 sub_8064864(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_806487C(struct Sprite *sprite, bool8 invisible)
+{
+ u16 x, y;
+ s16 x2, y2;
+
+ sprite->invisible = invisible;
+
+ if (sprite->coordOffsetEnabled)
+ {
+ x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
+ y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
+ }
+ else
+ {
+ x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
+ y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
+ }
+
+ x2 = x - (sprite->centerToCornerVecX >> 1);
+ y2 = y - (sprite->centerToCornerVecY >> 1);
+
+ if ((s16)x > 255 || x2 < -16)
+ sprite->invisible = 1;
+ if ((s16)y > 175 || y2 < -16)
+ sprite->invisible = 1;
+}
+
+void sub_8064970(struct Sprite *sprite)
+{
+ SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
+ sub_806487C(sprite, 0);
+}
+
+void sub_8064990(u8 a1, u8 dir)
+{
+ u8 i;
+ for (i = 0; i < MAX_SPRITES; i++)
+ {
+ struct Sprite *sprite = &gSprites[i];
+ if (sprite->inUse && sprite->callback == sub_8064970 && (u8)sprite->data[0] == a1)
+ {
+ u8 animNum = FieldObjectDirectionToImageAnimId(dir);
+ StartSpriteAnim(sprite, animNum);
+ break;
+ }
+ }
+}
+
+u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject)
+{
+ FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
+ return FieldEffectStart(fieldEffectId);
+}
+
+void DoShadowFieldEffect(struct MapObject *mapObject)
+{
+ if (!mapObject->mapobj_bit_22)
+ {
+ mapObject->mapobj_bit_22 = 1;
+ oe_exec_and_other_stuff(FLDEFF_SHADOW, mapObject);
+ }
+}
+
+void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ gFieldEffectArguments[0] = sprite->pos1.x;
+ gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
+ gFieldEffectArguments[2] = 151;
+ gFieldEffectArguments[3] = 3;
+ FieldEffectStart(FLDEFF_RIPPLE);
+}
diff --git a/src/scene/evolution_graphics.c b/src/evolution_graphics.c
index b9ef5b402..b9ef5b402 100644
--- a/src/scene/evolution_graphics.c
+++ b/src/evolution_graphics.c
diff --git a/src/scene/evolution_scene.c b/src/evolution_scene.c
index 4d9c8be02..4d9c8be02 100644
--- a/src/scene/evolution_scene.c
+++ b/src/evolution_scene.c
diff --git a/src/field/field_ground_effect.c b/src/field/field_ground_effect.c
deleted file mode 100644
index 25b678ff9..000000000
--- a/src/field/field_ground_effect.c
+++ /dev/null
@@ -1,772 +0,0 @@
-#include "global.h"
-#include "field_ground_effect.h"
-#include "field_effect.h"
-#include "field_effect_helpers.h"
-#include "field_map_obj_helpers.h"
-#include "fieldmap.h"
-#include "metatile_behavior.h"
-
-static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8);
-static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8);
-static void DoTracksGroundEffect_BikeTireTracks(
- struct MapObject *mapObj, struct Sprite *sprite, u8);
-void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite);
-void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite);
-void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite);
-void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite);
-void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite);
-void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite);
-void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite);
-u8 GetReflectionTypeByMetatileBehavior(u32 behavior);
-
-static void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags)
-{
- FieldObjectUpdateMetatileBehaviors(mapObj);
- GetGroundEffectFlags_Reflection(mapObj, flags);
- GetGroundEffectFlags_TallGrassOnSpawn(mapObj, flags);
- GetGroundEffectFlags_LongGrassOnSpawn(mapObj, flags);
- GetGroundEffectFlags_SandPile(mapObj, flags);
- GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
- GetGroundEffectFlags_ShortGrass(mapObj, flags);
- GetGroundEffectFlags_HotSprings(mapObj, flags);
-}
-
-static void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags)
-{
- FieldObjectUpdateMetatileBehaviors(mapObj);
- GetGroundEffectFlags_Reflection(mapObj, flags);
- GetGroundEffectFlags_TallGrassOnBeginStep(mapObj, flags);
- GetGroundEffectFlags_LongGrassOnBeginStep(mapObj, flags);
- GetGroundEffectFlags_Tracks(mapObj, flags);
- GetGroundEffectFlags_SandPile(mapObj, flags);
- GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
- GetGroundEffectFlags_Puddle(mapObj, flags);
- GetGroundEffectFlags_ShortGrass(mapObj, flags);
- GetGroundEffectFlags_HotSprings(mapObj, flags);
-}
-
-static void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags)
-{
- FieldObjectUpdateMetatileBehaviors(mapObj);
- GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
- GetGroundEffectFlags_SandPile(mapObj, flags);
- GetGroundEffectFlags_Puddle(mapObj, flags);
- GetGroundEffectFlags_Ripple(mapObj, flags);
- GetGroundEffectFlags_ShortGrass(mapObj, flags);
- GetGroundEffectFlags_HotSprings(mapObj, flags);
- GetGroundEffectFlags_Seaweed(mapObj, flags);
- GetGroundEffectFlags_JumpLanding(mapObj, flags);
-}
-
-void FieldObjectUpdateMetatileBehaviors(struct MapObject *mapObj)
-{
- mapObj->mapobj_unk_1F = MapGridGetMetatileBehaviorAt(mapObj->coords3.x, mapObj->coords3.y);
- mapObj->mapobj_unk_1E = MapGridGetMetatileBehaviorAt(mapObj->coords2.x, mapObj->coords2.y);
-}
-
-void GetGroundEffectFlags_Reflection(struct MapObject *mapObj, u32 *flags)
-{
- u32 reflectionFlags[2] = { 0x00000020, 0x00000010 };
- u8 type = FieldObjectCheckForReflectiveSurface(mapObj);
-
- if (type)
- {
- if (!mapObj->mapobj_bit_17)
- {
- mapObj->mapobj_bit_17 = 0;
- mapObj->mapobj_bit_17 = 1;
- *flags |= reflectionFlags[type - 1];
- }
- }
- else
- {
- mapObj->mapobj_bit_17 = 0;
- }
-}
-
-void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x1;
-}
-
-void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x2;
-}
-
-void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x4;
-}
-
-void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x8;
-}
-
-void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
- {
- *flags |= 0x100;
- }
- else if (MetatileBehavior_IsSandOrDeepSand(mapObj->mapobj_unk_1F)
- || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F))
- {
- *flags |= 0x80;
- }
-}
-
-void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
- {
- if (!mapObj->mapobj_bit_20)
- {
- mapObj->mapobj_bit_20 = 0;
- mapObj->mapobj_bit_20 = 1;
- *flags |= 0x800;
- }
- }
- else
- {
- mapObj->mapobj_bit_20 = 0;
- }
-}
-
-void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *flags)
-{
- if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F))
- || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F)))
- {
- if (!mapObj->mapobj_bit_19)
- {
- mapObj->mapobj_bit_19 = 0;
- mapObj->mapobj_bit_19 = 1;
- *flags |= 0x40;
- }
- }
- else
- {
- mapObj->mapobj_bit_19 = 0;
- }
-}
-
-void GetGroundEffectFlags_Puddle(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F))
- {
- *flags |= 0x400;
- }
-}
-
-void GetGroundEffectFlags_Ripple(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_HasRipples(mapObj->mapobj_unk_1E))
- *flags |= 0x200;
-}
-
-void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F))
- {
- if (!mapObj->mapobj_bit_18)
- {
- mapObj->mapobj_bit_18 = 0;
- mapObj->mapobj_bit_18 = 1;
- *flags |= 0x20000;
- }
- }
- else
- {
- mapObj->mapobj_bit_18 = 0;
- }
-}
-
-void GetGroundEffectFlags_HotSprings(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F))
- {
- if (!mapObj->mapobj_bit_21)
- {
- mapObj->mapobj_bit_21 = 0;
- mapObj->mapobj_bit_21 = 1;
- *flags |= 0x40000;
- }
- }
- else
- {
- mapObj->mapobj_bit_21 = 0;
- }
-}
-
-void GetGroundEffectFlags_Seaweed(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsSeaweed(mapObj->mapobj_unk_1E))
- *flags |= 0x80000;
-}
-
-void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags)
-{
- typedef bool8 (*MetatileFunc)(u8);
-
- static const MetatileFunc metatileFuncs[] = {
- MetatileBehavior_IsTallGrass,
- MetatileBehavior_IsLongGrass,
- MetatileBehavior_IsPuddle,
- MetatileBehavior_IsSurfableWaterOrUnderwater,
- MetatileBehavior_IsShallowFlowingWater,
- MetatileBehavior_IsATile,
- };
-
- static const u32 jumpLandingFlags[] = {
- 0x00001000, // Landing in tall grass
- 0x00002000, // Landing in long grass
- 0x00004000, // Landing on puddle
- 0x00008000, // Landing on surfable water or underwater
- 0x00004000, // Landing on shallow flowing water
- 0x00010000, // Landing on any other type of ground
- };
-
- if (mapObj->mapobj_bit_5 && !mapObj->mapobj_bit_25)
- {
- u8 i;
-
- for (i = 0; i < 6; i++)
- {
- if (metatileFuncs[i](mapObj->mapobj_unk_1E))
- {
- *flags |= jumpLandingFlags[i];
- return;
- }
- }
- }
-}
-
-u8 FieldObjectCheckForReflectiveSurface(struct MapObject *mapObj)
-{
- const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
-
- // ceil div by tile width?
- s16 width = (info->width + 8) >> 4;
- s16 height = (info->height + 8) >> 4;
- s16 i;
- s16 j;
- u8 result;
- u8 b;
- s16 one;
-
-#define RETURN_REFLECTION_TYPE_AT(x, y) \
- b = MapGridGetMetatileBehaviorAt(x, y); \
- result = GetReflectionTypeByMetatileBehavior(b); \
- if (result != 0) \
- return result;
-
- for (i = 0, one = 1; i < height; i++)
- {
- RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x, mapObj->coords2.y + one + i)
- RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x, mapObj->coords3.y + one + i)
- for (j = 1; j < width; j++)
- {
- RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x + j, mapObj->coords2.y + one + i)
- RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x - j, mapObj->coords2.y + one + i)
- RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x + j, mapObj->coords3.y + one + i)
- RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x - j, mapObj->coords3.y + one + i)
- }
- }
- return 0;
-
-#undef RETURN_REFLECTION_TYPE_AT
-}
-
-u8 GetReflectionTypeByMetatileBehavior(u32 behavior)
-{
- if (MetatileBehavior_IsIce(behavior))
- return 1;
- else if (MetatileBehavior_IsReflective(behavior))
- return 2;
- else
- return 0;
-}
-
-u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
-{
- static bool8 (*const unknown_08376040[])(u8) = {
- MetatileBehavior_IsJumpSouth,
- MetatileBehavior_IsJumpNorth,
- MetatileBehavior_IsJumpWest,
- MetatileBehavior_IsJumpEast,
- };
-
- u8 b;
- u8 index = z;
-
- if (index == 0)
- return 0;
- else if (index > 4)
- index -= 4;
-
- index--;
- b = MapGridGetMetatileBehaviorAt(x, y);
-
- if (unknown_08376040[index](b) == 1)
- return index + 1;
-
- return 0;
-}
-
-void FieldObjectSetSpriteOamTableForLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
-{
- if (mapObj->mapobj_bit_4)
- return;
-
- if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
- return;
-
- if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1F))
- return;
-
- sprite->subspriteTableNum = 4;
-
- if (ZCoordToPriority(mapObj->elevation) == 1)
- sprite->subspriteTableNum = 5;
-}
-
-bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y)
-{
- u8 mapZ;
-
- if (z == 0)
- return FALSE;
-
- mapZ = MapGridGetZCoordAt(x, y);
-
- if (mapZ == 0 || mapZ == 0xF)
- return FALSE;
-
- if (mapZ != z)
- return TRUE;
-
- return FALSE;
-}
-
-static const u8 sUnknown_08376050[] = {
- 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
-};
-
-// Each byte corresponds to a sprite priority for a field object.
-// This is directly the inverse of gFieldObjectPriorities_08376070.
-static const u8 sFieldObjectPriorities_08376060[] = {
- 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
-};
-
-// Each byte corresponds to a sprite priority for a field object.
-// This is the inverse of gFieldObjectPriorities_08376060.
-// 1 = Above player sprite
-// 2 = Below player sprite
-static const u8 sFieldObjectPriorities_08376070[] = {
- 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
-};
-
-void FieldObjectUpdateZCoordAndPriority(struct MapObject *mapObj, struct Sprite *sprite)
-{
- if (mapObj->mapobj_bit_26)
- return;
-
- FieldObjectUpdateZCoord(mapObj);
-
- sprite->subspriteTableNum = sFieldObjectPriorities_08376070[mapObj->elevation];
- sprite->oam.priority = sFieldObjectPriorities_08376060[mapObj->elevation];
-}
-
-void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z)
-{
- sprite->subspriteTableNum = sFieldObjectPriorities_08376070[z];
- sprite->oam.priority = sFieldObjectPriorities_08376060[z];
-}
-
-u8 ZCoordToPriority(u8 z)
-{
- return sFieldObjectPriorities_08376060[z];
-}
-
-void FieldObjectUpdateZCoord(struct MapObject *mapObj)
-{
- u8 z = MapGridGetZCoordAt(mapObj->coords2.x, mapObj->coords2.y);
- u8 z2 = MapGridGetZCoordAt(mapObj->coords3.x, mapObj->coords3.y);
-
- if (z == 0xF || z2 == 0xF)
- return;
-
- mapObj->mapobj_unk_0B_0 = z;
-
- if (z != 0 && z != 0xF)
- mapObj->elevation = z;
-}
-
-void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
-{
- s32 tmp = sprite->centerToCornerVecY;
- u32 tmpa = *(u16 *)&sprite->pos1.y;
- u32 tmpb = *(u16 *)&gSpriteCoordOffsetY;
- s32 tmp2 = (tmpa - tmp) + tmpb;
- u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
- sprite->subpriority = tmp3 + sUnknown_08376050[a] + b;
-}
-
-void FieldObjectUpdateSubpriority(struct MapObject *mapObj, struct Sprite *sprite)
-{
- if (mapObj->mapobj_bit_26)
- return;
-
- SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
-}
-
-bool8 AreZCoordsCompatible(u8 a, u8 b)
-{
- if (a == 0 || b == 0)
- return TRUE;
-
- if (a != b)
- return FALSE;
-
- return TRUE;
-}
-
-void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite)
-{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
- gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum;
- gFieldEffectArguments[5] = mapObj->mapGroup;
- gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
- gFieldEffectArguments[7] = 1;
- FieldEffectStart(FLDEFF_TALL_GRASS);
-}
-
-void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite)
-{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
- gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum;
- gFieldEffectArguments[5] = mapObj->mapGroup;
- gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
- gFieldEffectArguments[7] = 0;
- FieldEffectStart(FLDEFF_TALL_GRASS);
-}
-
-void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite)
-{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
- gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] = mapObj->localId << 8 | mapObj->mapNum;
- gFieldEffectArguments[5] = mapObj->mapGroup;
- gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
- gFieldEffectArguments[7] = 1;
- FieldEffectStart(FLDEFF_LONG_GRASS);
-}
-
-void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite)
-{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
- gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
- gFieldEffectArguments[5] = mapObj->mapGroup;
- gFieldEffectArguments[6] = (u8)gSaveBlock1.location.mapNum << 8 | (u8)gSaveBlock1.location.mapGroup;
- gFieldEffectArguments[7] = 0;
- FieldEffectStart(FLDEFF_LONG_GRASS);
-}
-
-void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite)
-{
- SetUpReflection(mapObj, sprite, 0);
-}
-
-void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite)
-{
- SetUpReflection(mapObj, sprite, 1);
-}
-
-void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite)
-{
- oe_exec_and_other_stuff(FLDEFF_FEET_IN_FLOWING_WATER, mapObj);
-}
-
-static void (*const gUnknown_08376080[])(struct MapObject *mapObj, struct Sprite *sprite, u8 a) = {
- nullsub, DoTracksGroundEffect_Footprints, DoTracksGroundEffect_BikeTireTracks,
-};
-
-void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite)
-{
- const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
- gUnknown_08376080[info->tracks](mapObj, sprite, 0);
-}
-
-void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite)
-{
- const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
- gUnknown_08376080[info->tracks](mapObj, sprite, 1);
-}
-
-static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8 a)
-{
-}
-
-static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8 a)
-{
- // First half-word is a Field Effect script id. (gFieldEffectScriptPointers)
- u16 sandFootprints_FieldEffectData[2] = {
- FLDEFF_SAND_FOOTPRINTS,
- FLDEFF_DEEP_SAND_FOOTPRINTS
- };
-
- gFieldEffectArguments[0] = mapObj->coords3.x;
- gFieldEffectArguments[1] = mapObj->coords3.y;
- gFieldEffectArguments[2] = 149;
- gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] = mapObj->mapobj_unk_18;
- FieldEffectStart(sandFootprints_FieldEffectData[a]);
-}
-
-static void DoTracksGroundEffect_BikeTireTracks(
- struct MapObject *mapObj, struct Sprite *sprite, u8 a)
-{
- // Specifies which bike track shape to show next.
- // For example, when the bike turns from up to right, it will show
- // a track that curves to the right.
- // Each 4-byte row corresponds to the initial direction of the bike, and
- // each byte in that row is for the next direction of the bike in the order
- // of down, up, left, right.
- static const u8 bikeTireTracks_Transitions[4][4] = {
- 1, 2, 7, 8,
- 1, 2, 6, 5,
- 5, 8, 3, 4,
- 6, 7, 3, 4,
- };
-
- if (mapObj->coords2.x != mapObj->coords3.x || mapObj->coords2.y != mapObj->coords3.y)
- {
- gFieldEffectArguments[0] = mapObj->coords3.x;
- gFieldEffectArguments[1] = mapObj->coords3.y;
- gFieldEffectArguments[2] = 149;
- gFieldEffectArguments[3] = 2;
- gFieldEffectArguments[4] =
- bikeTireTracks_Transitions[mapObj->mapobj_unk_20][mapObj->mapobj_unk_18 - 5];
- FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS);
- }
-}
-
-void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite)
-{
- DoRippleFieldEffect(mapObj, sprite);
-}
-
-void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite)
-{
- oe_exec_and_other_stuff(FLDEFF_SPLASH, mapObj);
-}
-
-void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite)
-{
- oe_exec_and_other_stuff(FLDEFF_SAND_PILE, mapObj);
-}
-
-void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite)
-{
- u8 spriteId;
-
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
- gFieldEffectArguments[3] = 2;
- FieldEffectStart(FLDEFF_JUMP_TALL_GRASS);
-
- spriteId = sub_8126FF0(
- mapObj->localId, mapObj->mapNum, mapObj->mapGroup, mapObj->coords2.x, mapObj->coords2.y);
-
- if (spriteId == MAX_SPRITES)
- GroundEffect_SpawnOnTallGrass(mapObj, sprite);
-}
-
-void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
-{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
- gFieldEffectArguments[3] = 2;
- FieldEffectStart(FLDEFF_JUMP_LONG_GRASS);
-}
-
-void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite)
-{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
- gFieldEffectArguments[3] = sprite->oam.priority;
- FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH);
-}
-
-void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite)
-{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
- gFieldEffectArguments[3] = sprite->oam.priority;
- FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH);
-}
-
-void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite)
-{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- gFieldEffectArguments[2] = mapObj->elevation;
- gFieldEffectArguments[3] = sprite->oam.priority;
- FieldEffectStart(FLDEFF_DUST);
-}
-
-void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite)
-{
- oe_exec_and_other_stuff(FLDEFF_SHORT_GRASS, mapObj);
-}
-
-void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite)
-{
- oe_exec_and_other_stuff(FLDEFF_HOT_SPRINGS_WATER, mapObj);
-}
-
-void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite)
-{
- gFieldEffectArguments[0] = mapObj->coords2.x;
- gFieldEffectArguments[1] = mapObj->coords2.y;
- FieldEffectStart(FLDEFF_BUBBLES);
-}
-
-static void (*const gUnknown_083760A0[])(struct MapObject *mapObj, struct Sprite *sprite) = {
- GroundEffect_SpawnOnTallGrass,
- sub_8063E94,
- sub_8063EE0,
- sub_8063F2C,
- GroundEffect_WaterReflection,
- GroundEffect_IceReflection,
- GroundEffect_FlowingWater,
- sub_8063FA0,
- sub_8063FCC,
- GroundEffect_Ripple,
- GroundEffect_StepOnPuddle,
- GroundEffect_SandPile,
- GroundEffect_JumpOnTallGrass,
- GroundEffect_JumpOnLongGrass,
- GroundEffect_JumpOnShallowWater,
- GroundEffect_JumpOnWater,
- GroundEffect_JumpLandingDust,
- GroundEffect_ShortGrass,
- GroundEffect_HotSprings,
- GroundEffect_Seaweed
-};
-
-void sub_8064218(struct MapObject *mapObj, struct Sprite *sprite, u32 flags)
-{
- u8 i;
- for (i = 0; i < ARRAY_COUNT(gUnknown_083760A0); i++, flags >>= 1)
- if (flags & 1)
- gUnknown_083760A0[i](mapObj, sprite);
-}
-
-void filters_out_some_ground_effects(struct MapObject *mapObj, u32 *flags)
-{
- if (mapObj->mapobj_bit_4)
- {
- mapObj->mapobj_bit_18 = 0;
- mapObj->mapobj_bit_20 = 0;
- mapObj->mapobj_bit_19 = 0;
- mapObj->mapobj_bit_21 = 0;
- *flags &= 0xFFF9F7BD;
- }
-}
-
-void FilterOutStepOnPuddleGroundEffectIfJumping(struct MapObject *mapObj, u32 *flags)
-{
- if (mapObj->mapobj_bit_5)
- *flags &= 0xFFFFFBFF;
-}
-
-void DoGroundEffects_OnSpawn(struct MapObject *mapObj, struct Sprite *sprite)
-{
- u32 flags;
-
- if (mapObj->mapobj_bit_2)
- {
- flags = 0;
- FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
- GetAllGroundEffectFlags_OnSpawn(mapObj, &flags);
- FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
- sub_8064218(mapObj, sprite, flags);
- mapObj->mapobj_bit_2 = 0;
- mapObj->mapobj_bit_4 = 0;
- }
-}
-
-void DoGroundEffects_OnBeginStep(struct MapObject *mapObj, struct Sprite *sprite)
-{
- u32 flags;
-
- if (mapObj->mapobj_bit_2)
- {
- flags = 0;
- FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
- GetAllGroundEffectFlags_OnBeginStep(mapObj, &flags);
- FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
- filters_out_some_ground_effects(mapObj, &flags);
- sub_8064218(mapObj, sprite, flags);
- mapObj->mapobj_bit_2 = 0;
- mapObj->mapobj_bit_4 = 0;
- }
-}
-
-void DoGroundEffects_OnFinishStep(struct MapObject *mapObj, struct Sprite *sprite)
-{
- u32 flags;
-
- if (mapObj->mapobj_bit_3)
- {
- flags = 0;
- FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
- GetAllGroundEffectFlags_OnFinishStep(mapObj, &flags);
- FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
- FilterOutStepOnPuddleGroundEffectIfJumping(mapObj, &flags);
- sub_8064218(mapObj, sprite, flags);
- mapObj->mapobj_bit_3 = 0;
- mapObj->mapobj_bit_5 = 0;
- }
-}
diff --git a/src/field/field_map_obj_helpers.c b/src/field/field_map_obj_helpers.c
deleted file mode 100644
index 328b66ed2..000000000
--- a/src/field/field_map_obj_helpers.c
+++ /dev/null
@@ -1,387 +0,0 @@
-#include "global.h"
-#include "field_map_obj_helpers.h"
-#include "field_effect.h"
-#include "field_ground_effect.h"
-#include "field_map_obj.h"
-#include "sprite.h"
-
-typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir);
-
-void Step1(struct Sprite *sprite, u8 dir);
-void Step2(struct Sprite *sprite, u8 dir);
-void Step3(struct Sprite *sprite, u8 dir);
-void Step4(struct Sprite *sprite, u8 dir);
-void Step8(struct Sprite *sprite, u8 dir);
-
-const SpriteStepFunc Unknown_83760F0[] = {
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1,
- Step1
-};
-
-const SpriteStepFunc Unknown_8376130[] = {
- Step2,
- Step2,
- Step2,
- Step2,
- Step2,
- Step2,
- Step2,
- Step2
-};
-
-const SpriteStepFunc Unknown_8376150[] = {
- Step2,
- Step3,
- Step3,
- Step2,
- Step3,
- Step3
-};
-
-const SpriteStepFunc Unknown_8376168[] = {
- Step4,
- Step4,
- Step4,
- Step4
-};
-
-const SpriteStepFunc Unknown_8376178[] = {
- Step8,
- Step8
-};
-
-const SpriteStepFunc *const gUnknown_08376180[] = {
- Unknown_83760F0,
- Unknown_8376130,
- Unknown_8376150,
- Unknown_8376168,
- Unknown_8376178
-};
-
-const s16 gUnknown_08376194[] = {
- 16, 8, 6, 4, 2
-};
-
-const s8 Unknown_837619E[] = {
- -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0
-};
-
-const s8 Unknown_83761AE[] = {
- 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0
-};
-
-const s8 Unknown_83761BE[] = {
- -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0
-};
-
-const s8 *const gUnknown_083761D0[] = {
- Unknown_837619E,
- Unknown_83761AE,
- Unknown_83761BE
-};
-
-bool8 FreezeMapObject(struct MapObject *mapObject)
-{
- if (mapObject->mapobj_bit_6 || mapObject->mapobj_bit_8)
- {
- return TRUE;
- }
- else
- {
- mapObject->mapobj_bit_8 = 1;
- mapObject->mapobj_bit_23 = gSprites[mapObject->spriteId].animPaused;
- mapObject->mapobj_bit_24 = gSprites[mapObject->spriteId].affineAnimPaused;
- gSprites[mapObject->spriteId].animPaused = 1;
- gSprites[mapObject->spriteId].affineAnimPaused = 1;
- return FALSE;
- }
-}
-
-void FreezeMapObjects(void)
-{
- u8 i;
- for (i = 0; i < 16; i++)
- if (gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
- FreezeMapObject(&gMapObjects[i]);
-}
-
-void FreezeMapObjectsExceptOne(u8 a1)
-{
- u8 i;
- for (i = 0; i < 16; i++)
- if (i != a1 && gMapObjects[i].active && i != gPlayerAvatar.mapObjectId)
- FreezeMapObject(&gMapObjects[i]);
-}
-
-void UnfreezeMapObject(struct MapObject *mapObject)
-{
- if (mapObject->active && mapObject->mapobj_bit_8)
- {
- mapObject->mapobj_bit_8 = 0;
- gSprites[mapObject->spriteId].animPaused = mapObject->mapobj_bit_23;
- gSprites[mapObject->spriteId].affineAnimPaused = mapObject->mapobj_bit_24;
- }
-}
-
-void UnfreezeMapObjects(void)
-{
- u8 i;
- for (i = 0; i < 16; i++)
- if (gMapObjects[i].active)
- UnfreezeMapObject(&gMapObjects[i]);
-}
-
-void Step1(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += gDirectionToVector[dir].x;
- sprite->pos1.y += gDirectionToVector[dir].y;
-}
-
-void Step2(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 2 * (u16) gDirectionToVector[dir].x;
- sprite->pos1.y += 2 * (u16) gDirectionToVector[dir].y;
-}
-
-void Step3(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 2 * (u16) gDirectionToVector[dir].x + (u16) gDirectionToVector[dir].x;
- sprite->pos1.y += 2 * (u16) gDirectionToVector[dir].y + (u16) gDirectionToVector[dir].y;
-}
-
-void Step4(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 4 * (u16) gDirectionToVector[dir].x;
- sprite->pos1.y += 4 * (u16) gDirectionToVector[dir].y;
-}
-
-void Step8(struct Sprite *sprite, u8 dir)
-{
- sprite->pos1.x += 8 * (u16) gDirectionToVector[dir].x;
- sprite->pos1.y += 8 * (u16) gDirectionToVector[dir].y;
-}
-
-void oamt_npc_ministep_reset(struct Sprite *sprite, u8 a2, u8 a3)
-{
- sprite->data[3] = a2;
- sprite->data[4] = a3;
- sprite->data[5] = 0;
-}
-
-bool8 obj_npc_ministep(struct Sprite *sprite)
-{
- if (sprite->data[5] >= gUnknown_08376194[sprite->data[4]])
- return FALSE;
-
- gUnknown_08376180[sprite->data[4]][sprite->data[5]](sprite, sprite->data[3]);
-
- sprite->data[5]++;
-
- if (sprite->data[5] < gUnknown_08376194[sprite->data[4]])
- return FALSE;
-
- return TRUE;
-}
-
-void sub_806467C(struct Sprite *sprite, u8 a2)
-{
- sprite->data[3] = a2;
- sprite->data[4] = 0;
- sprite->data[5] = 0;
-}
-
-bool8 sub_806468C(struct Sprite *sprite)
-{
- if (!(sprite->data[4] & 1))
- {
- Step1(sprite, sprite->data[3]);
- sprite->data[5]++;
- }
-
- sprite->data[4]++;
-
- if (sprite->data[5] > 15)
- return TRUE;
- else
- return FALSE;
-}
-
-s16 sub_80646C8(s16 a1, u8 a2)
-{
- return gUnknown_083761D0[a2][a1];
-}
-
-void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4)
-{
- sprite->data[3] = a2;
- sprite->data[4] = a3;
- sprite->data[5] = a4;
- sprite->data[6] = 0;
-}
-
-u8 sub_8064704(struct Sprite *sprite)
-{
- s16 v5[3] = {0x10, 0x10, 0x20};
- u8 v6[3] = {0, 0, 1};
- u8 v2 = 0;
-
- if (sprite->data[4])
- Step1(sprite, sprite->data[3]);
-
- sprite->pos2.y = sub_80646C8(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
-
- sprite->data[6]++;
-
- if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
- v2 = 1;
-
- if (sprite->data[6] >= v5[sprite->data[4]])
- {
- sprite->pos2.y = 0;
- v2 = -1;
- }
-
- return v2;
-}
-
-u8 sub_806478C(struct Sprite *sprite)
-{
- s16 v5[3] = {0x20, 0x20, 0x40};
- u8 v6[3] = {1, 1, 2};
- u8 v2 = 0;
-
- if (sprite->data[4] && !(sprite->data[6] & 1))
- Step1(sprite, sprite->data[3]);
-
- sprite->pos2.y = sub_80646C8(sprite->data[6] >> v6[sprite->data[4]], sprite->data[5]);
-
- sprite->data[6]++;
-
- if (sprite->data[6] == (v5[sprite->data[4]] >> 1))
- v2 = 1;
-
- if (sprite->data[6] >= v5[sprite->data[4]])
- {
- sprite->pos2.y = 0;
- v2 = -1;
- }
-
- return v2;
-}
-
-void sub_8064820(struct Sprite *sprite, u16 a2)
-{
- sprite->data[3] = a2;
-}
-
-bool8 sub_8064824(struct Sprite *sprite)
-{
- sprite->data[3]--;
-
- if (sprite->data[3] == 0)
- return TRUE;
- else
- return FALSE;
-}
-
-void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3)
-{
- sprite->animNum = a2;
- sprite->animPaused = 0 ;
- SeekSpriteAnim(sprite, a3);
-}
-
-bool8 sub_8064864(struct Sprite *sprite)
-{
- if (sprite->animEnded)
- return TRUE;
- else
- return FALSE;
-}
-
-void sub_806487C(struct Sprite *sprite, bool8 invisible)
-{
- u16 x, y;
- s16 x2, y2;
-
- sprite->invisible = invisible;
-
- if (sprite->coordOffsetEnabled)
- {
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
- }
- else
- {
- x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX;
- y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY;
- }
-
- x2 = x - (sprite->centerToCornerVecX >> 1);
- y2 = y - (sprite->centerToCornerVecY >> 1);
-
- if ((s16)x > 255 || x2 < -16)
- sprite->invisible = 1;
- if ((s16)y > 175 || y2 < -16)
- sprite->invisible = 1;
-}
-
-void sub_8064970(struct Sprite *sprite)
-{
- SetObjectSubpriorityByZCoord(sprite->data[1], sprite, 1);
- sub_806487C(sprite, 0);
-}
-
-void sub_8064990(u8 a1, u8 dir)
-{
- u8 i;
- for (i = 0; i < MAX_SPRITES; i++)
- {
- struct Sprite *sprite = &gSprites[i];
- if (sprite->inUse && sprite->callback == sub_8064970 && (u8)sprite->data[0] == a1)
- {
- u8 animNum = FieldObjectDirectionToImageAnimId(dir);
- StartSpriteAnim(sprite, animNum);
- break;
- }
- }
-}
-
-u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject)
-{
- FieldObjectGetLocalIdAndMap(mapObject, &gFieldEffectArguments[0], &gFieldEffectArguments[1], &gFieldEffectArguments[2]);
- return FieldEffectStart(fieldEffectId);
-}
-
-void DoShadowFieldEffect(struct MapObject *mapObject)
-{
- if (!mapObject->mapobj_bit_22)
- {
- mapObject->mapobj_bit_22 = 1;
- oe_exec_and_other_stuff(FLDEFF_SHADOW, mapObject);
- }
-}
-
-void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite)
-{
- const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- gFieldEffectArguments[0] = sprite->pos1.x;
- gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
- gFieldEffectArguments[2] = 151;
- gFieldEffectArguments[3] = 3;
- FieldEffectStart(FLDEFF_RIPPLE);
-}
diff --git a/src/field/field_camera.c b/src/field_camera.c
index 8384ad8d1..8384ad8d1 100644
--- a/src/field/field_camera.c
+++ b/src/field_camera.c
diff --git a/src/field/field_control_avatar.c b/src/field_control_avatar.c
index 83924b384..3ae422512 100644
--- a/src/field/field_control_avatar.c
+++ b/src/field_control_avatar.c
@@ -4,6 +4,7 @@
#include "bike.h"
#include "coord_event_weather.h"
#include "daycare.h"
+#include "debug.h"
#include "event_data.h"
#include "field_fadetransition.h"
#include "field_player_avatar.h"
@@ -35,6 +36,7 @@ extern u16 gSpecialVar_Facing;
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
+extern u8 gUnknown_020297ED;
static EWRAM_DATA u8 gUnknown_0202E8C0 = 0;
static EWRAM_DATA u16 gUnknown_0202E8C2 = 0;
@@ -103,7 +105,7 @@ static void sub_8068C30(struct MapHeader *, s8, struct MapPosition *);
static bool8 map_warp_consider_2_to_inside(struct MapPosition *, u16, u8);
static s8 map_warp_check(struct MapHeader *, u16, u16, u8);
static u8 *mapheader_trigger_activate_at(struct MapHeader *, u16, u16, u8);
-static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8);
+static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *, u16, u16, u8);;
void FieldClearPlayerInput(struct FieldInput *input)
{
@@ -162,6 +164,31 @@ void FieldGetPlayerInput(struct FieldInput *input, u16 newKeys, u16 heldKeys)
input->dpadDirection = DIR_WEST;
else if (heldKeys & DPAD_RIGHT)
input->dpadDirection = DIR_EAST;
+#if DEBUG
+ if ((heldKeys & R_BUTTON) && input->pressedStartButton)
+ {
+ input->input_field_1_2 = TRUE;
+ input->pressedStartButton = FALSE;
+ }
+ if (gUnknown_020297ED)
+ {
+ if (heldKeys & R_BUTTON)
+ {
+ input->input_field_1_1 = TRUE;
+ input->input_field_0_6 = FALSE;
+ input->input_field_0_1 = FALSE;
+ input->input_field_0_4 = FALSE;
+ input->input_field_0_5 = FALSE;
+ if (newKeys & SELECT_BUTTON)
+ {
+ input->input_field_1_0 = TRUE;
+ input->pressedSelectButton = FALSE;
+ }
+ }
+ if (heldKeys & L_BUTTON)
+ input->input_field_1_3 = TRUE;
+ }
+#endif
}
int sub_8068024(struct FieldInput *input)
@@ -173,10 +200,25 @@ int sub_8068024(struct FieldInput *input)
r6 = player_get_direction_lower_nybble();
player_get_pos_to_and_height(&position);
r4 = MapGridGetMetatileBehaviorAt(position.x, position.y);
- if (CheckTrainers() == TRUE)
+#if DEBUG
+ if (input->input_field_1_3 && dive_warp(&position, r4) == TRUE)
+ return TRUE;
+#endif
+
+ if (
+#if DEBUG
+ !input->input_field_1_1 &&
+#endif
+ CheckTrainers() == TRUE)
return TRUE;
- if (mapheader_run_first_tag2_script_list_match() == 1)
+
+ if (
+#if DEBUG
+ !input->input_field_1_1 &&
+#endif
+ mapheader_run_first_tag2_script_list_match() == 1)
return TRUE;
+
if (input->pressedBButton && sub_80687A4() == 1)
return TRUE;
if (input->input_field_0_6)
@@ -211,6 +253,21 @@ int sub_8068024(struct FieldInput *input)
}
if (input->pressedSelectButton && sub_80A6D1C() == TRUE)
return TRUE;
+
+#if DEBUG
+ if (input->input_field_1_0)
+ {
+ debug_sub_80888D8();
+ return TRUE;
+ }
+ if (input->input_field_1_2)
+ {
+ PlaySE(SE_WIN_OPEN);
+ DebugMenu_8077048();
+ return TRUE;
+ }
+#endif
+
return FALSE;
}
@@ -810,7 +867,7 @@ static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *mapHea
return NULL;
}
-int dive_warp(struct MapPosition *position, u16 b)
+bool8 dive_warp(struct MapPosition *position, u16 b)
{
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(b) == 0)
{
diff --git a/src/field/field_door.c b/src/field_door.c
index 89dae725c..89dae725c 100644
--- a/src/field/field_door.c
+++ b/src/field_door.c
diff --git a/src/field/field_effect.c b/src/field_effect.c
index ad570cf7f..f85bc520e 100644
--- a/src/field/field_effect.c
+++ b/src/field_effect.c
@@ -15,16 +15,15 @@
#include "constants/songs.h"
#include "decoration.h"
#include "field_player_avatar.h"
-#include "field_map_obj_helpers.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "metatile_behavior.h"
#include "field_camera.h"
#include "field_effect.h"
#include "field_fadetransition.h"
#include "fieldmap.h"
-#include "field_map_obj.h"
#include "util.h"
#include "field_effect_helpers.h"
+#include "pokemon_storage_system.h"
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
diff --git a/src/field/field_effect_helpers.c b/src/field_effect_helpers.c
index 93fc62bd5..bc4a1770e 100644
--- a/src/field/field_effect_helpers.c
+++ b/src/field_effect_helpers.c
@@ -4,12 +4,10 @@
#include "metatile_behavior.h"
#include "constants/songs.h"
#include "sound.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_camera.h"
-#include "field_map_obj_helpers.h"
#include "field_weather.h"
#include "field_effect.h"
-#include "field_ground_effect.h"
#include "field_effect_helpers.h"
static void sub_81269E0(struct Sprite *);
@@ -29,8 +27,6 @@ static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *);
static void sub_8128174(struct Sprite *);
static u32 ShowDisguiseFieldEffect(u8, u8, u8);
-const u8 UnusedEggString_8401E28[] = _("タマゴ");
-
void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag)
{
struct Sprite *newSprite;
diff --git a/src/field/field_fadetransition.c b/src/field_fadetransition.c
index d68be3b36..35ea3952a 100644
--- a/src/field/field_fadetransition.c
+++ b/src/field_fadetransition.c
@@ -4,8 +4,7 @@
#include "field_door.h"
#include "field_effect.h"
#include "field_fadetransition.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "field_special_scene.h"
#include "field_weather.h"
@@ -511,6 +510,22 @@ void sub_80810DC(void)
CreateTask(sub_8081050, 10);
}
+#if DEBUG
+
+__attribute__((naked))
+void debug_sub_80888D8()
+{
+ asm("\
+ PUSH {LR}\n\
+ BL debug_sub_8052E04\n\
+ BL sub_8080E88\n\
+ BL ScriptContext2_Enable\n\
+ POP {R0}\n\
+ BX R0");
+}
+
+#endif
+
void task0A_fade_n_map_maybe(u8 taskId)
{
struct Task *task = &gTasks[taskId];
diff --git a/src/field/field_message_box.c b/src/field_message_box.c
index 5eec7a14b..5eec7a14b 100644
--- a/src/field/field_message_box.c
+++ b/src/field_message_box.c
diff --git a/src/field/field_player_avatar.c b/src/field_player_avatar.c
index ba45e506d..1552381b2 100644
--- a/src/field/field_player_avatar.c
+++ b/src/field_player_avatar.c
@@ -4,14 +4,13 @@
#include "event_data.h"
#include "field_effect.h"
#include "field_effect_helpers.h"
-#include "field_ground_effect.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "fieldmap.h"
#include "main.h"
#include "constants/map_objects.h"
#include "menu.h"
#include "metatile_behavior.h"
+#include "new_game.h"
#include "party_menu.h"
#include "random.h"
#include "overworld.h"
@@ -51,6 +50,8 @@ static void sub_8059D60(struct MapObject *a);
static void StartStrengthAnim(u8 a, u8 b);
static void DoPlayerMatJump(void);
static void sub_805A06C(void);
+u8 debug_sub_805F2B0(u8);
+u8 debug_sub_805F2DC(u8);
static bool8 (*const gUnknown_0830FB58[])(u8) =
{
@@ -262,6 +263,10 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void)
static bool8 TryDoMetatileBehaviorForcedMovement(void)
{
+#if DEBUG
+ if (gUnknown_020297ED != 0 && (gMain.heldKeys & 0x100))
+ return 0;
+#endif
return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()]();
}
@@ -438,6 +443,10 @@ bool8 ForcedMovement_MuddySlope(void)
static void MovePlayerNotOnBike(u8 direction, u16 heldKeys)
{
+#if DEBUG
+ if (gUnknown_020297ED != 0 && debug_sub_805F2B0(direction) != 0)
+ return;
+#endif
gUnknown_0830FBEC[CheckMovementInputNotOnBike(direction)](direction, heldKeys);
}
@@ -1763,3 +1772,26 @@ static void sub_805A954(void)
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 1, playerSprite->pos2.y);
}
+
+#if DEBUG
+
+u8 debug_sub_805F2B0(u8 a)
+{
+ if (gMain.heldKeys & 0x100)
+ return debug_sub_805F2DC(a);
+ else
+ return 0;
+}
+
+u8 debug_sub_805F2DC(u8 a)
+{
+ if (a == 0)
+ PlayerFaceDirection(gMapObjects[gPlayerAvatar.mapObjectId].placeholder18);
+ else if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 && !CanCameraMoveInDirection(a))
+ PlayerOnBikeCollide(a);
+ else
+ PlayerGoSpeed4(a);
+ return 1;
+}
+
+#endif
diff --git a/src/field/field_poison.c b/src/field_poison.c
index 8365351f9..8365351f9 100644
--- a/src/field/field_poison.c
+++ b/src/field_poison.c
diff --git a/src/field/field_region_map.c b/src/field_region_map.c
index 54091459f..54091459f 100644
--- a/src/field/field_region_map.c
+++ b/src/field_region_map.c
diff --git a/src/field/field_screen_effect.c b/src/field_screen_effect.c
index 61301c5a9..61301c5a9 100644
--- a/src/field/field_screen_effect.c
+++ b/src/field_screen_effect.c
diff --git a/src/field/field_special_scene.c b/src/field_special_scene.c
index 67b652a57..2010ebcf4 100644
--- a/src/field/field_special_scene.c
+++ b/src/field_special_scene.c
@@ -3,7 +3,7 @@
#include "event_data.h"
#include "field_camera.h"
#include "field_fadetransition.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_specials.h"
#include "fieldmap.h"
#include "main.h"
diff --git a/src/field/field_specials.c b/src/field_specials.c
index e56d9ddbb..715086f00 100644
--- a/src/field/field_specials.c
+++ b/src/field_specials.c
@@ -4,7 +4,7 @@
#include "fieldmap.h"
#include "event_data.h"
#include "battle_tower.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "region_map.h"
#include "field_region_map.h"
#include "field_message_box.h"
diff --git a/src/field/field_tasks.c b/src/field_tasks.c
index ce5fc6c0e..ce5fc6c0e 100644
--- a/src/field/field_tasks.c
+++ b/src/field_tasks.c
diff --git a/src/field/field_weather.c b/src/field_weather.c
index 7beb1b440..5857145ef 100644
--- a/src/field/field_weather.c
+++ b/src/field_weather.c
@@ -1,12 +1,15 @@
#include "global.h"
+#include "constants/songs.h"
+#include "constants/weather.h"
#include "blend_palette.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_weather.h"
+#include "main.h"
+#include "menu.h"
#include "palette.h"
#include "random.h"
#include "script.h"
-#include "constants/weather.h"
-#include "constants/songs.h"
+#include "start_menu.h"
#include "sound.h"
#include "sprite.h"
#include "task.h"
@@ -15,7 +18,8 @@
#define MACRO1(color) ((((color) >> 1) & 0xF) | (((color) >> 2) & 0xF0) | (((color) >> 3) & 0xF00))
-enum {
+enum
+{
GAMMA_NONE,
GAMMA_NORMAL,
GAMMA_ALT,
@@ -43,7 +47,7 @@ struct WeatherCallbacks
EWRAM_DATA struct Weather gWeather = {0};
EWRAM_DATA u8 gFieldEffectPaletteGammaTypes[32] = {0};
-EWRAM_DATA u16 gUnknown_0202FF58 = {0};
+EWRAM_DATA u16 gUnknown_0202FF58 = 0;
static const u8 *sPaletteGammaTypes;
@@ -210,6 +214,45 @@ static const u8 sBasePaletteGammaTypes[32] =
GAMMA_NORMAL,
};
+#if DEBUG
+
+static const u8 sDebugText_Weather_None[] = _("なし   "); // "none"
+static const u8 sDebugText_Weather_Clear[] = _("はれ   "); // "clear"
+static const u8 sDebugText_Weather_Clear2[] = _("はれ2  "); // "clear2"
+static const u8 sDebugText_Weather_Rain[] = _("あめ   "); // "rain"
+static const u8 sDebugText_Weather_Snow[] = _("ゆき   "); // "snow"
+static const u8 sDebugText_Weather_Lightning[] = _("かみなり "); // "lightning"
+static const u8 sDebugText_Weather_Fog[] = _("きり   "); // "fog"
+static const u8 sDebugText_Weather_VolcanicAsh[] = _("かざんばい"); // "volcanic ash"
+static const u8 sDebugText_Weather_Sandstorm[] = _("すなあらし"); // "sandstorm
+static const u8 sDebugText_Weather_Fog2[] = _("きり2  "); // "fog2"
+static const u8 sDebugText_Weather_Underwater[] = _("かいてい "); // "undersea"
+static const u8 sDebugText_Weather_Cloudy[] = _("くもり  "); // "cloudy"
+static const u8 sDebugText_Weather_Clear3[] = _("はれ3  "); // "clear3"
+static const u8 sDebugText_Weather_HeavyRain[] = _("おおあめ"); // "heavy rain"
+static const u8 sDebugText_Weather_Underwater2[] = _("かいてい2"); // "undersea2"
+
+static const u8 *const sDebugText_Weather[] =
+{
+ [WEATHER_NONE] = sDebugText_Weather_None,
+ [WEATHER_CLOUDS] = sDebugText_Weather_Clear,
+ [WEATHER_SUNNY] = sDebugText_Weather_Clear2,
+ [WEATHER_RAIN_LIGHT] = sDebugText_Weather_Rain,
+ [WEATHER_SNOW] = sDebugText_Weather_Snow,
+ [WEATHER_RAIN_MED] = sDebugText_Weather_Lightning,
+ [WEATHER_FOG_1] = sDebugText_Weather_Fog,
+ [WEATHER_ASH] = sDebugText_Weather_VolcanicAsh,
+ [WEATHER_SANDSTORM] = sDebugText_Weather_Sandstorm,
+ [WEATHER_FOG_2] = sDebugText_Weather_Fog2,
+ [WEATHER_FOG_3] = sDebugText_Weather_Underwater,
+ [WEATHER_SHADE] = sDebugText_Weather_Cloudy,
+ [WEATHER_DROUGHT] = sDebugText_Weather_Clear3,
+ [WEATHER_RAIN_HEAVY] = sDebugText_Weather_HeavyRain,
+ [WEATHER_BUBBLES] = sDebugText_Weather_Underwater2,
+};
+
+#endif
+
const u16 gUnknown_083970E8[] = INCBIN_U16("graphics/weather/0.gbapal");
void StartWeather(void)
@@ -1213,3 +1256,55 @@ void ResetPreservedPalettesInWeather(void)
{
sPaletteGammaTypes = sBasePaletteGammaTypes;
}
+
+#if DEBUG
+
+EWRAM_DATA static u8 sSelectedDebugWeather = 0;
+
+bool8 debug_sub_8085564(void)
+{
+ bool8 changed = FALSE;
+
+ if (gMain.newKeys & R_BUTTON)
+ {
+ sSelectedDebugWeather++;
+ if (sSelectedDebugWeather == 15)
+ sSelectedDebugWeather = 0;
+ changed = TRUE;
+ }
+ if (gMain.newKeys & L_BUTTON)
+ {
+ if (sSelectedDebugWeather != 0)
+ sSelectedDebugWeather--;
+ else
+ sSelectedDebugWeather = 14;
+ changed = TRUE;
+ }
+
+ if (changed)
+ {
+ Menu_BlankWindowRect(22, 1, 28, 2);
+ Menu_PrintText(sDebugText_Weather[sSelectedDebugWeather], 23, 1);
+ }
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ ChangeWeather(sSelectedDebugWeather);
+ CloseMenu();
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 debug_sub_808560C(void)
+{
+ sSelectedDebugWeather = gWeather.currWeather;
+ Menu_EraseScreen();
+ Menu_BlankWindowRect(22, 1, 28, 2);
+ Menu_PrintText(sDebugText_Weather[sSelectedDebugWeather], 23, 1);
+ gMenuCallback = debug_sub_8085564;
+ return FALSE;
+}
+
+#endif
diff --git a/src/field/field_weather_effects.c b/src/field_weather_effects.c
index eff702f8c..da3314aa1 100644
--- a/src/field/field_weather_effects.c
+++ b/src/field_weather_effects.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_weather.h"
#include "overworld.h"
#include "random.h"
@@ -2292,13 +2292,12 @@ void unc_0807DAB4(struct Sprite *sprite)
//------------------------------------------------------------------------------
-u8 TranslateWeatherNum(u8);
-void UpdateRainCounter(u8, u8);
+static u8 TranslateWeatherNum(u8);
+static void UpdateRainCounter(u8, u8);
void SetSav1Weather(u32 weather)
{
u8 oldWeather = gSaveBlock1.weather;
-
gSaveBlock1.weather = TranslateWeatherNum(weather);
UpdateRainCounter(gSaveBlock1.weather, oldWeather);
}
@@ -2311,7 +2310,6 @@ u8 GetSav1Weather(void)
void SetSav1WeatherFromCurrMapHeader(void)
{
u8 oldWeather = gSaveBlock1.weather;
-
gSaveBlock1.weather = TranslateWeatherNum(gMapHeader.weather);
UpdateRainCounter(gSaveBlock1.weather, oldWeather);
}
@@ -2338,42 +2336,54 @@ void sub_8080750(void)
sub_807C988(GetSav1Weather());
}
-static const u8 sWeatherCycle1[] = {2, 3, 5, 3};
-static const u8 sWeatherCycle2[] = {2, 2, 3, 2};
+static const u8 sWeatherCycleRoute119[] =
+{
+ WEATHER_SUNNY,
+ WEATHER_RAIN_LIGHT,
+ WEATHER_RAIN_MED,
+ WEATHER_RAIN_LIGHT,
+};
+static const u8 sWeatherCycleRoute123[] =
+{
+ WEATHER_SUNNY,
+ WEATHER_SUNNY,
+ WEATHER_RAIN_LIGHT,
+ WEATHER_SUNNY,
+};
-u8 TranslateWeatherNum(u8 weather)
+static u8 TranslateWeatherNum(u8 weather)
{
switch (weather)
{
- case 0: return 0;
- case 1: return 1;
- case 2: return 2;
- case 3: return 3;
- case 4: return 4;
- case 5: return 5;
- case 6: return 6;
- case 7: return 7;
- case 8: return 8;
- case 9: return 9;
- case 10: return 10;
- case 11: return 11;
- case 12: return 12;
- case 13: return 13;
- case 14: return 14;
- case 20: return sWeatherCycle1[gSaveBlock1.filler_2F];
- case 21: return sWeatherCycle2[gSaveBlock1.filler_2F];
- default: return 0;
+ case WEATHER_NONE: return WEATHER_NONE;
+ case WEATHER_CLOUDS: return WEATHER_CLOUDS;
+ case WEATHER_SUNNY: return WEATHER_SUNNY;
+ case WEATHER_RAIN_LIGHT: return WEATHER_RAIN_LIGHT;
+ case WEATHER_SNOW: return WEATHER_SNOW;
+ case WEATHER_RAIN_MED: return WEATHER_RAIN_MED;
+ case WEATHER_FOG_1: return WEATHER_FOG_1;
+ case WEATHER_ASH: return WEATHER_ASH;
+ case WEATHER_SANDSTORM: return WEATHER_SANDSTORM;
+ case WEATHER_FOG_2: return WEATHER_FOG_2;
+ case WEATHER_FOG_3: return WEATHER_FOG_3;
+ case WEATHER_SHADE: return WEATHER_SHADE;
+ case WEATHER_DROUGHT: return WEATHER_DROUGHT;
+ case WEATHER_RAIN_HEAVY: return WEATHER_RAIN_HEAVY;
+ case WEATHER_BUBBLES: return WEATHER_BUBBLES;
+ case WEATHER_ROUTE119_CYCLE: return sWeatherCycleRoute119[gSaveBlock1.weatherCycleStage];
+ case WEATHER_ROUTE123_CYCLE: return sWeatherCycleRoute123[gSaveBlock1.weatherCycleStage];
+ default: return WEATHER_NONE;
}
}
void UpdateWeatherPerDay(u16 increment)
{
- u16 weatherStage = gSaveBlock1.filler_2F + increment;
+ u16 weatherStage = gSaveBlock1.weatherCycleStage + increment;
weatherStage %= 4;
- gSaveBlock1.filler_2F = weatherStage;
+ gSaveBlock1.weatherCycleStage = weatherStage;
}
-void UpdateRainCounter(u8 newWeather, u8 oldWeather)
+static void UpdateRainCounter(u8 newWeather, u8 oldWeather)
{
if (newWeather != oldWeather
&& (newWeather == WEATHER_RAIN_LIGHT || newWeather == WEATHER_RAIN_MED))
diff --git a/src/field/fieldmap.c b/src/fieldmap.c
index 7383bb174..7383bb174 100644
--- a/src/field/fieldmap.c
+++ b/src/fieldmap.c
diff --git a/src/field/fldeff_berrytree.c b/src/fldeff_berrytree.c
index 0763c0314..6b03e9952 100644
--- a/src/field/fldeff_berrytree.c
+++ b/src/fldeff_berrytree.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "script.h"
diff --git a/src/field/fldeff_cut.c b/src/fldeff_cut.c
index 513107729..c8f942fe5 100644
--- a/src/field/fldeff_cut.c
+++ b/src/fldeff_cut.c
@@ -2,7 +2,7 @@
#include "fldeff_cut.h"
#include "field_camera.h"
#include "field_effect.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "map_obj_lock.h"
@@ -72,6 +72,46 @@ static const struct SpriteTemplate gSpriteTemplate_CutGrass =
.callback = sub_80A2A48,
};
+#if DEBUG
+
+void debug_sub_80AFEE4(void)
+{
+ s16 x, y;
+ u8 i, j;
+ u8 metatile;
+
+ if (npc_before_player_of_type(0x52) == TRUE)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ sub_80A2634();
+ return;
+ }
+
+ PlayerGetDestCoords(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
+ for (i = 0; i < 3; i++)
+ {
+ y = i - 1 + gUnknown_0203923C.y;
+ for (j = 0; j < 3; j++)
+ {
+ x = j - 1 + gUnknown_0203923C.x;
+ if (MapGridGetZCoordAt(x, y) == gUnknown_0203923C.height)
+ {
+ metatile = MapGridGetMetatileBehaviorAt(x, y);
+ if (MetatileBehavior_IsPokeGrass(metatile) == TRUE
+ || MetatileBehavior_IsAshGrass(metatile) == TRUE)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ sub_80A25E8();
+ return;
+ }
+ }
+ }
+ }
+ ScriptContext2_Disable();
+}
+
+#endif
+
bool8 SetUpFieldMove_Cut(void)
{
s16 x, y;
@@ -93,7 +133,7 @@ bool8 SetUpFieldMove_Cut(void)
for(j = 0; j < 3; j++)
{
x = j - 1 + gUnknown_0203923C.x;
- if(MapGridGetZCoordAt(x, y) == (s8)gUnknown_0203923C.height)
+ if(MapGridGetZCoordAt(x, y) == gUnknown_0203923C.height)
{
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
if(MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE
diff --git a/src/field/fldeff_decoration.c b/src/fldeff_decoration.c
index 37f024b9f..1859fc00b 100644
--- a/src/field/fldeff_decoration.c
+++ b/src/fldeff_decoration.c
@@ -2,7 +2,7 @@
#include "event_data.h"
#include "field_camera.h"
#include "field_effect.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "script.h"
diff --git a/src/field/fldeff_escalator.c b/src/fldeff_escalator.c
index 981233480..981233480 100644
--- a/src/field/fldeff_escalator.c
+++ b/src/fldeff_escalator.c
diff --git a/src/field/fldeff_flash.c b/src/fldeff_flash.c
index 22f170184..30ddd0f6c 100644
--- a/src/field/fldeff_flash.c
+++ b/src/fldeff_flash.c
@@ -71,6 +71,18 @@ static const u16 gUnknown_083F809C[] = INCBIN_U16("graphics/misc/83F809C.gbapal"
static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_transition_map.bin.lz");
static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz");
+#if DEBUG
+
+void debug_sub_8122080(void)
+{
+ if (gMapHeader.cave == 1 && !FlagGet(FLAG_SYS_USE_FLASH))
+ sub_810CBFC();
+ else
+ ScriptContext2_Disable();
+}
+
+#endif
+
bool8 SetUpFieldMove_Flash(void)
{
if (gMapHeader.cave == TRUE && !FlagGet(FLAG_SYS_USE_FLASH))
diff --git a/src/field/fldeff_poison.c b/src/fldeff_poison.c
index 52afc2516..52afc2516 100644
--- a/src/field/fldeff_poison.c
+++ b/src/fldeff_poison.c
diff --git a/src/field/fldeff_recordmixing.c b/src/fldeff_recordmixing.c
index ec72885b5..716447f9c 100644
--- a/src/field/fldeff_recordmixing.c
+++ b/src/fldeff_recordmixing.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "fldeff_recordmixing.h"
#include "sprite.h"
diff --git a/src/field/fldeff_secret_base_pc.c b/src/fldeff_secret_base_pc.c
index 394c4bc56..394c4bc56 100644
--- a/src/field/fldeff_secret_base_pc.c
+++ b/src/fldeff_secret_base_pc.c
diff --git a/src/field/fldeff_secretpower.c b/src/fldeff_secretpower.c
index bf8e98403..d1df03d84 100644
--- a/src/field/fldeff_secretpower.c
+++ b/src/fldeff_secretpower.c
@@ -243,6 +243,48 @@ void sub_80C6280(void)
}
}
+#if DEBUG
+
+void debug_sub_80D93F4(void)
+{
+ u8 metatile;
+
+ sub_80BB63C();
+
+ if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != 2)
+ {
+ ScriptContext2_Disable();
+ return;
+ }
+
+ GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
+ metatile = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y);
+ if (MetatileBehavior_IsSecretBaseCave(metatile) == TRUE)
+ {
+ sub_80C6264();
+ gLastFieldPokeMenuOpened = 0;
+ sub_80C639C();
+ }
+ else if (MetatileBehavior_IsSecretBaseTree(metatile) == TRUE)
+ {
+ sub_80C6264();
+ gLastFieldPokeMenuOpened = 0;
+ sub_80C64A8();
+ }
+ else if (MetatileBehavior_IsSecretBaseShrub(metatile) == TRUE)
+ {
+ sub_80C6264();
+ gLastFieldPokeMenuOpened = 0;
+ sub_80C660C();
+ }
+ else
+ {
+ ScriptContext2_Disable();
+ }
+}
+
+#endif
+
bool8 SetUpFieldMove_SecretPower(void)
{
u8 behavior;
diff --git a/src/field/fldeff_softboiled.c b/src/fldeff_softboiled.c
index 3c64ec520..3c64ec520 100644
--- a/src/field/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
diff --git a/src/field/fldeff_strength.c b/src/fldeff_strength.c
index 565ac1651..9f9cd4013 100644
--- a/src/field/fldeff_strength.c
+++ b/src/fldeff_strength.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "constants/map_objects.h"
#include "braille_puzzles.h"
#include "field_effect.h"
#include "party_menu.h"
@@ -20,6 +21,28 @@ extern void (*gUnknown_03005CE4)(void);
extern u8 S_UseStrength[];
+#if DEBUG
+void debug_sub_8130318(void)
+{
+ if (ShouldDoBrailleStrengthEffect())
+ {
+ gLastFieldPokeMenuOpened = 0;
+ gSpecialVar_Result = 0;
+ sub_811AA38();
+ }
+ else if (npc_before_player_of_type(MAP_OBJ_GFX_PUSHABLE_BOULDER) == TRUE)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ gSpecialVar_Result = 0;
+ sub_811AA18();
+ }
+ else
+ {
+ ScriptContext2_Disable();
+ }
+}
+#endif
+
bool8 SetUpFieldMove_Strength(void)
{
if (ShouldDoBrailleStrengthEffect())
diff --git a/src/field/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index b9dbf619d..b9dbf619d 100644
--- a/src/field/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
diff --git a/src/field/fldeff_teleport.c b/src/fldeff_teleport.c
index af48fb414..af48fb414 100644
--- a/src/field/fldeff_teleport.c
+++ b/src/fldeff_teleport.c
diff --git a/src/scene/hall_of_fame.c b/src/hall_of_fame.c
index e486c65a3..2b790e97d 100644
--- a/src/scene/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -18,6 +18,9 @@
#include "random.h"
#include "scanline_effect.h"
#include "trig.h"
+#include "hof_pc.h"
+#include "credits.h"
+#include "pc_screen_effect.h"
#include "ewram.h"
static EWRAM_DATA u32 sUnknown_0203931C = 0;
@@ -88,15 +91,6 @@ static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID
static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3);
static bool8 sub_81438C4(void);
-// functions from different files
-void sub_81439D0(void);
-void sub_80C5CD4(void*); // ?
-void sub_80C5E38(void*); // ?
-bool8 sub_80C5DCC(void);
-bool8 sub_80C5F98(void);
-void ReturnFromHallOfFamePC(void);
-u16 SpeciesToPokedexNum(u16 species);
-
// data and gfx
static const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet =
@@ -130,9 +124,9 @@ static const s16 sHallOfFame_MonsHalfTeamPositions[3][4] =
{-41, 214, 184, 64}
};
-static const struct HallofFameMon sDummyFameMon =
-{
- 0x3EA03EA, 0, 0, 0, {0}
+static const struct PCScreenEffectStruct sPCScreenEffectTemplate = {
+ .tileTag = 0x3ea,
+ .paletteTag = 0x3ea
};
static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5};
@@ -800,20 +794,15 @@ void sub_81428CC(void)
}
break;
case 3:
- {
- struct HallofFameMons* fameMons;
-
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- REG_BLDY = 0;
- sub_81435B8();
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ sub_81435B8();
- fameMons = eHallOfFameMons1;
- fameMons->mons[0] = sDummyFameMon;
+ eHOFPCScreenEffect = sPCScreenEffectTemplate;
- sub_80C5CD4(fameMons);
- gMain.state++;
- }
+ sub_80C5CD4(&eHOFPCScreenEffect);
+ gMain.state++;
break;
case 4:
AnimateSprites();
@@ -1022,12 +1011,9 @@ static void sub_8142DF4(u8 taskID)
static void sub_8142F78(u8 taskID)
{
- struct HallofFameMons* fameMons;
-
CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200);
- fameMons = eHallOfFameMons1;
- fameMons->mons[0] = sDummyFameMon;
- sub_80C5E38(fameMons);
+ eHOFPCScreenEffect = sPCScreenEffectTemplate;
+ sub_80C5E38(&eHOFPCScreenEffect);
gTasks[taskID].func = sub_8142FCC;
}
diff --git a/src/field/heal_location.c b/src/heal_location.c
index a10c7a7b8..a10c7a7b8 100644
--- a/src/field/heal_location.c
+++ b/src/heal_location.c
diff --git a/src/field/hof_pc.c b/src/hof_pc.c
index 267ed4274..267ed4274 100644
--- a/src/field/hof_pc.c
+++ b/src/hof_pc.c
diff --git a/src/scene/intro.c b/src/intro.c
index 4da341744..5c0e7a67d 100644
--- a/src/scene/intro.c
+++ b/src/intro.c
@@ -1501,7 +1501,6 @@ static void intro_reset_and_hide_bgs(void)
REG_BLDY = 0;
}
-#ifdef NONMATCHING
static void sub_813CCE8(u8 taskId)
{
switch (gTasks[taskId].data[0])
@@ -1513,18 +1512,15 @@ static void sub_813CCE8(u8 taskId)
REG_BLDY = 0;
gTasks[taskId].data[1] = 0x40;
gTasks[taskId].data[0] = 1;
- return;
+ break;
case 1:
if (gTasks[taskId].data[1] != 0)
{
- u32 foo;
- u32 bar asm("r2");
+ u8 foo;
gTasks[taskId].data[1]--;
- //tail merge at _0813CDC2
- foo = gTasks[taskId].data[1] + (gTasks[taskId].data[1] < 0);
- bar = 0x1FE;
- REG_BLDALPHA = gUnknown_08393E64[(foo & bar) / 2];
+ foo = gTasks[taskId].data[1] / 2;
+ REG_BLDALPHA = gUnknown_08393E64[foo];
}
else
{
@@ -1532,7 +1528,7 @@ static void sub_813CCE8(u8 taskId)
gTasks[taskId].data[1] = 0x80;
gTasks[taskId].data[0]++;
}
- return;
+ break;
case 2:
if (gTasks[taskId].data[1] != 0)
{
@@ -1544,18 +1540,15 @@ static void sub_813CCE8(u8 taskId)
gTasks[taskId].data[1] = 0; //redundant?
gTasks[taskId].data[0]++;
}
- return;
+ break;
case 3:
if (gTasks[taskId].data[1] <= 0x3D)
{
- u32 foo;
- u32 bar asm("r2");
+ u8 foo;
gTasks[taskId].data[1]++;
- //_0813CDC2
- foo = gTasks[taskId].data[1] + (gTasks[taskId].data[1] < 0);
- bar = 0x1FE;
- REG_BLDALPHA = gUnknown_08393E64[(foo & bar) / 2];
+ foo = gTasks[taskId].data[1] / 2;
+ REG_BLDALPHA = gUnknown_08393E64[foo];
}
else
{
@@ -1564,7 +1557,7 @@ static void sub_813CCE8(u8 taskId)
gTasks[taskId].data[1] = 0x10;
gTasks[taskId].data[0]++;
}
- return;
+ break;
case 4:
if (gTasks[taskId].data[1] != 0)
{
@@ -1577,186 +1570,9 @@ static void sub_813CCE8(u8 taskId)
REG_BLDY = 0;
DestroyTask(taskId);
}
- return;
+ break;
}
}
-#else
-__attribute__((naked))
-static void sub_813CCE8(u8 taskId)
-{
- asm("\n\
- .equ REG_BLDCNT, 0x4000050\n\
- .equ REG_BLDALPHA, 0x4000052\n\
- .syntax unified\n\
- push {r4,lr}\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- ldr r1, _0813CD0C @ =gTasks\n\
- lsls r0, r3, 2\n\
- adds r0, r3\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- movs r2, 0x8\n\
- ldrsh r0, [r0, r2]\n\
- adds r2, r1, 0\n\
- cmp r0, 0x4\n\
- bhi _0813CD28\n\
- lsls r0, 2\n\
- ldr r1, _0813CD10 @ =_0813CD14\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
- .align 2, 0\n\
-_0813CD0C: .4byte gTasks\n\
-_0813CD10: .4byte _0813CD14\n\
- .align 2, 0\n\
-_0813CD14:\n\
- .4byte _0813CD28\n\
- .4byte _0813CD5C\n\
- .4byte _0813CD8C\n\
- .4byte _0813CDA8\n\
- .4byte _0813CDFC\n\
-_0813CD28:\n\
- ldr r1, _0813CD54 @ =REG_BLDCNT\n\
- ldr r4, _0813CD58 @ =0x00003f50\n\
- adds r0, r4, 0\n\
- strh r0, [r1]\n\
- adds r1, 0x2\n\
- movs r4, 0x80\n\
- lsls r4, 5\n\
- adds r0, r4, 0\n\
- strh r0, [r1]\n\
- adds r1, 0x2\n\
- movs r0, 0\n\
- strh r0, [r1]\n\
- lsls r0, r3, 2\n\
- adds r0, r3\n\
- lsls r0, 3\n\
- adds r0, r2\n\
- movs r1, 0x40\n\
- strh r1, [r0, 0xA]\n\
- movs r1, 0x1\n\
- strh r1, [r0, 0x8]\n\
- b _0813CE26\n\
- .align 2, 0\n\
-_0813CD54: .4byte REG_BLDCNT\n\
-_0813CD58: .4byte 0x00003f50\n\
-_0813CD5C:\n\
- lsls r0, r3, 2\n\
- adds r0, r3\n\
- lsls r0, 3\n\
- adds r2, r0, r2\n\
- ldrh r1, [r2, 0xA]\n\
- movs r3, 0xA\n\
- ldrsh r0, [r2, r3]\n\
- cmp r0, 0\n\
- beq _0813CD78\n\
- subs r0, r1, 0x1\n\
- strh r0, [r2, 0xA]\n\
- movs r4, 0xA\n\
- ldrsh r0, [r2, r4]\n\
- b _0813CDC2\n\
-_0813CD78:\n\
- ldr r1, _0813CD84 @ =REG_BLDALPHA\n\
- ldr r0, _0813CD88 @ =gUnknown_08393E64\n\
- ldrh r0, [r0]\n\
- strh r0, [r1]\n\
- movs r0, 0x80\n\
- b _0813CDEA\n\
- .align 2, 0\n\
-_0813CD84: .4byte REG_BLDALPHA\n\
-_0813CD88: .4byte gUnknown_08393E64\n\
-_0813CD8C:\n\
- lsls r0, r3, 2\n\
- adds r0, r3\n\
- lsls r0, 3\n\
- adds r1, r0, r2\n\
- ldrh r0, [r1, 0xA]\n\
- movs r3, 0xA\n\
- ldrsh r2, [r1, r3]\n\
- cmp r2, 0\n\
- bne _0813CE0E\n\
- strh r2, [r1, 0xA]\n\
- ldrh r0, [r1, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r1, 0x8]\n\
- b _0813CE26\n\
-_0813CDA8:\n\
- lsls r0, r3, 2\n\
- adds r0, r3\n\
- lsls r0, 3\n\
- adds r2, r0, r2\n\
- ldrh r1, [r2, 0xA]\n\
- movs r4, 0xA\n\
- ldrsh r0, [r2, r4]\n\
- cmp r0, 0x3D\n\
- bgt _0813CDE0\n\
- adds r0, r1, 0x1\n\
- strh r0, [r2, 0xA]\n\
- movs r1, 0xA\n\
- ldrsh r0, [r2, r1]\n\
-_0813CDC2:\n\
- lsrs r1, r0, 31\n\
- adds r0, r1\n\
- movs r2, 0xFF\n\
- lsls r2, 1\n\
- ldr r3, _0813CDD8 @ =REG_BLDALPHA\n\
- ldr r1, _0813CDDC @ =gUnknown_08393E64\n\
- ands r0, r2\n\
- adds r0, r1\n\
- ldrh r0, [r0]\n\
- strh r0, [r3]\n\
- b _0813CE26\n\
- .align 2, 0\n\
-_0813CDD8: .4byte REG_BLDALPHA\n\
-_0813CDDC: .4byte gUnknown_08393E64\n\
-_0813CDE0:\n\
- ldr r1, _0813CDF4 @ =REG_BLDALPHA\n\
- ldr r0, _0813CDF8 @ =gUnknown_08393E64\n\
- ldrh r0, [r0, 0x3E]\n\
- strh r0, [r1]\n\
- movs r0, 0x10\n\
-_0813CDEA:\n\
- strh r0, [r2, 0xA]\n\
- ldrh r0, [r2, 0x8]\n\
- adds r0, 0x1\n\
- strh r0, [r2, 0x8]\n\
- b _0813CE26\n\
- .align 2, 0\n\
-_0813CDF4: .4byte REG_BLDALPHA\n\
-_0813CDF8: .4byte gUnknown_08393E64\n\
-_0813CDFC:\n\
- lsls r0, r3, 2\n\
- adds r0, r3\n\
- lsls r0, 3\n\
- adds r1, r0, r2\n\
- ldrh r0, [r1, 0xA]\n\
- movs r4, 0xA\n\
- ldrsh r2, [r1, r4]\n\
- cmp r2, 0\n\
- beq _0813CE14\n\
-_0813CE0E:\n\
- subs r0, 0x1\n\
- strh r0, [r1, 0xA]\n\
- b _0813CE26\n\
-_0813CE14:\n\
- ldr r0, _0813CE2C @ =REG_BLDCNT\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r2, [r0]\n\
- adds r0, 0x2\n\
- strh r2, [r0]\n\
- adds r0, r3, 0\n\
- bl DestroyTask\n\
-_0813CE26:\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0813CE2C: .4byte REG_BLDCNT\n\
- .syntax divided\n");
-}
-#endif
void sub_813CE30(u16 scrX, u16 scrY, u16 zoom, u16 alpha)
{
@@ -2186,7 +2002,6 @@ static u8 CreateGameFreakLogo(s16 a, s16 b, u8 c)
return spriteId;
}
-#ifdef NONMATCHING
static void sub_813DA64(struct Sprite *sprite)
{
sprite->data[7]++;
@@ -2206,14 +2021,13 @@ static void sub_813DA64(struct Sprite *sprite)
break;
case 1:
{
- s16 r3;
- s16 sin1;
- s16 r6;
- s16 foo;
- s16 r5;
- s16 r2;
+ s16 sin;
+ s16 cos;
+ s16 a;
+ s16 b;
+ s16 c;
+ s16 d;
- //_0813DAC0
if (sprite->data[3] < 0x50)
{
sprite->pos2.y = -Sin((u8)sprite->data[3], 0x78);
@@ -2221,15 +2035,14 @@ static void sub_813DA64(struct Sprite *sprite)
if (sprite->data[3] > 64)
sprite->oam.priority = 3;
}
- //_0813DAF8
- r3 = gSineTable[(u8)sprite->data[2]];
- sin1 = gSineTable[(u8)(sprite->data[2] + 64)];
- r6 = sin1 * sprite->data[1] / 256;
- foo = sin1 * sprite->data[1] / 256;
- r5 = -r3 * sprite->data[1] / 256;
- r2 = r3 * sprite->data[1] / 256;
+ sin = gSineTable[(u8)sprite->data[2]];
+ cos = gSineTable[(u8)(sprite->data[2] + 64)];
+ d = cos * sprite->data[1] / 256;
+ c = -sin * sprite->data[1] / 256;
+ b = sin * sprite->data[1] / 256;
+ a = cos * sprite->data[1] / 256;
- SetOamMatrix(1, r6, r2, r5, foo);
+ SetOamMatrix(1, a, b, c, d);
if (sprite->data[1] < 0x100)
sprite->data[1] += 8;
@@ -2244,180 +2057,7 @@ static void sub_813DA64(struct Sprite *sprite)
break;
}
}
- //_0813DB92
}
-#else
-__attribute__((naked))
-static void sub_813DA64(struct Sprite *sprite)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x4\n\
- adds r4, r0, 0\n\
- ldrh r0, [r4, 0x3C]\n\
- adds r0, 0x1\n\
- strh r0, [r4, 0x3C]\n\
- movs r1, 0x2E\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0\n\
- beq _0813DA7C\n\
- cmp r0, 0x1\n\
- beq _0813DAC0\n\
-_0813DA7C:\n\
- ldrb r0, [r4, 0x1]\n\
- movs r1, 0x3\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x1]\n\
- ldrb r1, [r4, 0x3]\n\
- movs r0, 0x3F\n\
- negs r0, r0\n\
- ands r0, r1\n\
- movs r1, 0x2\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x3]\n\
- adds r0, r4, 0\n\
- movs r1, 0x1\n\
- movs r2, 0x3\n\
- movs r3, 0x3\n\
- bl CalcCenterToCornerVec\n\
- adds r2, r4, 0\n\
- adds r2, 0x3E\n\
- ldrb r1, [r2]\n\
- movs r0, 0x5\n\
- negs r0, r0\n\
- ands r0, r1\n\
- strb r0, [r2]\n\
- movs r0, 0x1\n\
- strh r0, [r4, 0x2E]\n\
- movs r0, 0x80\n\
- strh r0, [r4, 0x30]\n\
- ldr r0, _0813DABC @ =0x0000ffe8\n\
- strh r0, [r4, 0x32]\n\
- movs r0, 0\n\
- b _0813DB92\n\
- .align 2, 0\n\
-_0813DABC: .4byte 0x0000ffe8\n\
-_0813DAC0:\n\
- ldrh r1, [r4, 0x34]\n\
- movs r2, 0x34\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0x4F\n\
- bgt _0813DAF8\n\
- lsls r0, r1, 24\n\
- lsrs r0, 24\n\
- movs r1, 0x78\n\
- bl Sin\n\
- negs r0, r0\n\
- strh r0, [r4, 0x26]\n\
- ldrh r0, [r4, 0x34]\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- movs r1, 0x8C\n\
- bl Sin\n\
- negs r0, r0\n\
- strh r0, [r4, 0x24]\n\
- movs r1, 0x34\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x40\n\
- ble _0813DAF8\n\
- ldrb r0, [r4, 0x5]\n\
- movs r1, 0xC\n\
- orrs r0, r1\n\
- strb r0, [r4, 0x5]\n\
-_0813DAF8:\n\
- ldr r2, _0813DB60 @ =gSineTable\n\
- ldrh r1, [r4, 0x32]\n\
- lsls r0, r1, 24\n\
- lsrs r0, 23\n\
- adds r0, r2\n\
- ldrh r3, [r0]\n\
- adds r1, 0x40\n\
- lsls r1, 24\n\
- lsrs r1, 23\n\
- adds r1, r2\n\
- movs r2, 0\n\
- ldrsh r0, [r1, r2]\n\
- movs r1, 0x30\n\
- ldrsh r2, [r4, r1]\n\
- adds r1, r0, 0\n\
- muls r1, r2\n\
- adds r0, r1, 0\n\
- cmp r1, 0\n\
- bge _0813DB20\n\
- adds r0, 0xFF\n\
-_0813DB20:\n\
- lsls r0, 8\n\
- lsrs r6, r0, 16\n\
- lsls r0, r3, 16\n\
- asrs r3, r0, 16\n\
- negs r0, r3\n\
- muls r0, r2\n\
- cmp r0, 0\n\
- bge _0813DB32\n\
- adds r0, 0xFF\n\
-_0813DB32:\n\
- lsls r0, 8\n\
- lsrs r5, r0, 16\n\
- adds r0, r3, 0\n\
- muls r0, r2\n\
- cmp r0, 0\n\
- bge _0813DB40\n\
- adds r0, 0xFF\n\
-_0813DB40:\n\
- lsls r0, 8\n\
- lsrs r2, r0, 16\n\
- adds r1, r6, 0\n\
- adds r3, r5, 0\n\
- str r1, [sp]\n\
- movs r0, 0x1\n\
- bl SetOamMatrix\n\
- ldrh r1, [r4, 0x30]\n\
- movs r2, 0x30\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0xFF\n\
- bgt _0813DB64\n\
- adds r0, r1, 0\n\
- adds r0, 0x8\n\
- b _0813DB68\n\
- .align 2, 0\n\
-_0813DB60: .4byte gSineTable\n\
-_0813DB64:\n\
- adds r0, r1, 0\n\
- adds r0, 0x20\n\
-_0813DB68:\n\
- strh r0, [r4, 0x30]\n\
- ldrh r1, [r4, 0x32]\n\
- movs r2, 0x32\n\
- ldrsh r0, [r4, r2]\n\
- cmp r0, 0x17\n\
- bgt _0813DB78\n\
- adds r0, r1, 0x1\n\
- strh r0, [r4, 0x32]\n\
-_0813DB78:\n\
- ldrh r2, [r4, 0x34]\n\
- movs r1, 0x34\n\
- ldrsh r0, [r4, r1]\n\
- cmp r0, 0x3F\n\
- bgt _0813DB86\n\
- adds r0, r2, 0x2\n\
- b _0813DB92\n\
-_0813DB86:\n\
- ldrh r1, [r4, 0x3C]\n\
- movs r0, 0x3\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0813DB94\n\
- adds r0, r2, 0x1\n\
-_0813DB92:\n\
- strh r0, [r4, 0x34]\n\
-_0813DB94:\n\
- add sp, 0x4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
-}
-#endif
static void sub_813DB9C(struct Sprite *sprite)
{
diff --git a/src/scene/intro_credits_graphics.c b/src/intro_credits_graphics.c
index 7f6765ef6..73210c5d9 100644
--- a/src/scene/intro_credits_graphics.c
+++ b/src/intro_credits_graphics.c
@@ -436,161 +436,49 @@ u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d)
return taskId;
}
-#ifdef NONMATCHING
void sub_8148F3C(u8 taskId)
{
- register u32 r4 asm("r4");
+ s16 deltaBG1HOFS;
+ s16 deltaBG2HOFS;
+ s16 deltaBG3HOFS;
s32 r2;
- r4 = (u16)gTasks[taskId].data[1] << 16;
- if (r4 != 0)
+ deltaBG1HOFS = gTasks[taskId].data[1];
+ if (deltaBG1HOFS != 0)
{
- r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3] - (r4 >> 12);
+ r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3];
+ r2 -= 16 * (u16)deltaBG1HOFS;
gTasks[taskId].data[2] = r2 >> 16;
gTasks[taskId].data[3] = r2;
REG_BG1HOFS = gTasks[taskId].data[2];
- REG_BG1VOFS = gUnknown_0203935A + gUnknown_02039358;
+ REG_BG1VOFS = gUnknown_02039358 + gUnknown_0203935A;
}
- r4 = (u16)gTasks[taskId].data[4] << 16;
- if (r4 != 0)
+ deltaBG2HOFS = gTasks[taskId].data[4];
+ if (deltaBG2HOFS != 0)
{
- r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6] - (r4 >> 12);
+ r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6];
+ r2 -= 16 * (u16)deltaBG2HOFS;
gTasks[taskId].data[5] = r2 >> 16;
- gTasks[taskId].data[3] = r2;
+ gTasks[taskId].data[6] = r2;
REG_BG2HOFS = gTasks[taskId].data[5];
if (gTasks[taskId].data[0] != 0)
- REG_BG2VOFS = gUnknown_0203935A + gUnknown_02039358;
+ REG_BG2VOFS = gUnknown_02039358 + gUnknown_0203935A;
else
REG_BG2VOFS = gUnknown_02039358;
}
- r4 = (u16)gTasks[taskId].data[7] << 16;
- if (r4 != 0)
+ deltaBG3HOFS = gTasks[taskId].data[7];
+ if (deltaBG3HOFS != 0)
{
- r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9] - (r4 >> 12);;
+ r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9];
+ r2 -= 16 * (u16)deltaBG3HOFS;
gTasks[taskId].data[8] = r2 >> 16;
gTasks[taskId].data[9] = r2;
REG_BG3HOFS = gTasks[taskId].data[8];
REG_BG3VOFS = gUnknown_02039358;
}
}
-#else
-__attribute__((naked))
-void sub_8148F3C(u8 taskId)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r1, _08148FB4 @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r3, r0, r1\n\
- ldrh r0, [r3, 0xA]\n\
- lsls r4, r0, 16\n\
- adds r6, r1, 0\n\
- cmp r4, 0\n\
- beq _08148F7C\n\
- movs r1, 0xC\n\
- ldrsh r0, [r3, r1]\n\
- lsls r0, 16\n\
- ldrh r1, [r3, 0xE]\n\
- adds r2, r0, r1\n\
- lsrs r0, r4, 12\n\
- subs r2, r0\n\
- asrs r1, r2, 16\n\
- strh r1, [r3, 0xC]\n\
- strh r2, [r3, 0xE]\n\
- ldr r0, _08148FB8 @ =REG_BG1HOFS\n\
- strh r1, [r0]\n\
- ldr r2, _08148FBC @ =REG_BG1VOFS\n\
- ldr r1, _08148FC0 @ =gUnknown_02039358\n\
- ldr r0, _08148FC4 @ =gUnknown_0203935A\n\
- ldrh r0, [r0]\n\
- ldrh r1, [r1]\n\
- adds r0, r1\n\
- strh r0, [r2]\n\
-_08148F7C:\n\
- ldrh r0, [r3, 0x10]\n\
- lsls r4, r0, 16\n\
- cmp r4, 0\n\
- beq _08148FD8\n\
- movs r1, 0x12\n\
- ldrsh r0, [r3, r1]\n\
- lsls r0, 16\n\
- ldrh r1, [r3, 0x14]\n\
- adds r2, r0, r1\n\
- lsrs r0, r4, 12\n\
- subs r2, r0\n\
- asrs r1, r2, 16\n\
- strh r1, [r3, 0x12]\n\
- strh r2, [r3, 0x14]\n\
- ldr r0, _08148FC8 @ =REG_BG2HOFS\n\
- strh r1, [r0]\n\
- movs r1, 0x8\n\
- ldrsh r0, [r3, r1]\n\
- cmp r0, 0\n\
- beq _08148FD0\n\
- ldr r2, _08148FCC @ =REG_BG2VOFS\n\
- ldr r1, _08148FC0 @ =gUnknown_02039358\n\
- ldr r0, _08148FC4 @ =gUnknown_0203935A\n\
- ldrh r0, [r0]\n\
- ldrh r1, [r1]\n\
- adds r0, r1\n\
- strh r0, [r2]\n\
- b _08148FD8\n\
- .align 2, 0\n\
-_08148FB4: .4byte gTasks\n\
-_08148FB8: .4byte REG_BG1HOFS\n\
-_08148FBC: .4byte REG_BG1VOFS\n\
-_08148FC0: .4byte gUnknown_02039358\n\
-_08148FC4: .4byte gUnknown_0203935A\n\
-_08148FC8: .4byte REG_BG2HOFS\n\
-_08148FCC: .4byte REG_BG2VOFS\n\
-_08148FD0:\n\
- ldr r0, _08149010 @ =REG_BG2VOFS\n\
- ldr r1, _08149014 @ =gUnknown_02039358\n\
- ldrh r1, [r1]\n\
- strh r1, [r0]\n\
-_08148FD8:\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r3, r0, r6\n\
- ldrh r0, [r3, 0x16]\n\
- lsls r4, r0, 16\n\
- cmp r4, 0\n\
- beq _08149008\n\
- movs r1, 0x18\n\
- ldrsh r0, [r3, r1]\n\
- lsls r0, 16\n\
- ldrh r1, [r3, 0x1A]\n\
- adds r2, r0, r1\n\
- lsrs r0, r4, 12\n\
- subs r2, r0\n\
- asrs r1, r2, 16\n\
- strh r1, [r3, 0x18]\n\
- strh r2, [r3, 0x1A]\n\
- ldr r0, _08149018 @ =REG_BG3HOFS\n\
- strh r1, [r0]\n\
- ldr r1, _0814901C @ =REG_BG3VOFS\n\
- ldr r0, _08149014 @ =gUnknown_02039358\n\
- ldrh r0, [r0]\n\
- strh r0, [r1]\n\
-_08149008:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08149010: .4byte REG_BG2VOFS\n\
-_08149014: .4byte gUnknown_02039358\n\
-_08149018: .4byte REG_BG3HOFS\n\
-_0814901C: .4byte REG_BG3VOFS\n\
- .syntax divided\n");
-}
-#endif
void sub_8149020(u8 mode)
{
diff --git a/src/field/item.c b/src/item.c
index 6ff7a7cbe..41cbb7a1e 100644
--- a/src/field/item.c
+++ b/src/item.c
@@ -2,12 +2,32 @@
#include "constants/hold_effects.h"
#include "item.h"
#include "constants/items.h"
+#include "item_menu.h"
#include "item_use.h"
#include "berry.h"
#include "string_util.h"
#include "strings.h"
+struct Item
+{
+ u8 name[14];
+ u16 itemId;
+ u16 price;
+ u8 holdEffect;
+ u8 holdEffectParam;
+ const u8 *description;
+ u8 importance;
+ u8 unk19;
+ u8 pocket;
+ u8 type;
+ ItemUseFunc fieldUseFunc;
+ u8 battleUsage;
+ ItemUseFunc battleUseFunc;
+ u8 secondaryId;
+};
+
extern u8 gUnknown_02038560;
+extern struct BagPocket gBagPockets[NUM_BAG_POCKETS];
// These constants are used in gItems
enum
@@ -30,11 +50,11 @@ enum
};
#if ENGLISH
-#include "../data/item_descriptions_en.h"
-#include "../data/items_en.h"
+#include "data/item_descriptions_en.h"
+#include "data/items_en.h"
#elif GERMAN
-#include "../data/item_descriptions_de.h"
-#include "../data/items_de.h"
+#include "data/item_descriptions_de.h"
+#include "data/items_de.h"
#endif
static void CompactPCItems(void);
@@ -47,7 +67,9 @@ void CopyItemName(u16 itemId, u8 *string)
StringAppend(string, gOtherText_Berry2);
}
else
- StringCopy(string, ItemId_GetItem(itemId)->name);
+ {
+ StringCopy(string, ItemId_GetName(itemId));
+ }
}
//Unreferenced
@@ -151,7 +173,7 @@ bool8 CheckBagHasSpace(u16 itemId, u16 count)
// This function matches if gBagPockets is declared non-const,
// but it should be fixed anyway.
-#ifdef NONMATCHING
+//#ifdef NONMATCHING
bool8 AddBagItem(u16 itemId, u16 count)
{
u8 i;
@@ -216,158 +238,158 @@ bool8 AddBagItem(u16 itemId, u16 count)
memcpy(gBagPockets[pocket].itemSlots, newItems, gBagPockets[pocket].capacity * sizeof(struct ItemSlot));
return TRUE;
}
-#else
-__attribute__((naked))
-bool8 AddBagItem(u16 itemId, u16 count)
-{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x100\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- lsls r1, 16\n\
- lsrs r4, r1, 16\n\
- bl ItemId_GetPocket\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080A9510\n\
- mov r0, r8\n\
- bl ItemId_GetPocket\n\
- subs r0, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- ldr r1, _080A94F8 @ =gBagPockets\n\
- lsls r0, r6, 3\n\
- adds r5, r0, r1\n\
- ldr r1, [r5]\n\
- ldrb r2, [r5, 0x4]\n\
- lsls r2, 2\n\
- mov r0, sp\n\
- bl memcpy\n\
- ldr r7, _080A94FC @ =0x000003e7\n\
- cmp r6, 0x3\n\
- beq _080A9468\n\
- movs r7, 0x63\n\
-_080A9468:\n\
- movs r1, 0\n\
- ldrb r0, [r5, 0x4]\n\
- cmp r1, r0\n\
- bcs _080A94B2\n\
- subs r0, r6, 0x2\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r12, r0\n\
-_080A9478:\n\
- lsls r0, r1, 2\n\
- mov r2, sp\n\
- adds r3, r2, r0\n\
- ldrh r0, [r3]\n\
- cmp r0, r8\n\
- bne _080A94A6\n\
- ldrh r2, [r3, 0x2]\n\
- adds r0, r2, r4\n\
- cmp r0, r7\n\
- ble _080A9500\n\
- mov r0, r12\n\
- cmp r0, 0x1\n\
- bls _080A9510\n\
- subs r0, r7, r2\n\
- subs r0, r4, r0\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- strh r7, [r3, 0x2]\n\
- ldr r2, _080A94F8 @ =gBagPockets\n\
- mov r9, r2\n\
- lsls r3, r6, 3\n\
- cmp r4, 0\n\
- beq _080A9516\n\
-_080A94A6:\n\
- adds r0, r1, 0x1\n\
- lsls r0, 24\n\
- lsrs r1, r0, 24\n\
- ldrb r0, [r5, 0x4]\n\
- cmp r1, r0\n\
- bcc _080A9478\n\
-_080A94B2:\n\
- ldr r2, _080A94F8 @ =gBagPockets\n\
- mov r9, r2\n\
- lsls r3, r6, 3\n\
- cmp r4, 0\n\
- beq _080A9516\n\
- movs r1, 0\n\
- adds r0, r3, r2\n\
- ldrb r0, [r0, 0x4]\n\
- cmp r1, r0\n\
- bcs _080A94F2\n\
- mov r6, r9\n\
- adds r5, r3, r6\n\
-_080A94CA:\n\
- lsls r0, r1, 2\n\
- mov r6, sp\n\
- adds r2, r6, r0\n\
- ldrh r0, [r2]\n\
- cmp r0, 0\n\
- bne _080A94E6\n\
- mov r0, r8\n\
- strh r0, [r2]\n\
- cmp r4, r7\n\
- bls _080A9514\n\
- subs r0, r4, r7\n\
- lsls r0, 16\n\
- lsrs r4, r0, 16\n\
- strh r7, [r2, 0x2]\n\
-_080A94E6:\n\
- adds r0, r1, 0x1\n\
- lsls r0, 24\n\
- lsrs r1, r0, 24\n\
- ldrb r2, [r5, 0x4]\n\
- cmp r1, r2\n\
- bcc _080A94CA\n\
-_080A94F2:\n\
- cmp r4, 0\n\
- beq _080A9516\n\
- b _080A9510\n\
- .align 2, 0\n\
-_080A94F8: .4byte gBagPockets\n\
-_080A94FC: .4byte 0x000003e7\n\
-_080A9500:\n\
- strh r0, [r3, 0x2]\n\
- ldr r0, _080A950C @ =gBagPockets\n\
- lsls r1, r6, 3\n\
- adds r1, r0\n\
- b _080A951A\n\
- .align 2, 0\n\
-_080A950C: .4byte gBagPockets\n\
-_080A9510:\n\
- movs r0, 0\n\
- b _080A9528\n\
-_080A9514:\n\
- strh r4, [r2, 0x2]\n\
-_080A9516:\n\
- mov r6, r9\n\
- adds r1, r3, r6\n\
-_080A951A:\n\
- ldr r0, [r1]\n\
- ldrb r2, [r1, 0x4]\n\
- lsls r2, 2\n\
- mov r1, sp\n\
- bl memcpy\n\
- movs r0, 0x1\n\
-_080A9528:\n\
- add sp, 0x100\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
-}
-#endif
+//#else
+//__attribute__((naked))
+//bool8 AddBagItem(u16 itemId, u16 count)
+//{
+// asm(".syntax unified\n\
+// push {r4-r7,lr}\n\
+// mov r7, r9\n\
+// mov r6, r8\n\
+// push {r6,r7}\n\
+// sub sp, 0x100\n\
+// lsls r0, 16\n\
+// lsrs r0, 16\n\
+// mov r8, r0\n\
+// lsls r1, 16\n\
+// lsrs r4, r1, 16\n\
+// bl ItemId_GetPocket\n\
+// lsls r0, 24\n\
+// cmp r0, 0\n\
+// beq _080A9510\n\
+// mov r0, r8\n\
+// bl ItemId_GetPocket\n\
+// subs r0, 0x1\n\
+// lsls r0, 24\n\
+// lsrs r6, r0, 24\n\
+// ldr r1, _080A94F8 @ =gBagPockets\n\
+// lsls r0, r6, 3\n\
+// adds r5, r0, r1\n\
+// ldr r1, [r5]\n\
+// ldrb r2, [r5, 0x4]\n\
+// lsls r2, 2\n\
+// mov r0, sp\n\
+// bl memcpy\n\
+// ldr r7, _080A94FC @ =0x000003e7\n\
+// cmp r6, 0x3\n\
+// beq _080A9468\n\
+// movs r7, 0x63\n\
+//_080A9468:\n\
+// movs r1, 0\n\
+// ldrb r0, [r5, 0x4]\n\
+// cmp r1, r0\n\
+// bcs _080A94B2\n\
+// subs r0, r6, 0x2\n\
+// lsls r0, 24\n\
+// lsrs r0, 24\n\
+// mov r12, r0\n\
+//_080A9478:\n\
+// lsls r0, r1, 2\n\
+// mov r2, sp\n\
+// adds r3, r2, r0\n\
+// ldrh r0, [r3]\n\
+// cmp r0, r8\n\
+// bne _080A94A6\n\
+// ldrh r2, [r3, 0x2]\n\
+// adds r0, r2, r4\n\
+// cmp r0, r7\n\
+// ble _080A9500\n\
+// mov r0, r12\n\
+// cmp r0, 0x1\n\
+// bls _080A9510\n\
+// subs r0, r7, r2\n\
+// subs r0, r4, r0\n\
+// lsls r0, 16\n\
+// lsrs r4, r0, 16\n\
+// strh r7, [r3, 0x2]\n\
+// ldr r2, _080A94F8 @ =gBagPockets\n\
+// mov r9, r2\n\
+// lsls r3, r6, 3\n\
+// cmp r4, 0\n\
+// beq _080A9516\n\
+//_080A94A6:\n\
+// adds r0, r1, 0x1\n\
+// lsls r0, 24\n\
+// lsrs r1, r0, 24\n\
+// ldrb r0, [r5, 0x4]\n\
+// cmp r1, r0\n\
+// bcc _080A9478\n\
+//_080A94B2:\n\
+// ldr r2, _080A94F8 @ =gBagPockets\n\
+// mov r9, r2\n\
+// lsls r3, r6, 3\n\
+// cmp r4, 0\n\
+// beq _080A9516\n\
+// movs r1, 0\n\
+// adds r0, r3, r2\n\
+// ldrb r0, [r0, 0x4]\n\
+// cmp r1, r0\n\
+// bcs _080A94F2\n\
+// mov r6, r9\n\
+// adds r5, r3, r6\n\
+//_080A94CA:\n\
+// lsls r0, r1, 2\n\
+// mov r6, sp\n\
+// adds r2, r6, r0\n\
+// ldrh r0, [r2]\n\
+// cmp r0, 0\n\
+// bne _080A94E6\n\
+// mov r0, r8\n\
+// strh r0, [r2]\n\
+// cmp r4, r7\n\
+// bls _080A9514\n\
+// subs r0, r4, r7\n\
+// lsls r0, 16\n\
+// lsrs r4, r0, 16\n\
+// strh r7, [r2, 0x2]\n\
+//_080A94E6:\n\
+// adds r0, r1, 0x1\n\
+// lsls r0, 24\n\
+// lsrs r1, r0, 24\n\
+// ldrb r2, [r5, 0x4]\n\
+// cmp r1, r2\n\
+// bcc _080A94CA\n\
+//_080A94F2:\n\
+// cmp r4, 0\n\
+// beq _080A9516\n\
+// b _080A9510\n\
+// .align 2, 0\n\
+//_080A94F8: .4byte gBagPockets\n\
+//_080A94FC: .4byte 0x000003e7\n\
+//_080A9500:\n\
+// strh r0, [r3, 0x2]\n\
+// ldr r0, _080A950C @ =gBagPockets\n\
+// lsls r1, r6, 3\n\
+// adds r1, r0\n\
+// b _080A951A\n\
+// .align 2, 0\n\
+//_080A950C: .4byte gBagPockets\n\
+//_080A9510:\n\
+// movs r0, 0\n\
+// b _080A9528\n\
+//_080A9514:\n\
+// strh r4, [r2, 0x2]\n\
+//_080A9516:\n\
+// mov r6, r9\n\
+// adds r1, r3, r6\n\
+//_080A951A:\n\
+// ldr r0, [r1]\n\
+// ldrb r2, [r1, 0x4]\n\
+// lsls r2, 2\n\
+// mov r1, sp\n\
+// bl memcpy\n\
+// movs r0, 0x1\n\
+//_080A9528:\n\
+// add sp, 0x100\n\
+// pop {r3,r4}\n\
+// mov r8, r3\n\
+// mov r9, r4\n\
+// pop {r4-r7}\n\
+// pop {r1}\n\
+// bx r1\n\
+// .syntax divided\n");
+//}
+//#endif
bool8 RemoveBagItem(u16 itemId, u16 count)
{
@@ -577,9 +599,9 @@ static u16 SanitizeItemId(u16 itemId)
return itemId;
}
-const struct Item *ItemId_GetItem(u16 itemId)
+const u8 *ItemId_GetName(u16 itemId)
{
- return &gItems[SanitizeItemId(itemId)];
+ return gItems[SanitizeItemId(itemId)].name;
}
u16 ItemId_GetId(u16 itemId)
@@ -638,6 +660,7 @@ u8 ItemId_GetImportance(u16 itemId)
return gItems[SanitizeItemId(itemId)].importance;
}
+// unused
u8 ItemId_GetUnknownValue(u16 itemId)
{
return gItems[SanitizeItemId(itemId)].unk19;
diff --git a/src/field/item_menu.c b/src/item_menu.c
index 959eb09ae..32b14e021 100644
--- a/src/field/item_menu.c
+++ b/src/item_menu.c
@@ -4,7 +4,7 @@
#include "data2.h"
#include "decompress.h"
#include "field_effect.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "graphics.h"
#include "item.h"
@@ -158,6 +158,9 @@ extern struct PocketScrollState gBagPocketScrollStates[];
extern struct ItemSlot *gCurrentBagPocketItemSlots; // selected pocket item slots
extern const u8 Event_NoRegisteredItem[];
+// TODO: decompile the debug code so we can use static in this file
+#define static
+
extern const struct CompressedSpriteSheet sMaleBagSpriteSheet;
extern const struct CompressedSpriteSheet sFemaleBagSpriteSheet;
extern const struct CompressedSpritePalette sBagSpritePalette;
@@ -492,6 +495,10 @@ static bool8 SetupBagMultistep(void)
sub_80A770C();
sub_80A7828();
sub_80A78B8();
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0xF5E0), 0x8000, (void *)(VRAM + 0xF800), 0);
+#endif
return TRUE;
}
return FALSE;
@@ -622,6 +629,45 @@ void ClearBag(void)
ResetBagScrollPositions();
}
+#if DEBUG
+
+const struct ItemSlot gUnknown_Debug_083EBC68[60] =
+{
+ {ITEM_POKE_BALL, 10},
+ {ITEM_ULTRA_BALL, 15},
+ {ITEM_GREAT_BALL, 20},
+ {ITEM_MASTER_BALL, 25},
+ {ITEM_ACRO_BIKE, 1 },
+ {ITEM_OLD_ROD, 1 },
+ {ITEM_GOOD_ROD, 1 },
+ {ITEM_SUPER_ROD, 1 },
+ {ITEM_POKEBLOCK_CASE, 1 },
+ {ITEM_WAILMER_PAIL, 1 },
+ {ITEM_ITEMFINDER, 1 },
+ {ITEM_NONE, 1 },
+};
+
+void debug_sub_80A3714(void)
+{
+ u16 arr[5];
+ u16 i;
+
+ for (i = 0; i < 5; i++)
+ arr[i] = 0;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_Debug_083EBC68); i++)
+ {
+ u16 pocket;
+
+ if (gUnknown_Debug_083EBC68[i].itemId == ITEM_NONE)
+ break;
+ pocket = ItemId_GetPocket(gUnknown_Debug_083EBC68[i].itemId) - 1;
+ gBagPockets[pocket].itemSlots[arr[pocket]] = gUnknown_Debug_083EBC68[i];
+ arr[pocket]++;
+ }
+}
+
+#endif
+
static void sub_80A3740(void)
{
const u16 colors[2] = {RGB(14, 15, 16), RGB_WHITE};
@@ -1133,7 +1179,7 @@ static void sub_80A4380(u16 a, int b, int c, int d)
r5 = i * 2 + 2;
text = gStringVar1;
text = sub_80A425C(a, text, i);
- text = sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x66, 0);
+ text = sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x66, 0);
*text++ = CHAR_MULT_SIGN;
sub_8072C14(text, gCurrentBagPocketItemSlots[r4].quantity, 0x78, 1);
Menu_PrintText(gStringVar1, 14, r5);
@@ -1157,9 +1203,9 @@ static void sub_80A444C(u16 a, int b, int c, int d)
text = gStringVar1;
text = sub_80A425C(a, text, i);
#if ENGLISH
- sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x60, 0);
+ sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x60, 0);
#else
- sub_8072C74(text, ItemId_GetItem(gCurrentBagPocketItemSlots[r4].itemId)->name, 0x63, 0);
+ sub_8072C74(text, ItemId_GetName(gCurrentBagPocketItemSlots[r4].itemId), 0x63, 0);
#endif
Menu_PrintText(gStringVar1, 14, r5);
if (gUnknown_02038558 != 0)
@@ -3566,6 +3612,10 @@ static void sub_80A740C(void)
sub_80A75E4();
sub_80A7768();
sub_80A7420();
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 1, 2, 0);
+#endif
}
static void sub_80A7420(void)
diff --git a/src/field/item_use.c b/src/item_use.c
index 219ef5080..a0fbb13b2 100644
--- a/src/field/item_use.c
+++ b/src/item_use.c
@@ -8,7 +8,6 @@
#include "event_data.h"
#include "field_effect.h"
#include "field_fadetransition.h"
-#include "field_map_obj_helpers.h"
#include "field_player_avatar.h"
#include "field_weather.h"
#include "fieldmap.h"
diff --git a/src/field/landmark.c b/src/landmark.c
index 476821ec6..476821ec6 100644
--- a/src/field/landmark.c
+++ b/src/landmark.c
diff --git a/src/pokemon/learn_move.c b/src/learn_move.c
index 356a31b00..356a31b00 100644
--- a/src/pokemon/learn_move.c
+++ b/src/learn_move.c
diff --git a/src/libs/m4a_1.s b/src/libs/m4a_1.s
index be8b44488..8dbcf7efd 100644
--- a/src/libs/m4a_1.s
+++ b/src/libs/m4a_1.s
@@ -4,7 +4,11 @@
.syntax unified
- .lcomm gUnknown_030007B8, 0x770
+ .bss
+
+ .global gUnknown_030007B8
+gUnknown_030007B8:
+ .space 0x770
.text
diff --git a/src/engine/link.c b/src/link.c
index 33037b817..45807830a 100644
--- a/src/engine/link.c
+++ b/src/link.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "cable_club.h"
#include "link.h"
#include "battle.h"
#include "berry.h"
@@ -12,6 +13,7 @@
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
+#include "string_util.h"
#include "strings2.h"
#include "task.h"
#include "text.h"
@@ -43,7 +45,6 @@ extern u16 word_3004858;
extern void Blender_SetBankBerryData(u8 bank, u16 itemID);
static void InitLinkTestBG(u8, u8, u8, u8);
-void InitLinkTestBG_Unused(u8, u8, u8, u8);
void LinkTestScreen();
static void InitLocalLinkPlayer(void);
static void VBlankCB_LinkTest(void);
@@ -66,7 +67,6 @@ u32 sub_8007E40(void);
static void SetBlockReceivedFlag(u8);
static u16 LinkTestCalcBlockChecksum(void *, u16);
static void PrintHexDigit(u8, u8, u8);
-static void PrintHex(u32, u8, u8, u8);
static void LinkCB_RequestPlayerDataExchange(void);
static void Task_PrintTestData(u8);
bool8 sub_8008224(void);
@@ -79,7 +79,7 @@ static void sub_80084C8(void);
static void sub_80084F4(void);
static void CheckErrorStatus(void);
-static void CB2_PrintErrorMessage(void);
+void CB2_PrintErrorMessage(void);
static u8 IsSioMultiMaster(void);
static void DisableSerial(void);
static void EnableSerial(void);
@@ -145,6 +145,9 @@ void (*gLinkCallback)(void);
struct LinkPlayer gSavedLinkPlayers[MAX_LINK_PLAYERS];
u8 gShouldAdvanceLinkState;
u16 gLinkTestBlockChecksums[MAX_LINK_PLAYERS];
+#if DEBUG
+u8 gUnknown_Debug_30030E0;
+#endif
u8 gBlockRequestType;
u8 gLastSendQueueCount;
struct Link gLink;
@@ -156,11 +159,11 @@ u8 deUnkValue1;
u8 deUnkValue2;
#endif
-EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = {0};
-EWRAM_DATA bool8 gLinkTestDummyBool = {0};
-EWRAM_DATA u32 gFiller_20238B8 = {0};
-EWRAM_DATA u32 dword_20238BC = {0};
-EWRAM_DATA bool8 gLinkOpen = {0};
+EWRAM_DATA bool8 gLinkTestDebugValuesEnabled = 0;
+EWRAM_DATA bool8 gLinkTestDummyBool = 0;
+EWRAM_DATA u32 gFiller_20238B8 = 0;
+EWRAM_DATA u32 dword_20238BC = 0;
+EWRAM_DATA bool8 gLinkOpen = 0;
static const u16 sLinkTestDigitPalette[] = INCBIN_U16("graphics/interface/link_test_digits.gbapal");
static const u32 sLinkTestDigitTiles[] = INCBIN_U32("graphics/interface/link_test_digits.4bpp");
@@ -189,9 +192,9 @@ const struct BlockRequest sBlockRequestLookupTable[5] =
static const u8 sTestString[] = _("テストな");
-ALIGNED(4) static const u8 sMagic[] = "GameFreak inc.";
+const u8 sMagic[] = "GameFreak inc.";
-ALIGNED(4) static const u8 sEmptyString[] = _("");
+const u8 sEmptyString[] = _(" ");
void Task_DestroySelf(u8 taskId)
{
@@ -543,6 +546,9 @@ static void ProcessRecvCmds(u8 unusedParam)
else
{
SetBlockReceivedFlag(i);
+#if DEBUG
+ debug_sub_808B838(i);
+#endif
}
}
break;
@@ -952,7 +958,7 @@ static void PrintHexDigit(u8 tileNum, u8 x, u8 y)
tilemap[(32 * y) + x] = (gLinkTestBGInfo.paletteNum << 12) | (tileNum + 1);
}
-static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits)
+void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits)
{
u8 buffer[16];
s32 i;
@@ -970,6 +976,54 @@ static void PrintHex(u32 num, u8 x, u8 y, u8 maxDigits)
}
}
+#if DEBUG
+
+EWRAM_DATA uintptr_t debugCharacterBase = 0;
+EWRAM_DATA uintptr_t unk_20238C8 = 0;
+EWRAM_DATA u16 *debugTileMap = NULL;
+EWRAM_DATA u32 unk_20238D0 = 0;
+
+void debug_sub_8008218(u16 *buffer, u32 arg1, u16 *arg2, u32 arg3)
+{
+ CpuSet(sLinkTestDigitTiles, buffer, 272);
+ debugCharacterBase = (uintptr_t)buffer;
+ unk_20238C8 = (uintptr_t)arg1;
+ debugTileMap = arg2;
+ unk_20238D0 = arg3;
+}
+
+void debug_sub_8008264(u32 value, int left, int top, int d, int e)
+{
+ s32 i;
+ u32 buffer[8];
+
+ if (unk_20238D0 == e)
+ {
+ u32 *ptr;
+ u16 *tilemapDest;
+
+ if (d > 8)
+ d = 8;
+ ptr = buffer;
+ for (i = 0; i < d; i++)
+ {
+ *ptr++ = value & 0xF;
+ value >>= 4;
+ }
+
+ tilemapDest = (u16 *)debugTileMap + top * 0x20 + left;
+ ptr = buffer + d - 1;
+ for (i = 0; i < d; i++)
+ {
+ *tilemapDest = (debugCharacterBase - unk_20238C8) / 32 + *ptr + 1;
+ ptr--;
+ tilemapDest++;
+ }
+ }
+}
+
+#endif
+
static void LinkCB_RequestPlayerDataExchange(void)
{
// Only one request needs to be sent, so only the master sends it.
@@ -1248,14 +1302,33 @@ void CB2_LinkError(void)
SetMainCallback2(CB2_PrintErrorMessage);
}
-static void CB2_PrintErrorMessage(void)
+void CB2_PrintErrorMessage(void)
{
- u8 array[64] __attribute__((unused)); // unused
+ u8 array[32] __attribute__((unused)); // unused
+ u8 array2[32] __attribute__((unused)); // unused
switch (gMain.state)
{
case 0:
Menu_PrintTextPixelCoords(gMultiText_LinkError, 20, 56, 1);
+#if DEBUG
+ StringCopy(array, sColorCodes);
+
+ ConvertIntToHexStringN(array2, sErrorLinkStatus, STR_CONV_MODE_LEADING_ZEROS, 8);
+ StringAppend(array, array2);
+
+ StringAppend(array, sEmptyString);
+
+ ConvertIntToHexStringN(array2, sErrorLastSendQueueCount, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(array, array2);
+
+ StringAppend(array, sEmptyString);
+
+ ConvertIntToHexStringN(array2, sErrorLastRecvQueueCount, STR_CONV_MODE_LEADING_ZEROS, 2);
+ StringAppend(array, array2);
+
+ Menu_PrintText(array, 2, 15);
+#endif
break;
case 30:
case 60:
diff --git a/src/engine/load_save.c b/src/load_save.c
index 8424b1121..8424b1121 100644
--- a/src/engine/load_save.c
+++ b/src/load_save.c
diff --git a/src/field/lottery_corner.c b/src/lottery_corner.c
index 03de26054..03de26054 100644
--- a/src/field/lottery_corner.c
+++ b/src/lottery_corner.c
diff --git a/src/mail.c b/src/mail.c
new file mode 100644
index 000000000..4497c98fb
--- /dev/null
+++ b/src/mail.c
@@ -0,0 +1,1159 @@
+#include "global.h"
+#include "mail.h"
+#include "data2.h"
+#include "easy_chat.h"
+#include "constants/items.h"
+#include "constants/species.h"
+#include "field_fadetransition.h"
+#include "graphics.h"
+#include "mail_data.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "name_string_util.h"
+#include "palette.h"
+#include "pokemon_icon.h"
+#include "overworld.h"
+#include "script.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "strings2.h"
+#include "task.h"
+#include "text.h"
+#include "scanline_effect.h"
+#include "ewram.h"
+
+extern u8 (*gMenuCallback)(void);
+
+struct UnkMailStruct
+{
+ u8 unk_0_0:2;
+ u8 unk_0_2:2;
+ u8 unk_0_4:4;
+};
+
+struct MailLayout
+{
+ u8 var0;
+ u8 var1;
+ u8 var2;
+ u8 var3_0:4;
+ u8 var3_4:4;
+ const struct UnkMailStruct *var4;
+};
+
+struct Unk2000000
+{
+ /* 0x00*/ u8 words[8][27];
+ /* 0xD8*/ u8 varD8[20];
+ /* 0xEC*/ MainCallback varEC;
+ /* 0xF0*/ MainCallback varF0;
+ /* 0xF4*/ struct MailStruct *varF4;
+ /* 0xF8*/ u8 varF8;
+ /* 0xF9*/ u8 varF9;
+ /* 0xFA*/ u8 varFA;
+ /* 0xFB*/ u8 varFB;
+ /* 0xFC*/ u8 varFC;
+ u8 padFD[1];
+ /* 0xFE*/ u8 varFE;
+ /* 0xFF*/ u8 varFF;
+ /*0x100*/ u8 var100;
+ u8 pad101[3];
+ /*0x104*/ MainCallback var104;
+ /*0x108*/ MainCallback var108;
+ /*0x10C*/ const struct MailLayout *var10C;
+};
+
+struct MailGraphics
+{
+ const u16 *palette;
+ const u8 *tiles;
+ const u8 *tileMap;
+ u16 var0C;
+ u16 var0E;
+ u16 color10;
+ u16 color12;
+};
+
+const u16 gUnknown_083E562C[][2] =
+{
+ {0x6ACD, 0x51A5},
+ {0x45FC, 0x38D4},
+};
+
+const struct MailGraphics gMailGraphicsTable[] =
+{
+ {
+ .palette = gMailPalette_Orange,
+ .tiles = gMailTiles_Orange,
+ .tileMap = gMailTilemap_Orange,
+ .var0C = 0x2C0,
+ .var0E = 0,
+ .color10 = 0x294A,
+ .color12 = 0x6739,
+ },
+ {
+ .palette = gMailPalette_Harbor,
+ .tiles = gMailTiles_Harbor,
+ .tileMap = gMailTilemap_Harbor,
+ .var0C = 0x2E0,
+ .var0E = 0,
+ .color10 = 0x7FFF,
+ .color12 = 0x4631,
+ },
+ {
+ .palette = gMailPalette_Glitter,
+ .tiles = gMailTiles_Glitter,
+ .tileMap = gMailTilemap_Glitter,
+ .var0C = 0x400,
+ .var0E = 0,
+ .color10 = 0x294A,
+ .color12 = 0x6739,
+ },
+ {
+ .palette = gMailPalette_Mech,
+ .tiles = gMailTiles_Mech,
+ .tileMap = gMailTilemap_Mech,
+ .var0C = 0x1E0,
+ .var0E = 0,
+ .color10 = 0x7FFF,
+ .color12 = 0x4631,
+ },
+ {
+ .palette = gMailPalette_Wood,
+ .tiles = gMailTiles_Wood,
+ .tileMap = gMailTilemap_Wood,
+ .var0C = 0x2E0,
+ .var0E = 0,
+ .color10 = 0x7FFF,
+ .color12 = 0x4631,
+ },
+ {
+ .palette = gMailPalette_Wave,
+ .tiles = gMailTiles_Wave,
+ .tileMap = gMailTilemap_Wave,
+ .var0C = 0x300,
+ .var0E = 0,
+ .color10 = 0x294A,
+ .color12 = 0x6739,
+ },
+ {
+ .palette = gMailPalette_Bead,
+ .tiles = gMailTiles_Bead,
+ .tileMap = gMailTilemap_Bead,
+ .var0C = 0x140,
+ .var0E = 0,
+ .color10 = 0x7FFF,
+ .color12 = 0x4631,
+ },
+ {
+ .palette = gMailPalette_Shadow,
+ .tiles = gMailTiles_Shadow,
+ .tileMap = gMailTilemap_Shadow,
+ .var0C = 0x300,
+ .var0E = 0,
+ .color10 = 0x7FFF,
+ .color12 = 0x4631,
+ },
+ {
+ .palette = gMailPalette_Tropic,
+ .tiles = gMailTiles_Tropic,
+ .tileMap = gMailTilemap_Tropic,
+ .var0C = 0x220,
+ .var0E = 0,
+ .color10 = 0x294A,
+ .color12 = 0x6739,
+ },
+ {
+ .palette = gMailPalette_Dream,
+ .tiles = gMailTiles_Dream,
+ .tileMap = gMailTilemap_Dream,
+ .var0C = 0x340,
+ .var0E = 0,
+ .color10 = 0x294A,
+ .color12 = 0x6739,
+ },
+ {
+ .palette = gMailPalette_Fab,
+ .tiles = gMailTiles_Fab,
+ .tileMap = gMailTilemap_Fab,
+ .var0C = 0x2A0,
+ .var0E = 0,
+ .color10 = 0x294A,
+ .color12 = 0x6739,
+ },
+ {
+ .palette = gMailPalette_Retro,
+ .tiles = gMailTiles_Retro,
+ .tileMap = gMailTilemap_Retro,
+ .var0C = 0x520,
+ .var0E = 0,
+ .color10 = 0x294A,
+ .color12 = 0x6739,
+ },
+};
+
+const struct UnkMailStruct Unknown_3E5724[] =
+{
+ {0, 3, 0},
+ {0, 3, 0},
+ {0, 3, 0},
+};
+
+const struct MailLayout gUnknown_083E5730[] =
+{
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+ {3, 16, 27, 4, 3, Unknown_3E5724},
+ {3, 15, 27, 4, 3, Unknown_3E5724},
+};
+
+const struct UnkMailStruct Unknown_3E5790[] =
+{
+ {0, 2, 0},
+ {0, 2, 0},
+ {0, 2, 0},
+ {0, 2, 0},
+ {0, 1, 0},
+};
+
+const struct MailLayout gUnknown_083E57A4[] =
+{
+ {5, 15, 15, 4, 3, Unknown_3E5790},
+ {5, 15, 15, 4, 3, Unknown_3E5790},
+ {5, 15, 16, 4, 3, Unknown_3E5790},
+ {5, 15, 15, 4, 3, Unknown_3E5790},
+ {5, 15, 15, 4, 3, Unknown_3E5790},
+ {5, 15, 16, 4, 3, Unknown_3E5790},
+ {5, 15, 16, 4, 3, Unknown_3E5790},
+ {5, 15, 15, 4, 3, Unknown_3E5790},
+ {5, 15, 15, 4, 3, Unknown_3E5790},
+ {5, 15, 15, 4, 3, Unknown_3E5790},
+ {5, 16, 15, 4, 3, Unknown_3E5790},
+ {5, 15, 15, 4, 3, Unknown_3E5790},
+};
+
+#if DEBUG
+
+const u8 Str_8411540[] = _("レイアウトを にほんごで ひょうじ?"); // Display using Japanese layout?
+const u8 Str_8411553[] = _("にほんご "); // Japanese
+const u8 Str_8411559[] = _("かいがい "); // Overseas
+
+const u8 *const _8411560[] =
+{
+ Str_8411553,
+ Str_8411559,
+};
+
+const u8 Str_8411568[] = _("イメージ タイプを えらんでね"); // Choose an image type
+const u8 Str_8411578[] = _("{STR_VAR_1}");
+const u8 Str_841157B[] = _("オレンジ "); // Orange
+const u8 Str_8411581[] = _("ハーバー "); // Harbor
+const u8 Str_8411587[] = _("キラキラ "); // Glitter
+const u8 Str_841158D[] = _("メカニカル"); // Mech
+const u8 Str_8411593[] = _("ウッディー"); // Wood
+const u8 Str_8411599[] = _("クロス  "); // Wave
+const u8 Str_841159F[] = _("トレジャー"); // Bead
+const u8 Str_84115A5[] = _("シャドウ "); // Shadow
+const u8 Str_84115AB[] = _("トロピカル"); // Tropic
+const u8 Str_84115B1[] = _("ドリーム "); // Dream
+const u8 Str_84115B7[] = _("ミラクル "); // Fab
+const u8 Str_84115BD[] = _("レトロ  "); // Retro
+
+const u8 *const _84115C4[] =
+{
+ Str_841157B,
+ Str_8411581,
+ Str_8411587,
+ Str_841158D,
+ Str_8411593,
+ Str_8411599,
+ Str_841159F,
+ Str_84115A5,
+ Str_84115AB,
+ Str_84115B1,
+ Str_84115B7,
+ Str_84115BD,
+};
+
+const u8 Str_84115F4[] = _("メールをみる"); // View Mail
+const u8 Str_84115FB[] = _("メールとうろく"); // Register Mail
+const u8 Str_8411603[] = _("もたせる"); // Give to Pokémon
+const u8 Str_8411608[] = _("メールをけす"); // Delete Mail
+
+#endif
+
+// XXX: what is this?
+static u8 *const sSharedMemPtr = gSharedMem;
+
+static u8 sub_80F8A28(void);
+static void sub_80F8D50(void);
+static void sub_80F8DA0(void);
+static void sub_80F8E80(void);
+static void sub_80F8F18(void);
+static void sub_80F8F2C(void);
+static void sub_80F8F58(void);
+static void sub_80F8F78(void);
+static void sub_80F8FB4(void);
+
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+
+#if DEBUG
+static u8 gUnknown_Debug_0300079C;
+#endif
+
+void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
+{
+ u16 buffer[2];
+ u16 species;
+
+#if DEBUG
+ if (gUnknown_Debug_0300079C != 0)
+ {
+ ewram0_4.varFF = GAME_LANGUAGE;
+ ewram0_4.var100 = gSpecialVar_0x8004;
+ ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
+ ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
+ ewram0_4.varFA = gSpecialVar_0x8006;
+ }
+ else
+#endif
+ {
+ ewram0_4.varFF = GAME_LANGUAGE;
+ ewram0_4.var100 = 1;
+ ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
+ ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
+ if (IS_ITEM_MAIL(arg0->itemId))
+ {
+ ewram0_4.varFA = arg0->itemId - 0x79;
+ }
+ else
+ {
+ ewram0_4.varFA = 0;
+ arg2 = FALSE;
+ }
+ }
+
+ switch (ewram0_4.var100)
+ {
+ case 0:
+ default:
+ ewram0_4.var10C = &gUnknown_083E5730[ewram0_4.varFA];
+ break;
+ case 1:
+ ewram0_4.var10C = &gUnknown_083E57A4[ewram0_4.varFA];
+ break;
+ }
+
+ species = MailSpeciesToSpecies(arg0->species, buffer);
+ if (species >= 1 && species <= 411)
+ {
+ switch (ewram0_4.varFA)
+ {
+ case 6:
+ ewram0_4.varFB = 1;
+ break;
+ case 9:
+ ewram0_4.varFB = 2;
+ break;
+ default:
+ ewram0_4.varFB = 0;
+ break;
+ }
+ }
+ else
+ {
+ ewram0_4.varFB = 0;
+ }
+
+ ewram0_4.varF4 = arg0;
+ ewram0_4.varEC = arg1;
+ ewram0_4.varF8 = arg2;
+
+ SetMainCallback2(sub_80F8D50);
+}
+
+#define RETURN_UP_STATE break
+#define RETURN_SKIP_STATE return FALSE
+
+static u8 sub_80F8A28(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ ScanlineEffect_Stop();
+ REG_DISPCNT = 0;
+ RETURN_UP_STATE;
+
+ case 1: CpuFill16(0, (void *)OAM, OAM_SIZE);
+ RETURN_UP_STATE;
+
+ case 2:
+ ResetPaletteFade();
+ RETURN_UP_STATE;
+
+ case 3:
+ ResetTasks();
+ RETURN_UP_STATE;
+
+ case 4:
+ ResetSpriteData();
+ RETURN_UP_STATE;
+
+ case 5:
+ FreeAllSpritePalettes();
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ RETURN_UP_STATE;
+
+ case 6:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC);
+ RETURN_UP_STATE;
+
+ case 7:
+ MultistepInitMenuWindowBegin(&gWindowTemplate_81E6DFC);
+ RETURN_UP_STATE;
+
+ case 8:
+ if (MultistepInitMenuWindowContinue() == 0)
+ {
+ return FALSE;
+ }
+ RETURN_UP_STATE;
+
+ case 9:
+ Menu_EraseScreen();
+ RETURN_UP_STATE;
+
+ case 10: CpuFill16(1, (void *)(VRAM + 0x4800), 0x800);
+ RETURN_UP_STATE;
+
+ case 11:
+ LoadPalette(gMailGraphicsTable[ewram0_4.varFA].palette, 0, 16 * 2);
+ RETURN_UP_STATE;
+
+ case 12:
+ LZ77UnCompVram(gMailGraphicsTable[ewram0_4.varFA].tileMap, (void *)(VRAM + 0x4000));
+ RETURN_UP_STATE;
+
+ case 13:
+ LZ77UnCompVram(gMailGraphicsTable[ewram0_4.varFA].tiles, (void *)(VRAM));
+
+ gPlttBufferUnfaded[241] = gMailGraphicsTable[ewram0_4.varFA].color10;
+ gPlttBufferUnfaded[248] = gMailGraphicsTable[ewram0_4.varFA].color12;
+ gPlttBufferUnfaded[10] = gUnknown_083E562C[gSaveBlock2.playerGender][0];
+ gPlttBufferUnfaded[11] = gUnknown_083E562C[gSaveBlock2.playerGender][1];
+ RETURN_UP_STATE;
+
+ case 14:
+ if (ewram0_4.varF8 != 0)
+ {
+ sub_80F8DA0();
+ }
+ RETURN_UP_STATE;
+
+ case 15:
+ if (ewram0_4.varF8 != 0)
+ {
+ sub_80F8E80();
+ }
+
+ SetVBlankCallback(sub_80F8F18);
+ gPaletteFade.bufferTransferDisabled = 1;
+ RETURN_UP_STATE;
+
+ case 16:
+ {
+ u16 local1;
+
+ local1 = sub_809D4A8(ewram0_4.varF4->species);
+
+ switch (ewram0_4.varFB)
+ {
+ case 1:
+ sub_809D580(local1);
+ ewram0_4.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 96, 128, 0);
+ break;
+
+ case 2:
+ sub_809D580(local1);
+ ewram0_4.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 40, 128, 0);
+ break;
+ }
+ RETURN_UP_STATE;
+ }
+
+ case 17:
+ if (sub_8055870() != TRUE)
+ {
+ RETURN_UP_STATE;
+ }
+ RETURN_SKIP_STATE;
+
+ case 18:
+ REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x512;
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(8) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(9) | BGCNT_16COLOR | BGCNT_TXT256x256;
+ REG_BLDCNT = 0;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gPaletteFade.bufferTransferDisabled = 0;
+ ewram0_4.varF0 = sub_80F8F58;
+ return TRUE;
+
+ default:
+ return FALSE;
+ }
+
+ gMain.state += 1;
+ return FALSE;
+}
+
+static void sub_80F8D50(void)
+{
+ do
+ {
+ if (sub_80F8A28() == 1)
+ {
+ SetMainCallback2(sub_80F8F2C);
+ return;
+ }
+ } while (sub_80F9344() != 1);
+}
+
+static u8 *sub_80F8D7C(u8 *dest, u8 *src)
+{
+ u16 length;
+
+ StringCopy(dest, src);
+ SanitizeNameString(dest);
+
+ length = StringLength(dest);
+
+ return dest + length;
+}
+
+static void sub_80F8DA0(void)
+{
+ u16 i;
+ u8 r6;
+ u8 *ptr;
+
+ r6 = 0;
+ for (i = 0; i < ewram0_4.var10C->var0; i++)
+ {
+ ConvertEasyChatWordsToString(ewram0_4.words[i], &ewram0_4.varF4->words[r6], ewram0_4.var10C->var4[i].unk_0_2, 1);
+ r6 += ewram0_4.var10C->var4[i].unk_0_2;
+ }
+ ptr = ewram0_4.varD8;
+ if (ewram0_4.var100 == 0)
+ {
+ ptr = sub_80F8D7C(ptr, ewram0_4.varF4->playerName);
+ StringCopy(ptr, gOtherText_From);
+ ewram0_4.varF9 = ewram0_4.var10C->var2 - StringLength(ewram0_4.varD8);
+
+ }
+ else
+ {
+ ptr = StringCopy(ptr, gOtherText_From);
+ sub_80F8D7C(ptr, ewram0_4.varF4->playerName);
+ ewram0_4.varF9 = ewram0_4.var10C->var2;
+ }
+}
+
+static void sub_80F8E80(void)
+{
+ u16 pos;
+ u8 x;
+ u8 y = 0;
+
+ for (pos = 0; pos < ewram0_4.var10C->var0; pos++)
+ {
+ if (ewram0_4.words[pos][0] == 0xFF)
+ {
+ continue;
+ }
+
+ if (ewram0_4.words[pos][0] == 0x00)
+ {
+ continue;
+ }
+
+ x = ewram0_4.var10C->var4[pos].unk_0_4;
+ y += ewram0_4.var10C->var4[pos].unk_0_0;
+ Menu_PrintText(ewram0_4.words[pos], ewram0_4.var10C->var3_4 + x, ewram0_4.var10C->var3_0 + y);
+ y += 2;
+ }
+
+ Menu_PrintText(ewram0_4.varD8, ewram0_4.varF9, ewram0_4.var10C->var1);
+}
+
+static void sub_80F8F18(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_80F8F2C(void)
+{
+ if (ewram0_4.varFB != 0)
+ {
+ AnimateSprites();
+ BuildOamBuffer();
+ }
+
+ ewram0_4.varF0();
+}
+
+static void sub_80F8F58(void)
+{
+ u8 local0;
+
+ local0 = UpdatePaletteFade();
+ if (local0 == 0)
+ {
+ ewram0_4.varF0 = sub_80F8F78;
+ }
+}
+
+static void sub_80F8F78(void)
+{
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ ewram0_4.varF0 = sub_80F8FB4;
+ }
+}
+
+static void sub_80F8FB4(void)
+{
+ if (!UpdatePaletteFade())
+ {
+ SetMainCallback2(ewram0_4.varEC);
+ switch (ewram0_4.varFB)
+ {
+ case 2:
+ case 1:
+ sub_809D608(sub_809D4A8(ewram0_4.varF4->species));
+ sub_809D510(&gSprites[ewram0_4.varFC]);
+ break;
+ }
+#if !DEBUG
+ memset(&ewram0_4, 0, 0x110);
+#endif
+ ResetPaletteFade();
+ }
+}
+
+#if DEBUG
+
+void debug_sub_810CA7C(u8);
+void debug_sub_810CE1C(u8);
+void debug_sub_810D388(void);
+void debug_sub_810D340(void);
+
+void debug_sub_810C910(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ gUnknown_Debug_0300079C = 1;
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ if (gSaveBlock1.mail[gSpecialVar_0x8005].itemId == 0)
+ HandleReadMail(&gSaveBlock1.mail[gSpecialVar_0x8005], debug_sub_810D388, 0);
+ else
+ HandleReadMail(&gSaveBlock1.mail[gSpecialVar_0x8005], debug_sub_810D388, 1);
+ }
+}
+
+void debug_sub_810C990(u8 taskId)
+{
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_DOWN))
+ {
+ gSpecialVar_0x8006 = (gSpecialVar_0x8006 + 11) % 12;
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2);
+ }
+ else if (gMain.newKeys & (DPAD_UP | DPAD_RIGHT))
+ {
+ gSpecialVar_0x8006 = (gSpecialVar_0x8006 + 1) % 12;
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = debug_sub_810C910;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_8411540, 4, 15);
+ Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2);
+ gTasks[taskId].func = debug_sub_810CA7C;
+ }
+}
+
+void debug_sub_810CA7C(u8 taskId)
+{
+ if (gMain.newKeys & 0xF0)
+ {
+ gSpecialVar_0x8004 ^= 1;
+ Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ if (gMain.watchedKeysPressed)
+ {
+ gMain.watchedKeysPressed = FALSE;
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_8411540, 4, 15);
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_8411560[gSpecialVar_0x8004], 2, 2);
+ }
+ else
+ {
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(Str_8411568, 4, 15);
+ Menu_DrawStdWindowFrame(1, 1, 10, 4);
+ Menu_PrintText(_84115C4[gSpecialVar_0x8006], 2, 2);
+ gTasks[taskId].func = debug_sub_810C990;
+ }
+ }
+}
+
+void debug_sub_810CB50(u8 taskId)
+{
+ u8 sp0[] = _("{STR_VAR_1} {STR_VAR_2}");
+ u8 sp8[] = _("メール{STR_VAR_1} {STR_VAR_2}");
+ bool8 r2 = FALSE;
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 2, 1);
+ StringCopy(gStringVar2, gSpeciesNames[gTasks[taskId].data[0]]);
+ gSaveBlock1.mail[gSpecialVar_0x8005].species = gTasks[taskId].data[0];
+ StringExpandPlaceholders(gStringVar4, sp8);
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gStringVar4, 4, 15);
+ DestroyTask(taskId);
+ CreateTask(debug_sub_810CE1C, 0);
+ debug_sub_810D340();
+ return;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ DestroyTask(taskId);
+ Menu_EraseScreen();
+ CreateTask(debug_sub_810CE1C, 0);
+ debug_sub_810D340();
+ return;
+ }
+ else if (gMain.newKeys & (DPAD_LEFT | DPAD_DOWN))
+ {
+ gTasks[taskId].data[0] = (gTasks[taskId].data[0] + 0x19B) % 0x19C;
+ r2 = TRUE;
+ }
+ else if (gMain.newKeys & (DPAD_UP | DPAD_RIGHT))
+ {
+ gTasks[taskId].data[0] = (gTasks[taskId].data[0] + 1) % 0x19C;
+ r2 = TRUE;
+ }
+
+ if (r2)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[0], 2, 3);
+ StringCopy(gStringVar2, gSpeciesNames[gTasks[taskId].data[0]]);
+ StringExpandPlaceholders(gStringVar4, sp0);
+ Menu_DrawStdWindowFrame(0, 0, 12, 3);
+ Menu_PrintText(gStringVar4, 1, 1);
+ }
+}
+
+void debug_sub_810CCEC(u8 taskId)
+{
+ u8 string1[] = _("メール{STR_VAR_1}を だれに もたせる?");
+ u8 string2[] = _("000 {STR_VAR_1}");
+
+ ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 1, 1);
+ StringExpandPlaceholders(gStringVar4, string1);
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gStringVar4, 4, 15);
+
+ StringCopy(gStringVar1, gSpeciesNames[0]);
+ StringExpandPlaceholders(gStringVar4, string2);
+ Menu_DrawStdWindowFrame(0, 0, 12, 3);
+ Menu_PrintText(string2, 1, 1); // This probably should have been gStringVar4
+
+ gTasks[taskId].func = debug_sub_810CB50;
+}
+
+u8 debug_sub_810CD9C(void)
+{
+ CloseMenu();
+ ScriptContext1_Stop();
+ ScriptContext2_Enable();
+ gUnknown_Debug_0300079C = 0;
+ gSpecialVar_0x8004 = gSpecialVar_0x8005 = gSpecialVar_0x8006 = 0;
+ SetMainCallback2(debug_sub_810D388);
+ return 1;
+}
+
+void debug_sub_810CDE0(void)
+{
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+void debug_sub_810CDF0(void)
+{
+ gMain.watchedKeysPressed = 0;
+ gMain.watchedKeysMask = 0;
+ gFieldCallback = mapldr_default;
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+}
+
+void debug_sub_810CE1C(u8 taskId)
+{
+ if (gMenuCallback() == TRUE)
+ {
+ CloseMenu();
+ DestroyTask(taskId);
+ }
+}
+
+u8 debug_sub_810CE48(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ debug_sub_810D340();
+ return 0;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ gSpecialVar_0x8006 %= 12;
+ CreateTask(debug_sub_810CA7C, 0);
+ gMain.watchedKeysPressed = TRUE; // huh?
+ gMain.watchedKeysMask = 0;
+ return 1;
+ }
+}
+
+u8 debug_sub_810CEA4(void)
+{
+ if (!gPaletteFade.active)
+ {
+ gSpecialVar_0x8004 = 4;
+ sub_80E60D8();
+ return 1;
+ }
+ return 0;
+}
+
+u8 debug_sub_810CED0(void)
+{
+ u8 text[] = _("せいきの データが とうろくずみ です\n"
+ "しんき とうろく できません");
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ break;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ if (IS_ITEM_MAIL(gSaveBlock1.mail[input].itemId))
+ {
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(text, 4, 15);
+ }
+ else
+ {
+ gSaveBlock1.mail[gSpecialVar_0x8005].itemId = 0xFFFF;
+ StringCopy(gSaveBlock1.mail[gSpecialVar_0x8005].playerName, gSaveBlock2.playerName);
+ *(u32 *)gSaveBlock1.mail[gSpecialVar_0x8005].trainerId = *(u32 *)gSaveBlock2.playerTrainerId;
+ gMenuCallback = debug_sub_810CEA4;
+ return 0;
+ }
+ break;
+ }
+ debug_sub_810D340();
+ return 0;
+}
+
+u8 debug_sub_810CFA4(void)
+{
+ u8 text[] = _("せいきに とうろくされたメールデータは\n"
+ "へんこう できません");
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ debug_sub_810D340();
+ return 0;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ if (IS_ITEM_MAIL(gSaveBlock1.mail[input].itemId))
+ {
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(text, 4, 15);
+ debug_sub_810D340();
+ return 0;
+ }
+ else
+ {
+ CreateTask(debug_sub_810CCEC, 0);
+ return 1;
+ }
+ }
+}
+
+u8 debug_sub_810D030(void)
+{
+ const u8 text1[] = _("メール{STR_VAR_1} とうろく かいじょ");
+ const u8 text2[] = _("デバッグメニューから とうろくした\n"
+ "メール いがいは けせません");
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ Menu_EraseScreen();
+ debug_sub_810D340();
+ return 0;
+ case -2:
+ return 0;
+ default:
+ gSpecialVar_0x8005 = input;
+ if (gSaveBlock1.mail[gSpecialVar_0x8005].itemId != 0xFFFF
+ && gSaveBlock1.mail[gSpecialVar_0x8005].itemId != 0)
+ {
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(text2, 4, 15);
+ debug_sub_810D340();
+ return 0;
+ }
+ else
+ {
+ s8 i;
+
+ gSaveBlock1.mail[gSpecialVar_0x8005].itemId = 0;
+ gSaveBlock1.mail[gSpecialVar_0x8005].species = 0;
+ gSaveBlock1.mail[gSpecialVar_0x8005].playerName[0] = EOS;
+ *(u32 *)gSaveBlock1.mail[gSpecialVar_0x8005].trainerId = 0;
+ for (i = 0; i < 9; i++)
+ gSaveBlock1.mail[gSpecialVar_0x8005].words[i] = 0xFFFF;
+ ConvertIntToDecimalStringN(gStringVar1, gSpecialVar_0x8005, 1, 1);
+ StringExpandPlaceholders(gStringVar4, text1);
+ Menu_EraseScreen();
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gStringVar4, 4, 15);
+ debug_sub_810D340();
+ return 0;
+ }
+ }
+}
+
+void debug_sub_810D174(u8 a)
+{
+ u8 string[] = _("メール{STR_VAR_1} {STR_VAR_2} {STR_VAR_3}");
+ u8 buffer[9][20];
+ struct MenuAction menuActions[9];
+ u8 i;
+
+ for (i = 0; i < 9; i++)
+ {
+ ConvertIntToDecimalStringN(gStringVar1, i, 1, 1);
+ if (gSaveBlock1.mail[i].itemId == 0xFFFF)
+ {
+ ConvertIntToDecimalStringN(gStringVar2, 1, 1, 1);
+ }
+ else if (IS_ITEM_MAIL(gSaveBlock1.mail[i].itemId))
+ {
+ ConvertIntToDecimalStringN(gStringVar2, 2, 1, 1);
+ }
+ else
+ {
+ ConvertIntToDecimalStringN(gStringVar2, 0, 1, 1);
+ gSaveBlock1.mail[i].itemId = 0;
+ }
+ StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.mail[i].species]);
+ StringExpandPlaceholders(buffer[i], string);
+ menuActions[i].text = buffer[i];
+ menuActions[i].func = NULL;
+ }
+ Menu_DrawStdWindowFrame(0, 0, 16, 19);
+ Menu_PrintItems(2, 1, 9, menuActions);
+ InitMenu(0, 1, 1, 9, 0, 15);
+ switch (a)
+ {
+ case 0:
+ gMenuCallback = debug_sub_810CE48;
+ break;
+ case 1:
+ gMenuCallback = debug_sub_810CED0;
+ break;
+ case 2:
+ gMenuCallback = debug_sub_810CFA4;
+ break;
+ case 3:
+ gMenuCallback = debug_sub_810D030;
+ break;
+ }
+}
+
+u8 debug_sub_810D2F4(void)
+{
+ s8 input = Menu_ProcessInput();
+
+ switch (input)
+ {
+ case -1:
+ SetMainCallback2(debug_sub_810CDF0);
+ return 1;
+ case -2:
+ return 0;
+ }
+
+ switch (input)
+ {
+ case 0:
+ debug_sub_810D174(input);
+ return 0;
+ case 1:
+ debug_sub_810D174(input);
+ return 0;
+ case 2:
+ debug_sub_810D174(input);
+ return 0;
+ case 3:
+ debug_sub_810D174(input);
+ return 0;
+ }
+
+ return 1;
+}
+
+const struct MenuAction _84116BC[] =
+{
+ {Str_84115F4, NULL},
+ {Str_84115FB, NULL},
+ {Str_8411603, NULL},
+ {Str_8411608, NULL},
+};
+
+void debug_sub_810D340(void)
+{
+ Menu_DrawStdWindowFrame(0, 0, 9, 9);
+ Menu_PrintItems(2, 1, 4, _84116BC);
+ InitMenu(0, 1, 1, 4, 0, 8);
+ gMenuCallback = debug_sub_810D2F4;
+}
+
+void debug_sub_810D388(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ if (gUnknown_Debug_0300079C != 0)
+ {
+ gMain.state = 2;
+ gUnknown_Debug_0300079C = 0;
+ return;
+ }
+ else
+ {
+ ScanlineEffect_Stop();
+ ResetPaletteFade();
+ SetVBlankCallback(sub_80F8F18);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ }
+ break;
+ case 1:
+ if (UpdatePaletteFade())
+ return;
+ break;
+ case 2:
+ SetVBlankCallback(NULL);
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+ break;
+ case 3:
+ ResetSpriteData();
+ ResetTasks();
+ FreeAllSpritePalettes();
+ break;
+ case 4:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Menu_EraseScreen();
+ break;
+ case 5:
+ LoadPalette(gMailGraphicsTable[0].palette, 0, 32);
+ LZ77UnCompVram(gMailGraphicsTable[0].tiles, (void *)VRAM);
+ DmaFill16(3, 1, (void *)(VRAM + 0x4000), 0x500);
+ break;
+ case 6:
+ REG_BG0CNT = 0x9F08;
+ REG_BG1CNT = 0x0801;
+ REG_BLDCNT = 0;
+ REG_DISPCNT = 0x0340;
+ debug_sub_810D340();
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ SetVBlankCallback(sub_80F8F18);
+ break;
+ case 7:
+ if (!UpdatePaletteFade())
+ return;
+ break;
+ case 8:
+ CreateTask(debug_sub_810CE1C, 0);
+ SetMainCallback2(debug_sub_810CDE0);
+ break;
+ default:
+ return;
+ }
+ gMain.state++;
+}
+
+#endif
diff --git a/src/pokemon/mail_data.c b/src/mail_data.c
index 4249b9f48..4249b9f48 100644
--- a/src/pokemon/mail_data.c
+++ b/src/mail_data.c
diff --git a/src/engine/main.c b/src/main.c
index 54a443e80..54a443e80 100644
--- a/src/engine/main.c
+++ b/src/main.c
diff --git a/src/engine/main_menu.c b/src/main_menu.c
index 5a3f55b29..5a3f55b29 100644
--- a/src/engine/main_menu.c
+++ b/src/main_menu.c
diff --git a/src/field/map_name_popup.c b/src/map_name_popup.c
index 49a470cc1..49a470cc1 100644
--- a/src/field/map_name_popup.c
+++ b/src/map_name_popup.c
diff --git a/src/field/map_obj_lock.c b/src/map_obj_lock.c
index 954fcb446..3bd25dbdf 100644
--- a/src/field/map_obj_lock.c
+++ b/src/map_obj_lock.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "map_obj_lock.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "script_movement.h"
#include "task.h"
diff --git a/src/field/mauville_man.c b/src/mauville_man.c
index 0a841eed1..a68d5071d 100644
--- a/src/field/mauville_man.c
+++ b/src/mauville_man.c
@@ -250,7 +250,39 @@ void SetupMauvilleOldMan(void)
sub_80F83D0();
}
-static u8 GetCurrentMauvilleOldMan(void)
+#if DEBUG
+void debug_sub_810B32C(u8 a)
+{
+ u8 i;
+ u8 savedArr[8];
+
+ switch (a)
+ {
+ case 0:
+ SetupBard();
+ break;
+ case 1:
+ for (i = 0; i < 8; i++)
+ savedArr[i] = gSaveBlock1.unk2D8C[i];
+ SetupHipster();
+ for (i = 0; i < 8; i++)
+ gSaveBlock1.unk2D8C[i] = savedArr[i];
+ break;
+ case 2:
+ SetupTrader();
+ break;
+ case 3:
+ SetupStoryteller();
+ break;
+ case 4:
+ SetupGiddy();
+ break;
+ }
+ sub_80F83D0();
+}
+#endif
+
+u8 GetCurrentMauvilleOldMan(void)
{
struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common;
diff --git a/src/engine/menu.c b/src/menu.c
index 86e20d0eb..86e20d0eb 100644
--- a/src/engine/menu.c
+++ b/src/menu.c
diff --git a/src/engine/menu_cursor.c b/src/menu_cursor.c
index 35116d40b..f2eb31f16 100644
--- a/src/engine/menu_cursor.c
+++ b/src/menu_cursor.c
@@ -12,9 +12,9 @@ EWRAM_DATA static u8 gUnknown_0203A3D3 = 0;
EWRAM_DATA static u8 gUnknown_0203A3D4 = 0;
#if ENGLISH
-#include "../src/data/menu_cursor_en.h"
+#include "data/menu_cursor_en.h"
#elif GERMAN
-#include "../src/data/menu_cursor_de.h"
+#include "data/menu_cursor_de.h"
#endif // ENGLISH/GERMAN
void sub_814A590(void)
diff --git a/src/field/menu_helpers.c b/src/menu_helpers.c
index 388d98ec7..388d98ec7 100644
--- a/src/field/menu_helpers.c
+++ b/src/menu_helpers.c
diff --git a/src/field/metatile_behavior.c b/src/metatile_behavior.c
index d05ba0b89..d05ba0b89 100644
--- a/src/field/metatile_behavior.c
+++ b/src/metatile_behavior.c
diff --git a/src/pokemon/mon_markings.c b/src/mon_markings.c
index 66c82a706..dcdc54434 100644
--- a/src/pokemon/mon_markings.c
+++ b/src/mon_markings.c
@@ -5,6 +5,7 @@
#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
+#include "mon_markings.h"
#ifdef GERMAN
#define MENU_TEXT_SPRITE_X_OFFSET 24
@@ -12,25 +13,6 @@
#define MENU_TEXT_SPRITE_X_OFFSET 32
#endif
-struct PokemonMarkMenu
-{
- /*0x0000*/ u16 baseTileTag;
- /*0x0002*/ u16 basePaletteTag;
- /*0x0004*/ u8 markings; // bit flags
- /*0x0005*/ s8 cursorPos;
- /*0x0006*/ bool8 markingsArray[4];
- /*0x000A*/ u8 cursorBaseY;
- /*0x000B*/ bool8 spriteSheetLoadRequired;
- /*0x000C*/ struct Sprite *menuWindowSprites[2]; // upper and lower halves of menu window
- /*0x0014*/ struct Sprite *menuMarkingSprites[4];
- /*0x0024*/ struct Sprite *menuTextSprite;
- /*0x0028*/ const u8 *frameTiles;
- /*0x002C*/ const u16 *framePalette;
- /*0x0030*/ u8 menuWindowSpriteTiles[0x1000];
- /*0x1030*/ u8 filler1030[0x80];
- /*0x10B0*/ u8 tileLoadState;
-};
-
extern u8 gPokenavConditionMenuMisc_Gfx[];
extern u16 gUnknown_08E966B8[];
diff --git a/src/field/money.c b/src/money.c
index 3b7268dbc..3b7268dbc 100644
--- a/src/field/money.c
+++ b/src/money.c
diff --git a/src/engine/mystery_event_menu.c b/src/mystery_event_menu.c
index 8fad563e6..56801ff53 100644
--- a/src/engine/mystery_event_menu.c
+++ b/src/mystery_event_menu.c
@@ -13,6 +13,7 @@
#include "strings2.h"
#include "task.h"
#include "text.h"
+#include "title_screen.h"
#include "ewram.h"
static EWRAM_DATA u8 gUnknown_02039338 = 0;
@@ -338,3 +339,156 @@ static void CB2_MysteryEventMenu(void)
BuildOamBuffer();
UpdatePaletteFade();
}
+
+#if DEBUG
+
+static const u8 Str_843DA70[] = _("CARDーE emulation。。。");
+static const u8 Str_843DA84[] = _("LR: select A: send。");
+static const u8 Str_843DA98[] = _("sending。。。");
+static const u8 Str_843DAA3[] = _("completed。");
+
+extern const struct {const u8 *text; void (*func)();} gUnknown_Debug_842E2D0[];
+extern const u8 gUnknown_Debug_842E350;
+
+void debug_sub_815D1D8();
+
+void debug_sub_815D04C(u8 taskId)
+{
+ if (gTasks[taskId].data[0] == 0)
+ {
+ Menu_DrawStdWindowFrame(4, 4, 13, 7);
+ Menu_PrintText(gUnknown_Debug_842E2D0[gTasks[taskId].data[1]].text, 5, 5);
+ gTasks[taskId].data[0]++;
+ }
+
+ if (gMain.newKeys & 0x20)
+ {
+ if (gTasks[taskId].data[1] == 0)
+ gTasks[taskId].data[1] = gUnknown_Debug_842E350 - 1;
+ else
+ gTasks[taskId].data[1]--;
+ gTasks[taskId].data[0] = 0;
+ }
+ if (gMain.newKeys & 0x10)
+ {
+ if (gTasks[taskId].data[1] == gUnknown_Debug_842E350 - 1)
+ gTasks[taskId].data[1] = 0;
+ else
+ gTasks[taskId].data[1]++;
+ gTasks[taskId].data[0] = 0;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ // TODO: fix this
+ s32 var = gTasks[taskId].data[1];
+ asm(""::"r"(var * 8));
+ gUnknown_Debug_842E2D0[var].func(gSharedMem + 0x4000);
+
+ gMain.state++;
+ DestroyTask(taskId);
+ }
+}
+
+void debug_sub_815D15C(void)
+{
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ SetVBlankCallback(VBlankCB);
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gWindowTemplate_81E6CE4);
+ Menu_EraseScreen();
+ REG_DISPCNT = DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP | DISPCNT_MODE_0;
+ REG_BLDCNT = 0;
+
+ CreateTask(Task_DestroySelf, 0);
+ StopMapMusic();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ FillPalette(0, 0, 2);
+ SetMainCallback2(debug_sub_815D1D8);
+}
+
+void debug_sub_815D1D8(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ Menu_DrawStdWindowFrame(3, 14, 27, 19);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ gMain.state++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ if (gMain.heldKeys & 0x100)
+ gUnknown_Debug_30030E0++;
+ MenuPrintMessage(Str_843DA70, 4, 15);
+ gMain.state++;
+ }
+ break;
+ case 2:
+ if (Menu_UpdateWindowText())
+ {
+ gMain.state++;
+ gLinkType = 0x5501;
+ OpenLink();
+ }
+ break;
+ case 3:
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ gMain.state++;
+ MenuPrintMessage(Str_843DA84, 4, 15);
+ }
+ break;
+ case 4:
+ if (Menu_UpdateWindowText())
+ {
+ CreateTask(debug_sub_815D04C, 10);
+ gMain.state++;
+ }
+ break;
+ case 6:
+ MenuPrintMessage(Str_843DA98, 4, 15);
+ SendBlock(0, gSharedMem + 0x4000, 0x2004);
+ gMain.state++;
+ break;
+ case 7:
+ Menu_UpdateWindowText();
+ if (IsLinkTaskFinished())
+ gMain.state++;
+ break;
+ case 8:
+ sub_800832C();
+ gMain.state++;
+ break;
+ case 9:
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ Menu_BlankWindowRect(4, 15, 26, 18);
+ Menu_PrintText(Str_843DAA3, 4, 15);
+ gMain.state++;
+ }
+ break;
+ case 10:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gMain.state++;
+ }
+ break;
+ case 11:
+ if (!gPaletteFade.active)
+ SetMainCallback2(CB2_InitTitleScreen);
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+#endif
diff --git a/src/engine/mystery_event_msg.c b/src/mystery_event_msg.c
index 03ef22727..03ef22727 100644
--- a/src/engine/mystery_event_msg.c
+++ b/src/mystery_event_msg.c
diff --git a/src/engine/mystery_event_script.c b/src/mystery_event_script.c
index 6fcad66ac..6fcad66ac 100644
--- a/src/engine/mystery_event_script.c
+++ b/src/mystery_event_script.c
diff --git a/src/engine/name_string_util.c b/src/name_string_util.c
index 32e9358e1..32e9358e1 100644
--- a/src/engine/name_string_util.c
+++ b/src/name_string_util.c
diff --git a/src/engine/naming_screen.c b/src/naming_screen.c
index 97819322c..59b9b4d84 100644
--- a/src/engine/naming_screen.c
+++ b/src/naming_screen.c
@@ -3,7 +3,7 @@
#include "data2.h"
#include "graphics.h"
#include "field_effect.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "main.h"
#include "menu.h"
@@ -26,8 +26,6 @@
#define COLUMN_COUNT 10
#endif
-extern u16 gKeyRepeatStartDelay;
-
extern u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, u32 personality);
const u8 gSpriteImage_83CE094[] = INCBIN_U8("graphics/naming_screen/pc_icon/0.4bpp");
diff --git a/src/scene/new_game.c b/src/new_game.c
index 0279f99c6..f8a5524f5 100644
--- a/src/scene/new_game.c
+++ b/src/new_game.c
@@ -1,4 +1,7 @@
#include "global.h"
+#include "constants/maps.h"
+#include "constants/species.h"
+#include "clock.h"
#include "new_game.h"
#include "battle_records.h"
#include "berry.h"
@@ -20,6 +23,7 @@
#include "pokemon_storage_system.h"
#include "random.h"
#include "roamer.h"
+#include "script_pokemon_80C4.h"
#include "overworld.h"
#include "rtc.h"
#include "script.h"
@@ -42,6 +46,18 @@ static const struct ContestWinner sEmptyMuseumPortrait =
.trainerName = {EOS},
};
+#if DEBUG
+const s8 gUnknown_Debug_0823C788[][2] =
+{
+ { MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK) },
+ { MAP_GROUP(OLDALE_TOWN_POKEMON_CENTER_2F), MAP_NUM(OLDALE_TOWN_POKEMON_CENTER_2F) },
+ { MAP_GROUP(LITTLEROOT_TOWN), MAP_NUM(LITTLEROOT_TOWN) },
+ { MAP_GROUP(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F), MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_2F) }
+};
+
+const u8 gUnknown_Debug_0823C790[] = _("KRÖTE");
+#endif
+
void write_word_to_mem(u32 var, u8 *dataPtr)
{
dataPtr[0] = var;
@@ -94,9 +110,33 @@ void ZeroBattleTowerData(void)
CpuFill32(0, &gSaveBlock2.battleTower, sizeof(gSaveBlock2.battleTower));
}
+#if DEBUG
+void debug_sub_8052E04()
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_Debug_0823C788[i][0] == gSaveBlock1.location.mapGroup &&
+ gUnknown_Debug_0823C788[i][1] == gSaveBlock1.location.mapNum)
+ {
+ break;
+ }
+ }
+
+ i++;
+ if (i >= 4)
+ {
+ i = 0;
+ }
+
+ Overworld_SetWarpDestination(gUnknown_Debug_0823C788[i][0], gUnknown_Debug_0823C788[i][1], -1, -1, -1);
+}
+#endif
+
void WarpToTruck(void)
{
- Overworld_SetWarpDestination(25, 40, -1, -1, -1); // inside of truck
+ Overworld_SetWarpDestination(MAP_GROUP(INSIDE_OF_TRUCK), MAP_NUM(INSIDE_OF_TRUCK), -1, -1, -1);
warp_in();
}
@@ -109,6 +149,9 @@ void ClearSav2(void)
void sub_8052E4C(void)
{
gDifferentSaveFile = 0;
+#if DEBUG
+ gUnknown_020297ED = 0;
+#endif
sub_808C0A0();
ZeroPlayerPartyMons();
ZeroEnemyPartyMons();
@@ -161,3 +204,33 @@ void NewGameInitData(void)
WarpToTruck();
ScriptContext2_RunNewScript(gUnknown_0819FA81);
}
+
+#if DEBUG
+extern void debug_sub_80A3904(void);
+extern void debug_sub_80A3714(void);
+extern void debug_sub_8120F98(void);
+extern void unref_sub_8070F90(void);
+
+void debug_sub_8057508(bool32 arg0)
+{
+ gUnknown_020297ED = 1;
+ NewGameInitData();
+ gSaveBlock1.money = 999999;
+ FlagSet(FLAG_SYS_POKEMON_GET);
+ FlagSet(FLAG_SYS_POKEDEX_GET);
+ FlagSet(FLAG_SYS_POKENAV_GET);
+ FlagSet(FLAG_SYS_B_DASH);
+ ScriptGiveMon(SPECIES_TREECKO, 99, 0, 0, 0, 0);
+
+ if (arg0 == TRUE)
+ SetMonData(&gPlayerParty[0], MON_DATA_NICKNAME, gUnknown_Debug_0823C790);
+
+ debug_sub_80A3904();
+ debug_sub_80A3714();
+ debug_sub_8120F98();
+ FlagSet(FLAG_SYS_HIPSTER_MEET);
+ sub_80EB8EC();
+ unref_sub_8070F90();
+ InitTimeBasedEvents();
+}
+#endif
diff --git a/src/engine/option_menu.c b/src/option_menu.c
index a2d32ffb6..a2d32ffb6 100644
--- a/src/engine/option_menu.c
+++ b/src/option_menu.c
diff --git a/src/field/overworld.c b/src/overworld.c
index 07453e4fe..6376aa1af 100644
--- a/src/field/overworld.c
+++ b/src/overworld.c
@@ -9,9 +9,7 @@
#include "field_control_avatar.h"
#include "field_effect.h"
#include "field_fadetransition.h"
-#include "field_ground_effect.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
@@ -25,6 +23,7 @@
#include "link.h"
#include "load_save.h"
#include "main.h"
+#include "m4a.h"
#include "constants/maps.h"
#include "map_name_popup.h"
#include "menu.h"
@@ -62,6 +61,7 @@ struct UnkTVStruct
u32 tv_field_4;
};
+extern u8 gUnknown_020297ED;
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
@@ -1106,6 +1106,68 @@ u8 sav1_map_get_battletype(void)
return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType;
}
+#if DEBUG
+
+void debug_sub_8076B68(void);
+
+void debug_sub_80589D8(void);
+
+void debug_sub_8058A50(void);
+
+void CB2_InitTestMenu(void)
+{
+ m4aSoundVSyncOff();
+ SetVBlankCallback(NULL);
+ DmaFill32(3, 0, (void *) VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *) PLTT, PLTT_SIZE);
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ ScanlineEffect_Stop();
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6CE4);
+ InitMenuWindow(&gWindowTemplate_81E6CE4);
+ debug_sub_8076B68();
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ REG_IE |= 1;
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_OBJ_1D_MAP;
+ m4aSoundVSyncOn();
+ SetVBlankCallback(debug_sub_8058A50);
+ m4aSongNumStart(0x19D);
+ SetMainCallback2(debug_sub_80589D8);
+}
+
+void debug_sub_80589D8(void)
+{
+ if (UpdatePaletteFade())
+ return;
+
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+void debug_sub_80589F4(void)
+{
+ if (UpdatePaletteFade())
+ return;
+
+ SetVBlankCallback(NULL);
+
+ DmaFill32(3, 0, (void *) VRAM, VRAM_SIZE);
+ DmaFill32(3, 0, (void *) PLTT, PLTT_SIZE);
+
+ SetMainCallback2(gMain.savedCallback);
+}
+
+void debug_sub_8058A50(void)
+{
+ ProcessSpriteCopyRequests();
+ LoadOam();
+ TransferPlttBuffer();
+}
+
+#endif
+
void ResetSafariZoneFlag_(void)
{
ResetSafariZoneFlag();
@@ -1210,6 +1272,33 @@ void CB2_NewGame(void)
SetMainCallback2(c2_overworld);
}
+#if DEBUG
+
+extern void (*gFieldCallback)(void);
+
+void debug_sub_8058C00(void)
+{
+ FieldClearVBlankHBlankCallbacks();
+ StopMapMusic();
+ ResetSafariZoneFlag_();
+ player_avatar_init_params_reset();
+ PlayTimeCounter_Start();
+ ScriptContext1_Init();
+ ScriptContext2_Disable();
+
+ if (gMain.heldKeys & R_BUTTON)
+ gFieldCallback = ExecuteTruckSequence;
+ else
+ gFieldCallback = sub_8080B60;
+
+ do_load_map_stuff_loop(&gMain.state);
+ SetFieldVBlankCallback();
+ set_callback1(c1_overworld);
+ SetMainCallback2(c2_overworld);
+}
+
+#endif
+
void CB2_WhiteOut(void)
{
u8 val;
@@ -1365,6 +1454,10 @@ void CB2_ContinueSavedGame(void)
{
FieldClearVBlankHBlankCallbacks();
StopMapMusic();
+#if DEBUG
+ if (gMain.heldKeys & R_BUTTON)
+ gUnknown_020297ED = TRUE;
+#endif
ResetSafariZoneFlag_();
LoadSaveblockMapHeader();
LoadSaveblockMapObjScripts();
@@ -2140,7 +2233,7 @@ u16 sub_80554E4(u32 a1)
return 23;
}
-u32 sub_80554F8(void)
+s32 sub_80554F8(void)
{
if (sub_8054FC0(0x83) == TRUE)
return 2;
diff --git a/src/engine/palette.c b/src/palette.c
index 2a6602503..2a6602503 100644
--- a/src/engine/palette.c
+++ b/src/palette.c
diff --git a/src/field/party_menu.c b/src/party_menu.c
index f55ed669d..9caaa05b9 100644
--- a/src/field/party_menu.c
+++ b/src/party_menu.c
@@ -1,4 +1,8 @@
#include "global.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
#include "party_menu.h"
#include "battle.h"
#include "battle_interface.h"
@@ -11,12 +15,11 @@
#include "item.h"
#include "item_use.h"
#include "item_menu.h"
-#include "constants/items.h"
+#include "link.h"
#include "mail_data.h"
#include "main.h"
#include "menu.h"
#include "menu_helpers.h"
-#include "constants/moves.h"
#include "palette.h"
#include "pokemon.h"
#include "pokemon_icon.h"
@@ -25,9 +28,7 @@
#include "pokemon_summary_screen.h"
#include "rom_8077ABC.h"
#include "rom_8094928.h"
-#include "constants/songs.h"
#include "sound.h"
-#include "constants/species.h"
#include "sprite.h"
#include "string_util.h"
#include "strings.h"
@@ -94,9 +95,9 @@ static void SpriteCB_UpdateHeldItemIconPosition(struct Sprite *sprite);
static void ItemUseMoveMenu_HandleMoveSelection(u8 taskId);
static void ItemUseMoveMenu_HandleCancel(u8 taskId);
static bool8 SetupDefaultPartyMenu(void);
-static void sub_806B4A8(void);
-static void VBlankCB_PartyMenu(void);
-static bool8 LoadPartyMenuGraphics(u8 a);
+/*static*/ void sub_806B4A8(void);
+/*static*/ void VBlankCB_PartyMenu(void);
+/*static*/ bool8 LoadPartyMenuGraphics(u8 a);
static void sub_806BF24(const u8 *a, u8 monIndex, u8 c, u8 d);
static void sub_806BB9C(u8 a);
static void sub_806BBEC(u8 a);
@@ -397,7 +398,8 @@ static const u16 PartyMonOAMSettings_RightColumn[] = {
};
// Controls where and how the mons' text appears in the party menu screen (nickname, HP, and level).
-static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] = {
+static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] =
+{
{ // PARTY_MENU_LAYOUT_STANDARD
{ 1, 4, PartyMonOAMSettings_LeftColumn},
{12, 1, PartyMonOAMSettings_RightColumn},
@@ -432,7 +434,8 @@ static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] = {
},
};
-static const struct PartyMenuHandlersStruct PartyMenuHandlers[] = {
+static const struct PartyMenuHandlersStruct PartyMenuHandlers[] =
+{
{HandleDefaultPartyMenu, SetupDefaultPartyMenu, 0}, // PARTY_MENU_TYPE_STANDARD
{HandleBattlePartyMenu, SetUpBattlePartyMenu, 0}, // PARTY_MENU_TYPE_BATTLE
{HandleSelectPartyMenu, SetupContestPartyMenu, 0}, // PARTY_MENU_TYPE_CONTEST
@@ -516,6 +519,11 @@ void CB2_PartyMenuMain(void)
RunTasks();
UpdatePaletteFade();
+
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 1, 2, 2);
+#endif
}
void VBlankCB_PartyMenu(void)
@@ -555,14 +563,16 @@ bool8 SetupDefaultPartyMenu(void)
switch (ewram1B000_alt.setupState)
{
case 0:
- if (ewram1B000_alt.monIndex < gPlayerPartyCount) {
+ if (ewram1B000_alt.monIndex < gPlayerPartyCount)
+ {
TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]);
ewram1B000_alt.monIndex++;
- } else {
+ }
+ else
+ {
ewram1B000_alt.monIndex = 0;
ewram1B000_alt.setupState++;
}
-
break;
case 1:
LoadHeldItemIconGraphics();
@@ -582,7 +592,6 @@ bool8 SetupDefaultPartyMenu(void)
ewram1B000_alt.monIndex = 0;
ewram1B000_alt.setupState++;
}
-
break;
case 4:
PartyMenuPrintMonsLevelOrStatus();
@@ -630,7 +639,6 @@ bool8 InitPartyMenu(void)
DmaFill16Large(3, 0, (void *)(VRAM + 0x0), VRAM_SIZE, 0x1000);
DmaClear32(3, OAM, OAM_SIZE);
DmaClear16(3, PLTT, PLTT_SIZE);
-
gPaletteFade.bufferTransferDisabled = 1;
gMain.state++;
break;
@@ -651,10 +659,7 @@ bool8 InitPartyMenu(void)
break;
case 4:
if (ewram1B000.menuType != PARTY_MENU_TYPE_BATTLE && ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE)
- {
ResetTasks();
- }
-
gMain.state++;
break;
case 5:
@@ -698,9 +703,7 @@ bool8 InitPartyMenu(void)
break;
case 12:
if (PartyMenuHandlers[ewram1B000.menuType].menuSetup() == TRUE)
- {
gMain.state++;
- }
break;
case 13:
MultistepInitMenuWindowBegin(&gWindowTemplate_81E6CC8);
@@ -708,9 +711,7 @@ bool8 InitPartyMenu(void)
break;
case 14:
if (MultistepInitMenuWindowContinue())
- {
gMain.state++;
- }
break;
case 15:
PrintPartyMenuPromptText(ewram1B000.promptTextId, 0);
@@ -723,6 +724,10 @@ bool8 InitPartyMenu(void)
break;
case 17:
SetVBlankCallback(VBlankCB_PartyMenu);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0xE5E0), 0x8000, (void *)(VRAM + 0x7800), 2);
+#endif
return TRUE;
}
@@ -734,15 +739,11 @@ void CB2_InitPartyMenu(void)
while (InitPartyMenu() != TRUE)
{
if (sub_80F9344() == TRUE)
- {
return;
- }
}
if (ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE)
- {
ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0);
- }
SetMainCallback2(CB2_PartyMenuMain);
}
@@ -783,9 +784,7 @@ void ReDrawPartyMonBackgrounds(void)
DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(BG_VRAM + 0x3000), 0x800);
if (ewram1B000.unk261 == 2)
- {
ewram1B000.unk261 = 0;
- }
}
}
@@ -812,119 +811,172 @@ bool8 DrawPartyMonBackground(u8 monIndex)
sub_806BF24(&arr[0], 0, 3, 0);
break;
case 2:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 1) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 1)
+ {
sub_806BA94(arr[2], arr[3], 0, 3);
sub_806BF24(&arr[2], 1, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[2], arr[3], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
sub_806B9A4(arr[2], arr[3], 4);
sub_806BF24(&arr[2], 1, 4, 0);
- } else {
+ }
+ else
+ {
sub_806B9A4(arr[2], arr[3], 3);
sub_806BF24(&arr[2], 1, 3, 0);
}
-
break;
case 3:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 2) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 2)
+ {
sub_806BA94(arr[4], arr[5], 0, 3);
sub_806BF24(&arr[4], 2, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[4], arr[5], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[4], arr[5], 0, 3);
sub_806BF24(&arr[4], 2, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[4], arr[5], 1, 3);
}
- } else if (gPlayerPartyCount > 2) {
+ }
+ else if (gPlayerPartyCount > 2)
+ {
sub_806BA94(arr[4], arr[5], 0, 3);
sub_806BF24(&arr[4], 2, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[4], arr[5], 1, 3);
}
-
break;
case 4:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 3) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 3)
+ {
sub_806BA94(arr[6], arr[7], 0, 3);
sub_806BF24(&arr[6], 3, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[6], arr[7], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[6], arr[7], 0, 3);
sub_806BF24(&arr[6], 3, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[6], arr[7], 1, 3);
}
- } else if (gPlayerPartyCount > 3) {
+ }
+ else if (gPlayerPartyCount > 3)
+ {
sub_806BA94(arr[6], arr[7], 0, 3);
sub_806BF24(&arr[6], 3, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[6], arr[7], 1, 3);
}
-
break;
case 5:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 4) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 4)
+ {
sub_806BA94(arr[8], arr[9], 0, 3);
sub_806BF24(&arr[8], 4, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[8], arr[9], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[8], arr[9], 0, 4);
sub_806BF24(&arr[8], 4, 4, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[8], arr[9], 1, 4);
}
- } else if (gPlayerPartyCount > 4) {
+ }
+ else if (gPlayerPartyCount > 4)
+ {
sub_806BA94(arr[8], arr[9], 0, 3);
sub_806BF24(&arr[8], 4, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[8], arr[9], 1, 3);
}
-
break;
case 6:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 5) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 5)
+ {
sub_806BA94(arr[10], arr[11], 0, 3);
sub_806BF24(&arr[10], 5, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[10], arr[11], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[10], arr[11], 0, 4);
sub_806BF24(&arr[10], 5, 4, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[10], arr[11], 1, 4);
}
- } else if (gPlayerPartyCount > 5) {
+ }
+ else if (gPlayerPartyCount > 5)
+ {
sub_806BA94(arr[10], arr[11], 0, 3);
sub_806BF24(&arr[10], 5, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[10], arr[11], 1, 3);
}
-
break;
case 7:
- if (ewram1B000.menuType == PARTY_MENU_TYPE_BATTLE_TOWER) {
+ if (ewram1B000.menuType == PARTY_MENU_TYPE_BATTLE_TOWER)
sub_806BB9C(1);
- }
-
sub_806BBEC(1);
break;
case 8:
@@ -1047,9 +1099,7 @@ void sub_806B9A4(s16 a, u16 b, u8 c)
for (; j <= 10 && a + j <= 0x1F; j++)
{
if (a + j >= 0)
- {
gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = (c << 12) | gUnknown_083769D8[i * 11 + j];
- }
}
}
}
@@ -1069,9 +1119,7 @@ void sub_806BA34(s16 a, u16 b)
for (; j <= 10 && a + j <= 0x1F; j++)
{
if (a + j >= 0)
- {
gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0;
- }
}
}
}
@@ -1083,15 +1131,13 @@ void sub_806BA94(s16 a, u16 b, u8 c, u8 d)
const u8 *arr;
u16 var1;
- arr = gUnknown_08376A5E;
if (c == 0)
- {
arr = gUnknown_08376A25;
- }
+ else
+ arr = gUnknown_08376A5E;
var1 = b * 32;
-
for (i = 0; i < 3; i++)
{
u8 j = 0;
@@ -1136,11 +1182,13 @@ void sub_806BB3C(s16 a, u16 b)
void sub_806BB9C(u8 a)
{
u8 i;
- u16 arr[12] = {
+ u16 arr[12] =
+ {
0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
};
u16 *vramPtr = (u16 *)(BG_VRAM + 0x3C30);
+
for (i = 0; i < PARTY_SIZE; i++)
{
vramPtr[i] = arr[i] + (a << 12);
@@ -1151,11 +1199,13 @@ void sub_806BB9C(u8 a)
void sub_806BBEC(u8 a)
{
u8 i;
- u16 arr[12] = {
+ u16 arr[12] =
+ {
0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F,
0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
};
u16 *vramPtr = (u16 *)(BG_VRAM + 0x3CB0);
+
for (i = 0; i < PARTY_SIZE; i++)
{
vramPtr[i] = arr[i] + (a << 12);
@@ -1185,9 +1235,7 @@ void unref_sub_806BCB8(u8 a)
u8 i;
for (i = 0; i < gPlayerPartyCount; i++)
- {
sub_806BC3C(i, a);
- }
}
// This is ultimately unreferenced, since it's caller is unreferenced.
@@ -1199,8 +1247,7 @@ void sub_806BCE8()
{
if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
- u8 gender = GetMonGender(&gPlayerParty[i]);
- switch (gender)
+ switch (GetMonGender(&gPlayerParty[i]))
{
case MON_MALE:
sub_806BC3C(i, 0x54);
@@ -1407,8 +1454,7 @@ u16 HandleBattleTowerPartyMenuInput(u8 taskId)
if (menuDirectionPressed == 0)
{
- u8 var1 = sub_80F92BC();
- switch (var1)
+ switch (sub_80F92BC())
{
case 1:
menuDirectionPressed = 0xFF;
@@ -1437,9 +1483,7 @@ u16 HandleBattleTowerPartyMenuInput(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
if (gSprites[sub_806CA00(taskId)].data[0] == 7)
- {
return B_BUTTON;
- }
}
}
}
@@ -1503,31 +1547,19 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed)
u8 isDoubleBattle = IsDoubleBattle();
if (menuIndex < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + menuIndex * 2], menuIndex, 3, 0);
- }
else
- {
sub_806BBEC(1);
- }
if (!isDoubleBattle)
- {
ChangeDefaultPartyMenuSelection(spriteId, menuIndex, directionPressed);
- }
else
- {
ChangeDoubleBattlePartyMenuSelection(spriteId, menuIndex, directionPressed);
- }
if (gSprites[spriteId].data[0] < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + gSprites[spriteId].data[0] * 2], gSprites[spriteId].data[0], 3, 1);
- }
else
- {
sub_806BBEC(2);
- }
ewram1B000.unk261 = 2;
@@ -1538,9 +1570,7 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed)
UpdateMonIconFrame_806DA44(taskId, gSprites[spriteId].data[0], 1);
if (menuIndex != gSprites[spriteId].data[0])
- {
- PlaySE(5);
- }
+ PlaySE(SE_SELECT);
}
void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed)
@@ -1554,27 +1584,35 @@ void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPres
gSprites[spriteId].data[1] = 0;
break;
case 1: // moving up
- if (menuIndex == 0) {
+ if (menuIndex == 0)
+ {
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == 7) {
+ }
+ else if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = gPlayerPartyCount - 1;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 3: // moving down
- if (menuIndex == gPlayerPartyCount - 1) {
+ if (menuIndex == gPlayerPartyCount - 1)
+ {
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == 7) {
+ }
+ else if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = 0;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 4: // moving right
@@ -1582,14 +1620,14 @@ void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPres
{
if (gSprites[spriteId].data[1] == 0)
gSprites[spriteId].data[1] = 1;
-
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
}
break;
case 0: // moving left
// Only move the selection to the left side if one of the mons in the right-hand column are currently selected
nextIndex = menuIndex - 1;
- if (nextIndex <= 4) {
+ if (nextIndex <= 4)
+ {
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = menuIndex;
}
@@ -1608,32 +1646,42 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio
gSprites[spriteId].data[1] = 0;
break;
case 3: // moving down
- if (menuIndex == 7) {
+ if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = 0;
- } else if (menuIndex == gPlayerPartyCount - 1) {
+ }
+ else if (menuIndex == gPlayerPartyCount - 1)
+ {
gSprites[spriteId].data[0] = 7;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 1: // moving up
- if (menuIndex == 0) {
+ if (menuIndex == 0)
+ {
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == 7) {
+ }
+ else if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = gPlayerPartyCount - 1;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 4: // moving right
- if (menuIndex == 0) {
- if (gPlayerPartyCount > 2) {
+ if (menuIndex == 0)
+ {
+ if (gPlayerPartyCount > 2)
+ {
u16 var1 = gSprites[spriteId].data[1] - 2;
if (var1 > 1)
gSprites[spriteId].data[0] = 2;
@@ -1641,8 +1689,10 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
}
}
- else if (menuIndex == 1) {
- if (gPlayerPartyCount > 4) {
+ else if (menuIndex == 1)
+ {
+ if (gPlayerPartyCount > 4)
+ {
u16 var1 = gSprites[spriteId].data[1] - 4;
if (var1 <= 1)
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
@@ -1653,12 +1703,16 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio
break;
case 0: // moving left
var1 = menuIndex - 2;
- if (var1 <= 1) {
+ if (var1 <= 1)
+ {
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = menuIndex;
- } else {
+ }
+ else
+ {
u8 var2 = menuIndex - 4;
- if (var2 <= 1) {
+ if (var2 <= 1)
+ {
gSprites[spriteId].data[0] = 1;
gSprites[spriteId].data[1] = menuIndex;
}
@@ -2011,54 +2065,41 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
UpdateMonIconFrame_806DA44(taskId, menuIndex, 0);
if (menuIndex < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0);
- }
else if (menuIndex == PARTY_SIZE)
- {
sub_806BB9C(1);
- }
else
- {
sub_806BBEC(1);
- }
menuMovement = directionPressed + 2;
-
switch (menuMovement)
{
case 2: // no movement
gSprites[spriteId].data[1] = 0;
break;
case 1: // moving up
- if (menuIndex == 0) {
+ if (menuIndex == 0)
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == PARTY_SIZE) {
+ else if (menuIndex == PARTY_SIZE)
gSprites[spriteId].data[0] = gPlayerPartyCount - 1;
- } else {
+ else
gSprites[spriteId].data[0] += directionPressed;
- }
-
gSprites[spriteId].data[1] = 0;
break;
case 3: // moving down
- if (menuIndex == gPlayerPartyCount - 1) {
+ if (menuIndex == gPlayerPartyCount - 1)
gSprites[spriteId].data[0] = 6;
- } else if (menuIndex == 7) {
+ else if (menuIndex == 7)
gSprites[spriteId].data[0] = 0;
- } else {
+ else
gSprites[spriteId].data[0] += directionPressed;
- }
-
gSprites[spriteId].data[1] = 0;
break;
case 4: // moving right
if (gPlayerPartyCount > 1 && menuIndex == 0)
{
- if (gSprites[spriteId].data[1] == 0) {
+ if (gSprites[spriteId].data[1] == 0)
gSprites[spriteId].data[1] = 1;
- }
-
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
}
break;
@@ -2078,17 +2119,11 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
newMenuIndex = gSprites[spriteId].data[0];
if (gSprites[spriteId].data[0] < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[gSprites[spriteId].data[0] * 2], newMenuIndex, 3, 1);
- }
else if (gSprites[spriteId].data[0] == PARTY_SIZE)
- {
sub_806BB9C(2);
- }
else
- {
sub_806BBEC(2);
- }
ewram1B000.unk261 = 2;
@@ -2096,9 +2131,7 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
UpdateMonIconFrame_806DA44(taskId, newMenuIndex2, 1);
if (menuIndex != gSprites[spriteId].data[0])
- {
- PlaySE(5);
- }
+ PlaySE(SE_SELECT);
}
// Selects the "OK" button in the Battle Tower party menu.
@@ -2112,13 +2145,9 @@ void SelectBattleTowerOKButton(u8 taskId)
UpdateMonIconFrame_806DA44(taskId, menuIndex, 0);
if (menuIndex < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0);
- }
else
- {
sub_806BBEC(1);
- }
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].data[0] = 6;
@@ -2128,7 +2157,7 @@ void SelectBattleTowerOKButton(u8 taskId)
sub_806BB9C(2);
ewram1B000.unk261 = 2;
- PlaySE(5);
+ PlaySE(SE_SELECT);
}
}
@@ -2139,24 +2168,28 @@ void sub_806C92C(u8 spriteId)
if (!IsDoubleBattle())
{
- if (menuIndex1 < 1) {
- if (menuIndex2 < 1) {
+ if (menuIndex1 < 1)
+ {
+ if (menuIndex2 < 1)
menuIndex2 = 1;
- }
- } else {
- if (menuIndex2 >= 1) {
+ }
+ else
+ {
+ if (menuIndex2 >= 1)
menuIndex2 = 0;
- }
}
- } else {
- if (menuIndex1 < 2) {
- if (menuIndex2 < 2) {
+ }
+ else
+ {
+ if (menuIndex1 < 2)
+ {
+ if (menuIndex2 < 2)
menuIndex2 = 2;
- }
- } else {
- if (menuIndex2 >= 2) {
+ }
+ else
+ {
+ if (menuIndex2 >= 2)
menuIndex2 = 0;
- }
}
}
@@ -2223,13 +2256,9 @@ void ChangePartyMenuSwitchPokemonSelection(u8 taskId, s16 menuDirectionPressed)
ChangePartyMenuSelection(taskId, menuDirectionPressed);
if (sprite1->data[0] != sprite2->data[0])
- {
sub_806BF24(&gUnknown_083769A8[sprite1->data[0] * 2], sprite1->data[0], 6, 1);
- }
else
- {
sub_806BF24(&gUnknown_083769A8[sprite1->data[0] * 2], sprite1->data[0], 6, 0);
- }
}
void HandlePartyMenuSwitchPokemonInput(u8 taskId)
@@ -2286,14 +2315,9 @@ void sub_806CCE4()
u8 monIndex2 = gSprites[ewram01000.unk2].data[0];
if (monIndex1 <= 5)
- {
sub_806BF24(&gUnknown_083769A8[monIndex1 * 2], monIndex1, 3, 0);
- }
-
if (monIndex2 <= 5)
- {
sub_806BF24(&gUnknown_083769A8[monIndex2 * 2], monIndex2, 3, 1);
- }
}
void sub_806CD44(u8 taskId)
@@ -2502,9 +2526,7 @@ void sub_806D05C(u8 taskId)
sub_806CFA0(taskId, 1);
if (ewram01000.unk8 == 0 && ewram01000.unkA == 11)
- {
gTasks[taskId].func = sub_806D198;
- }
}
void sub_806D098(u8 a, u8 b)
@@ -2546,9 +2568,7 @@ void sub_806D15C(u8 taskId)
sub_806D098(taskId, 1);
if (ewram01000.unk8 == 11 && ewram01000.unkA == 11)
- {
gTasks[taskId].func = sub_806D198;
- }
}
void sub_806D198(u8 taskId)
@@ -2618,22 +2638,14 @@ void sub_806D3B4(u8 taskId, u16 species1, u16 species2)
sub_806B9A4(var1[2] + gTasks[taskId].data[0], var1[3], 4);
if (species1)
- {
sub_806BA94(var1[8] + gTasks[taskId].data[0], var1[9], 0, 4);
- }
else
- {
sub_806BA94(var1[8] + gTasks[taskId].data[0], var1[9], 1, 4);
- }
if (species2)
- {
sub_806BA94(var1[10] + gTasks[taskId].data[0], var1[11], 0, 4);
- }
else
- {
sub_806BA94(var1[10] + gTasks[taskId].data[0], var1[11], 1, 4);
- }
}
void sub_806D4AC(u8 taskId, u16 species, u8 c)
@@ -2717,19 +2729,13 @@ bool8 LoadPartyMenuGraphics(u8 a)
bool8 retVal = FALSE;
if (a < 2)
- {
LZDecompressVram(gPartyMenuMisc_Gfx, (void *)BG_VRAM);
- }
if (a == 2 || a == 0)
- {
LZDecompressVram(gPartyMenuMisc_Tilemap, (void *)(BG_VRAM + 0x3800));
- }
if (a == 3 || a == 0)
- {
LoadCompressedPalette(gPartyMenuMisc_Pal, 0, 0x160);
- }
if (a == 4 || a == 0)
{
@@ -2738,19 +2744,13 @@ bool8 LoadPartyMenuGraphics(u8 a)
}
if (a == 5 || a == 0)
- {
LZDecompressVram(gPartyMenuHpBar_Gfx, (void *)(BG_VRAM + 0x6000));
- }
if (a == 6 || a == 0)
- {
LZDecompressVram(gPartyMenuOrderText_Gfx, (void *)(BG_VRAM + 0x6180));
- }
if (a == 7 || a == 0)
- {
LZDecompressVram(gStatusGfx_Icons, (void *)(BG_VRAM + 0x7180));
- }
if (a == 8 || a == 0)
{
@@ -2769,21 +2769,13 @@ void SetMonIconAnimByHP(u8 spriteId, u16 currentHP, u16 maxHP)
if (currentHP != maxHP)
{
if (hpBarLevel == 3)
- {
animNum = 1;
- }
else if (hpBarLevel == 2)
- {
animNum = 2;
- }
else if (hpBarLevel == 1)
- {
animNum = 3;
- }
else
- {
animNum = 4;
- }
}
sub_809D824(&gSprites[spriteId], animNum);
@@ -2814,25 +2806,19 @@ void TryCreatePartyMenuMonIcon(u8 taskId, u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES))
{
- bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
CreatePartyMenuMonIcon(taskId, monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
CreatePartyMenuMonIcon(taskId, monIndex, IsDoubleBattle(), pokemon);
- }
}
}
void unref_sub_806D964(u8 taskId)
{
u8 i;
+
for (i = 0; i < gPlayerPartyCount; i++)
- {
TryCreatePartyMenuMonIcon(taskId, i, &gPlayerParty[i]);
- }
}
void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct UnknownPokemonStruct2 *pokemon)
@@ -2847,19 +2833,14 @@ void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct U
void UpdateMonIconFrame_806DA0C(struct Sprite *sprite)
{
- u8 var1;
+ u8 var1 = UpdateMonIconFrame(sprite);
- var1 = UpdateMonIconFrame(sprite);
if (var1)
{
if (var1 & 1)
- {
sprite->pos2.y = -3;
- }
else
- {
sprite->pos2.y = 1;
- }
}
}
@@ -2879,13 +2860,9 @@ void UpdateMonIconFrame_806DA44(u8 taskId, u8 monIndex, u8 c)
gSprites[spriteId].data[0] = 0;
if (!c)
- {
gSprites[spriteId].callback = UpdateMonIconFrame_806DA38;
- }
else
- {
gSprites[spriteId].callback = UpdateMonIconFrame_806DA0C;
- }
}
}
@@ -2897,8 +2874,8 @@ void LoadHeldItemIconGraphics(void)
void SpriteCB_HeldItemIcon(struct Sprite *sprite)
{
-
u8 data7 = sprite->data[7];
+
if (gSprites[data7].invisible)
{
sprite->invisible = 1;
@@ -2936,29 +2913,19 @@ void CreateHeldItemIcons(u8 *a, u8 *b, u8 c)
switch (c)
{
case 0:
- i = 0;
- while (i < a[0])
+ for (i = 0; i < a[0]; i++)
{
heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
if (heldItem)
- {
CreateHeldItemIcon(b[i], ItemIsMail(heldItem));
- }
-
- i++;
}
break;
case 1:
- i = 0;
- while (i < a[1])
+ for (i = 0; i < a[1]; i++)
{
heldItem = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM);
if (heldItem)
- {
CreateHeldItemIcon(b[i + 6], ItemIsMail(heldItem));
- }
-
- i++;
}
break;
}
@@ -3009,13 +2976,9 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item)
else
{
if (ItemIsMail(item))
- {
StartSpriteAnim(&gSprites[heldItemSpriteId], 1);
- }
else
- {
StartSpriteAnim(&gSprites[heldItemSpriteId], 0);
- }
gSprites[heldItemSpriteId].invisible = 0;
}
@@ -3125,25 +3088,25 @@ u8 GetMonIconSpriteId(u8 taskId, u8 monIndex)
{
switch (monIndex)
{
- case 1:
- return gTasks[taskId].data[0];
- break;
- case 2:
- return gTasks[taskId].data[1] >> 8;
- break;
- case 3:
- return gTasks[taskId].data[1];
- break;
- case 4:
- return gTasks[taskId].data[2] >> 8;
- break;
- case 5:
- return gTasks[taskId].data[2];
- break;
- case 0:
- default:
- return gTasks[taskId].data[0] >> 8;
- break;
+ case 1:
+ return gTasks[taskId].data[0];
+ break;
+ case 2:
+ return gTasks[taskId].data[1] >> 8;
+ break;
+ case 3:
+ return gTasks[taskId].data[1];
+ break;
+ case 4:
+ return gTasks[taskId].data[2] >> 8;
+ break;
+ case 5:
+ return gTasks[taskId].data[2];
+ break;
+ case 0:
+ default:
+ return gTasks[taskId].data[0] >> 8;
+ break;
}
}
@@ -3151,24 +3114,24 @@ void SetMonIconSpriteId(u8 taskId, u8 monIndex, u8 spriteId)
{
switch (monIndex)
{
- case 0:
- gTasks[taskId].data[0] = (u8)gTasks[taskId].data[0] | (spriteId << 8);
- break;
- case 1:
- gTasks[taskId].data[0] = (gTasks[taskId].data[0] & -0x100) | spriteId;
- break;
- case 2:
- gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1] | (spriteId << 8);
- break;
- case 3:
- gTasks[taskId].data[1] = (gTasks[taskId].data[1] & -0x100) | spriteId;
- break;
- case 4:
- gTasks[taskId].data[2] = (u8)gTasks[taskId].data[2] | (spriteId << 8);
- break;
- case 5:
- gTasks[taskId].data[2] = (gTasks[taskId].data[2] & -0x100) | spriteId;
- break;
+ case 0:
+ gTasks[taskId].data[0] = (u8)gTasks[taskId].data[0] | (spriteId << 8);
+ break;
+ case 1:
+ gTasks[taskId].data[0] = (gTasks[taskId].data[0] & -0x100) | spriteId;
+ break;
+ case 2:
+ gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1] | (spriteId << 8);
+ break;
+ case 3:
+ gTasks[taskId].data[1] = (gTasks[taskId].data[1] & -0x100) | spriteId;
+ break;
+ case 4:
+ gTasks[taskId].data[2] = (u8)gTasks[taskId].data[2] | (spriteId << 8);
+ break;
+ case 5:
+ gTasks[taskId].data[2] = (gTasks[taskId].data[2] & -0x100) | spriteId;
+ break;
}
}
@@ -3313,15 +3276,10 @@ void TryPrintPartyMenuMonNickname(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES))
{
- bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
PrintPartyMenuMonNickname(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
PrintPartyMenuMonNickname(monIndex, IsDoubleBattle(), pokemon);
- }
}
}
@@ -3330,9 +3288,7 @@ void PrintPartyMenuMonNicknames(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
TryPrintPartyMenuMonNickname(i, &gPlayerParty[i]);
- }
}
u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer)
@@ -3350,38 +3306,28 @@ void PartyMenuPutStatusTilemap(u8 monIndex, u8 menuLayout, u8 status)
u8 var1 = status * 4;
for (i = 0; i < 4; i++)
- {
vramPtr[i] = (0x18C + var1 + i) | -0x5000;
- }
}
static void PartyMenuClearLevelStatusTilemap(u8 monIndex)
{
- bool8 isLinkDoubleBattle;
u8 menuLayout;
u8 x;
u8 y;
u16 *vramPtr;
u8 i;
- isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
menuLayout = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE;
- }
else
- {
menuLayout = IsDoubleBattle();
- }
x = gUnknown_08376738[menuLayout][monIndex].x - 1;
y = gUnknown_08376738[menuLayout][monIndex].y + 1;
vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32);
for (i = 0; i < 4; i++)
- {
vramPtr[i] = 0;
- }
}
static void PartyMenuWriteTilemap(u8 a, u8 x, u8 y)
@@ -3422,30 +3368,18 @@ void PartyMenuPrintMonLevelOrStatus(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- u8 statusAndPkrs;
- bool8 isLinkDoubleBattle;
+ u8 statusAndPkrs = GetMonStatusAndPokerus(pokemon);
u8 menuLayout;
- statusAndPkrs = GetMonStatusAndPokerus(pokemon);
-
- isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
menuLayout = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE;
- }
else
- {
menuLayout = IsDoubleBattle();
- }
if (statusAndPkrs != 0 && statusAndPkrs != 6)
- {
PartyMenuPutStatusTilemap(monIndex, menuLayout, statusAndPkrs - 1);
- }
else
- {
PartyMenuPrintLevel(monIndex, menuLayout, pokemon);
- }
PartyMenuPrintGenderIcon(monIndex, menuLayout, pokemon);
}
@@ -3456,9 +3390,7 @@ void PartyMenuPrintMonsLevelOrStatus(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
PartyMenuPrintMonLevelOrStatus(i, &gPlayerParty[i]);
- }
}
void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 menuLayout, u8 monIndex, u8 *nickname)
@@ -3470,12 +3402,12 @@ void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 menuLayout, u8 monInd
switch (gender)
{
- case MON_MALE:
- PartyMenuWriteTilemap(0x42, x, y);
- break;
- case MON_FEMALE:
- PartyMenuWriteTilemap(0x44, x, y);
- break;
+ case MON_MALE:
+ PartyMenuWriteTilemap(0x42, x, y);
+ break;
+ case MON_FEMALE:
+ PartyMenuWriteTilemap(0x44, x, y);
+ break;
}
}
}
@@ -3508,11 +3440,8 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP)
void PartyMenuPrintHP(u8 monIndex, u8 b, struct Pokemon *pokemon)
{
- u16 currentHP;
- u16 maxHP;
-
- currentHP = GetMonData(pokemon, MON_DATA_HP);
- maxHP = GetMonData(pokemon, MON_DATA_MAX_HP);
+ u16 currentHP = GetMonData(pokemon, MON_DATA_HP);
+ u16 maxHP = GetMonData(pokemon, MON_DATA_MAX_HP);
PartyMenuDoPrintHP(monIndex, b, currentHP, maxHP);
}
@@ -3521,15 +3450,10 @@ void PartyMenuTryPrintHP(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
PartyMenuPrintHP(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
PartyMenuPrintHP(monIndex, IsDoubleBattle(), pokemon);
- }
}
}
@@ -3538,9 +3462,7 @@ void PartyMenuTryPrintMonsHP(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
PartyMenuTryPrintHP(i, &gPlayerParty[i]);
- }
}
void unref_sub_806E564(void) { }
@@ -3560,17 +3482,11 @@ void PartyMenuDoDrawHPBar(u8 monIndex, u8 menuLayout, u16 currentHP, u16 maxHP)
hpBarLevel = GetHPBarLevel(currentHP, maxHP);
if (hpBarLevel > 2)
- {
battleInterface.unkC_0 = 4;
- }
if (hpBarLevel == 2)
- {
battleInterface.unkC_0 = 5;
- }
if (hpBarLevel < 2)
- {
battleInterface.unkC_0 = 6;
- }
battleInterface.unk10 = 0x100;
@@ -3596,15 +3512,10 @@ void PartyMenuTryDrawHPBar(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- bool8 isDoubleBattle = IsLinkDoubleBattle();
- if (isDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
PartyMenuDrawHPBar(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
PartyMenuDrawHPBar(monIndex, IsDoubleBattle(), pokemon);
- }
}
}
@@ -3613,9 +3524,7 @@ void PartyMenuDrawHPBars(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
PartyMenuTryDrawHPBar(i, &gPlayerParty[i]);
- }
}
void SwapPokemon(struct Pokemon *a, struct Pokemon *b)
@@ -4007,6 +3916,10 @@ void TeachMonTMMove(u8 taskId, u16 move, TaskFunc func)
CreateTask(Task_TeamMonTMMove, 5);
}
+#if DEBUG
+extern u8 gUnknown_020297ED;
+#endif
+
void Task_TeamMonTMMove(u8 taskId)
{
GetMonNickname(ewram1C000.pokemon, gStringVar1);
@@ -4021,7 +3934,11 @@ void Task_TeamMonTMMove(u8 taskId)
}
else
{
- if (!CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
+ if (
+#if DEBUG
+ !gUnknown_020297ED &&
+#endif
+ !CanMonLearnTMHM(ewram1C000.pokemon, ewram1C000.unk6 - 33))
{
StringExpandPlaceholders(gStringVar4, gOtherText_NotCompatible);
sub_806E834(gStringVar4, 1);
@@ -4377,64 +4294,64 @@ void GetMedicineItemEffectMessage(u16 item)
{
switch (GetItemEffectType(item))
{
- case 3:
- StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning);
- break;
- case 4:
- StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp);
- break;
- case 5:
- StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed);
- break;
- case 6:
- StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut);
- break;
- case 7:
- StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis);
- break;
- case 8:
- StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion);
- break;
- case 9:
- StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove);
- break;
- case 11:
- StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy);
- break;
- case 13:
- StringCopy(gStringVar2, gOtherText_Hp2);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 12:
- StringCopy(gStringVar2, gOtherText_Attack);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 17:
- StringCopy(gStringVar2, gOtherText_Defense);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 16:
- StringCopy(gStringVar2, gOtherText_Speed);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 14:
- StringCopy(gStringVar2, gOtherText_SpAtk2);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 15:
- StringCopy(gStringVar2, gOtherText_SpDef2);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 19:
- case 20:
- StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased);
- break;
- case 21:
- StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored);
- break;
- default:
- StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect);
- break;
+ case 3:
+ StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning);
+ break;
+ case 4:
+ StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp);
+ break;
+ case 5:
+ StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed);
+ break;
+ case 6:
+ StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut);
+ break;
+ case 7:
+ StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis);
+ break;
+ case 8:
+ StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion);
+ break;
+ case 9:
+ StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove);
+ break;
+ case 11:
+ StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy);
+ break;
+ case 13:
+ StringCopy(gStringVar2, gOtherText_Hp2);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 12:
+ StringCopy(gStringVar2, gOtherText_Attack);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 17:
+ StringCopy(gStringVar2, gOtherText_Defense);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 16:
+ StringCopy(gStringVar2, gOtherText_Speed);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 14:
+ StringCopy(gStringVar2, gOtherText_SpAtk2);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 15:
+ StringCopy(gStringVar2, gOtherText_SpDef2);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 19:
+ case 20:
+ StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased);
+ break;
+ case 21:
+ StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored);
+ break;
+ default:
+ StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect);
+ break;
}
}
@@ -4531,9 +4448,9 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func)
bool8 IsBlueYellowRedFlute(u16 item)
{
- if (item == 0x27
- || item == 0x29
- || item == 0x28)
+ if (item == ITEM_BLUE_FLUTE
+ || item == ITEM_RED_FLUTE
+ || item == ITEM_YELLOW_FLUTE)
return TRUE;
else
return FALSE;
@@ -4751,7 +4668,8 @@ void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c)
gMain.newKeys = 0;
}
-static const u8 *const StatNames[] = {
+static const u8 *const StatNames[] =
+{
gOtherText_HP,
gOtherText_Attack,
gOtherText_Defense,
@@ -4760,7 +4678,8 @@ static const u8 *const StatNames[] = {
gOtherText_Speed,
};
-static const u8 StatDataTypes[] = {
+static const u8 StatDataTypes[] =
+{
MON_DATA_MAX_HP,
MON_DATA_ATK,
MON_DATA_DEF,
@@ -4768,6 +4687,17 @@ static const u8 StatDataTypes[] = {
MON_DATA_SPDEF,
MON_DATA_SPEED,
};
+
+#if DEBUG
+
+const u8 gUnknown_Debug_839B6CE[] = {0x40, 0, 0, 0, 0x44, 0, 0xFF, 0, 0, 0};
+
+const u8 gUnknown_Debug_839B6D8[] = _(
+ "{STR_VAR_1}かい じっこう\n"
+ "{STR_VAR_2}たんいじかん しょうひ");
+
+#endif
+
void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c)
{
u8 i;
@@ -4832,7 +4762,6 @@ void Task_RareCandy2(u8 taskId)
}
}
-#if ENGLISH
void PrintStatGrowthsInLevelUpWindow(u8 taskId)
{
u8 i;
@@ -4844,6 +4773,9 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
u8 x;
u8 y;
u32 stat;
+#if GERMAN
+ u8 *ptr;
+#endif
stat = GetMonData(ewram1C000.pokemon, StatDataTypes[i]);
@@ -4853,142 +4785,31 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
x = (i / 3) * 9 + 11;
y = ((i % 3) << 1) + 1;
+#if GERMAN
+ ptr = StringCopy(gStringVar1, StatNames[i]);
+ *ptr++ = EXT_CTRL_CODE_BEGIN;
+ *ptr++ = 0x13;
+ *ptr++ = 0x2E;
+ ptr = StringCopy(ptr, gOtherText_TallPlusAndRightArrow);
+ *ptr++ = EXT_CTRL_CODE_BEGIN;
+ *ptr++ = 0x13;
+ *ptr++ = 0x34;
+ ConvertIntToDecimalStringN(ptr, ewram1B000.statGrowths[i], 1, 2);
+ Menu_PrintText(gStringVar1, x + 1, y);
+#else
Menu_PrintTextPixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1);
-
if (i == 2)
Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0);
else
Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1);
-
gStringVar1[0] = EXT_CTRL_CODE_BEGIN;
gStringVar1[1] = 0x14;
gStringVar1[2] = 0x06;
-
ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[i], 1, 2);
-
Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0);
+#endif
}
}
-#elif GERMAN
-__attribute__((naked))
-void PrintStatGrowthsInLevelUpWindow(u8 taskId) {
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- movs r0, 0xB\n\
- movs r1, 0\n\
- movs r2, 0x1D\n\
- movs r3, 0x7\n\
- bl Menu_DrawStdWindowFrame\n\
- movs r7, 0\n\
- ldr r0, _0807092C @ =gStringVar1\n\
- mov r10, r0\n\
- movs r1, 0xFC\n\
- mov r9, r1\n\
- movs r2, 0x13\n\
- mov r8, r2\n\
-_0807086C:\n\
- ldr r1, _08070930 @ =gSharedMem + 0x1C000\n\
- ldr r0, [r1]\n\
- ldr r1, _08070934 @ =StatDataTypes\n\
- adds r1, r7, r1\n\
- ldrb r1, [r1]\n\
- bl GetMonData\n\
- adds r1, r7, 0x6\n\
- lsls r1, 1\n\
- ldr r2, _08070938 @ =gSharedMem + 0x1B264\n\
- adds r1, r2, r1\n\
- strh r0, [r1]\n\
- lsls r6, r7, 1\n\
- adds r6, r2, r6\n\
- ldrh r1, [r6]\n\
- subs r0, r1\n\
- strh r0, [r6]\n\
- adds r0, r7, 0\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r4, r0, 3\n\
- adds r4, r0\n\
- adds r4, 0xB\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- adds r0, r7, 0\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- adds r5, r0, 0\n\
- lsls r5, 1\n\
- adds r5, 0x1\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- ldr r1, _0807093C @ =StatNames\n\
- lsls r0, r7, 2\n\
- adds r0, r1\n\
- ldr r1, [r0]\n\
- mov r0, r10\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- mov r0, r9\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- mov r1, r8\n\
- strb r1, [r2]\n\
- adds r2, 0x1\n\
- movs r0, 0x2E\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- adds r0, r2, 0\n\
- ldr r1, _08070940 @ =gOtherText_TallPlusAndRightArrow\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- mov r0, r9\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- mov r1, r8\n\
- strb r1, [r2]\n\
- adds r2, 0x1\n\
- movs r0, 0x34\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- movs r0, 0\n\
- ldrsh r1, [r6, r0]\n\
- adds r0, r2, 0\n\
- movs r2, 0x1\n\
- movs r3, 0x2\n\
- bl ConvertIntToDecimalStringN\n\
- adds r4, 0x1\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- mov r0, r10\n\
- adds r1, r4, 0\n\
- adds r2, r5, 0\n\
- bl Menu_PrintText\n\
- adds r0, r7, 0x1\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- cmp r7, 0x5\n\
- bls _0807086C\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0807092C: .4byte gStringVar1\n\
-_08070930: .4byte gSharedMem + 0x1C000\n\
-_08070934: .4byte StatDataTypes\n\
-_08070938: .4byte gSharedMem + 0x1B264\n\
-_0807093C: .4byte StatNames\n\
-_08070940: .4byte gOtherText_TallPlusAndRightArrow\n\
- .syntax divided\n");
-}
-#endif
void PrintNewStatsInLevelUpWindow(u8 taskId)
{
@@ -5019,24 +4840,13 @@ void PrintNewStatsInLevelUpWindow(u8 taskId)
void RedrawPokemonInfoInMenu(u8 monIndex, struct Pokemon *pokemon)
{
- u8 statusAndPkrs;
- bool8 isDoubleBattle;
- u16 currentHP;
- u16 maxHP;
+ u8 statusAndPkrs = GetMonStatusAndPokerus(pokemon);
u8 icon;
- statusAndPkrs = GetMonStatusAndPokerus(pokemon);
if (statusAndPkrs == 0 || statusAndPkrs == 6)
- {
PartyMenuUpdateLevelOrStatus(pokemon, monIndex);
- }
- isDoubleBattle = IsDoubleBattle();
-
- currentHP = GetMonData(pokemon, MON_DATA_HP);
- maxHP = GetMonData(pokemon, MON_DATA_MAX_HP);
-
- PartyMenuDoPrintHP(monIndex, isDoubleBattle, currentHP, maxHP);
+ PartyMenuDoPrintHP(monIndex, IsDoubleBattle(), GetMonData(pokemon, MON_DATA_HP), GetMonData(pokemon, MON_DATA_MAX_HP));
PartyMenuTryDrawHPBar(monIndex, pokemon);
icon = GetMonIconSpriteId(ewram1C000.unk4, monIndex);
@@ -5062,45 +4872,45 @@ void Task_RareCandy3(u8 taskId)
switch (learnedMove)
{
- case 0:
- // No move is learned.
- evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
- if (evolutionSpecies != 0)
- {
- gCB2_AfterEvolution = sub_80A53F8;
- BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
- DestroyTask(taskId);
- }
- else
- {
- sub_8070D90(taskId);
- }
- break;
- case 0xFFFF:
- // Mon already knows 4 moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
-
- StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
- sub_806E834(gStringVar4, 1);
-
- ewram1C000.unk8 = gMoveToLearn;
- gTasks[taskId].func = sub_806F358;
- break;
- case 0xFFFE:
- // Move was already known by the mon.
- gTasks[taskId].func = TeachMonMoveInPartyMenu;
- break;
- default:
- // Mon automatically learned a move because it knew less than four moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[learnedMove]);
-
- StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
- sub_806E834(gStringVar4, 1);
-
- gTasks[taskId].func = Task_TeamMonTMMove3;
- break;
+ case 0:
+ // No move is learned.
+ evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
+ if (evolutionSpecies != 0)
+ {
+ gCB2_AfterEvolution = sub_80A53F8;
+ BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ sub_8070D90(taskId);
+ }
+ break;
+ case 0xFFFF:
+ // Mon already knows 4 moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
+
+ StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
+ sub_806E834(gStringVar4, 1);
+
+ ewram1C000.unk8 = gMoveToLearn;
+ gTasks[taskId].func = sub_806F358;
+ break;
+ case 0xFFFE:
+ // Move was already known by the mon.
+ gTasks[taskId].func = TeachMonMoveInPartyMenu;
+ break;
+ default:
+ // Mon automatically learned a move because it knew less than four moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[learnedMove]);
+
+ StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
+ sub_806E834(gStringVar4, 1);
+
+ gTasks[taskId].func = Task_TeamMonTMMove3;
+ break;
}
}
}
@@ -5114,45 +4924,45 @@ void TeachMonMoveInPartyMenu(u8 taskId)
learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, FALSE);
switch (learnedMove)
{
- case 0:
- // No move is learned.
- evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
- if (evolutionSpecies != 0)
- {
- gCB2_AfterEvolution = sub_80A53F8;
- BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
- DestroyTask(taskId);
- }
- else
- {
- sub_8070D90(taskId);
- }
- break;
- case 0xFFFF:
- // Mon already knows 4 moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
+ case 0:
+ // No move is learned.
+ evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
+ if (evolutionSpecies != 0)
+ {
+ gCB2_AfterEvolution = sub_80A53F8;
+ BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ sub_8070D90(taskId);
+ }
+ break;
+ case 0xFFFF:
+ // Mon already knows 4 moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
- StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
- sub_806E834(gStringVar4, 1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
+ sub_806E834(gStringVar4, 1);
- ewram1C000.unk8 = gMoveToLearn;
- gTasks[taskId].func = sub_806F358;
- break;
- case 0xFFFE:
- // Move was already known by the mon. Go on the the next move to be learned.
- TeachMonMoveInPartyMenu(taskId);
- break;
- default:
- // Mon automatically learned a move because it knew less than four moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[learnedMove]);
+ ewram1C000.unk8 = gMoveToLearn;
+ gTasks[taskId].func = sub_806F358;
+ break;
+ case 0xFFFE:
+ // Move was already known by the mon. Go on the the next move to be learned.
+ TeachMonMoveInPartyMenu(taskId);
+ break;
+ default:
+ // Mon automatically learned a move because it knew less than four moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[learnedMove]);
- StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
- sub_806E834(gStringVar4, 1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
+ sub_806E834(gStringVar4, 1);
- gTasks[taskId].func = Task_TeamMonTMMove3;
- break;
+ gTasks[taskId].func = Task_TeamMonTMMove3;
+ break;
}
}
@@ -5499,9 +5309,13 @@ _08070F8A:\n\
}
#endif // NONMATCHING
+
+// Maybe this goes in start_menu.c
+#if !DEBUG
void unref_sub_8070F90(void)
{
FlagSet(FLAG_SYS_POKEDEX_GET);
FlagSet(FLAG_SYS_POKEMON_GET);
FlagSet(FLAG_SYS_POKENAV_GET);
}
+#endif
diff --git a/src/field/pc_screen_effect.c b/src/pc_screen_effect.c
index e0853e01d..dcc3bc9c9 100644
--- a/src/field/pc_screen_effect.c
+++ b/src/pc_screen_effect.c
@@ -2,18 +2,7 @@
#include "main.h"
#include "palette.h"
#include "sprite.h"
-
-struct UnkStruct
-{
- /*0x00*/ u16 tileTag;
- /*0x02*/ u16 paletteTag;
- /*0x04*/ u16 unk04;
- /*0x06*/ u16 unk06;
- /*0x08*/ u16 unk08;
- /*0x0A*/ u16 unk0A;
- /*0x0C*/ s16 unk0C;
- /*0x10*/ u32 selectedPalettes;
-};
+#include "pc_screen_effect.h"
void sub_80C603C(void);
void sub_80C6078(void);
@@ -30,7 +19,7 @@ extern const u16 gUnknownPal_083D18EC[16];
extern const u8 gUnknownGfx_083D190C[128];
-EWRAM_DATA struct UnkStruct *gUnknown_020387EC = NULL;
+EWRAM_DATA struct PCScreenEffectStruct *gUnknown_020387EC = NULL;
const struct SpriteSheet gUnknown_083D1898 = { gUnknownGfx_083D190C, sizeof(gUnknownGfx_083D190C), 0 };
@@ -58,7 +47,7 @@ const struct SpriteTemplate gSpriteTemplate_83D18C0 =
sub_80C6130,
};
-void sub_80C5CD4(struct UnkStruct *unkStruct)
+void sub_80C5CD4(struct PCScreenEffectStruct *unkStruct)
{
u16 i;
diff --git a/src/engine/play_time.c b/src/play_time.c
index 9882c9c4b..9882c9c4b 100644
--- a/src/engine/play_time.c
+++ b/src/play_time.c
diff --git a/src/field/player_pc.c b/src/player_pc.c
index 27427ecaa..27427ecaa 100644
--- a/src/field/player_pc.c
+++ b/src/player_pc.c
diff --git a/src/field/pokeblock.c b/src/pokeblock.c
index e08a65f49..6804f55d6 100644
--- a/src/field/pokeblock.c
+++ b/src/pokeblock.c
@@ -91,7 +91,8 @@ static const u8 *gUnknown_03000758;
#define GFX_TAG_POKEBLOCK_CASE 14800
-const s8 gPokeblockFlavorCompatibilityTable[] = {
+const s8 gPokeblockFlavorCompatibilityTable[] =
+{
// Cool, Beauty, Cute, Smart, Tough
0, 0, 0, 0, 0, // Hardy
1, 0, 0, 0, -1, // Lonely
@@ -120,14 +121,16 @@ const s8 gPokeblockFlavorCompatibilityTable[] = {
0, 0, 0, 0, 0 // Quirky
};
-void (*const gUnknown_083F7EA8[])(void) = {
+void (*const gUnknown_083F7EA8[])(void) =
+{
sub_80A5B40,
c2_exit_to_overworld_2_switch,
sub_802E424,
c2_exit_to_overworld_2_switch
};
-const u8 *const gPokeblockNames[] = {
+const u8 *const gPokeblockNames[] =
+{
NULL,
ContestStatsText_RedPokeBlock,
ContestStatsText_BluePokeBlock,
@@ -145,7 +148,8 @@ const u8 *const gPokeblockNames[] = {
ContestStatsText_GoldPokeBlock
};
-const struct MenuAction2 gUnknown_083F7EF4[] = {
+const struct MenuAction2 gUnknown_083F7EF4[] =
+{
{OtherText_Use, sub_810C508},
{OtherText_Toss, sub_810C5C0},
{gOtherText_CancelNoTerminator, sub_810C748},
@@ -161,21 +165,25 @@ const struct YesNoFuncTable gUnknown_083F7F24 = {sub_810C610, sub_810C668};
const u8 UnreferencedData_083F7F2C[] = {0x16, 0x17, 0x18, 0x21, 0x2f};
-const struct OamData gOamData_83F7F34 = {
+const struct OamData gOamData_83F7F34 =
+{
.size = 3,
.priority = 2
};
-const union AnimCmd gSpriteAnim_83F7F3C[] = {
+const union AnimCmd gSpriteAnim_83F7F3C[] =
+{
ANIMCMD_FRAME(.imageValue = 0, .duration = 0),
ANIMCMD_END
};
-const union AnimCmd *const gSpriteAnimTable_83F7F44[] = {
+const union AnimCmd *const gSpriteAnimTable_83F7F44[] =
+{
gSpriteAnim_83F7F3C
};
-const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = {
+const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] =
+{
AFFINEANIMCMD_FRAME(0, 0, -2, 2),
AFFINEANIMCMD_FRAME(0, 0, 2, 4),
AFFINEANIMCMD_FRAME(0, 0, -2, 4),
@@ -183,22 +191,26 @@ const union AffineAnimCmd gSpriteAffineAnim_83F7F48[] = {
AFFINEANIMCMD_END
};
-const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] = {
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83F7F70[] =
+{
gSpriteAffineAnim_83F7F48
};
-const struct CompressedSpriteSheet gUnknown_083F7F74 = {
+const struct CompressedSpriteSheet gUnknown_083F7F74 =
+{
gMenuPokeblockDevice_Gfx,
0x800,
GFX_TAG_POKEBLOCK_CASE
};
-const struct CompressedSpritePalette gUnknown_083F7F7C = {
+const struct CompressedSpritePalette gUnknown_083F7F7C =
+{
gMenuPokeblockDevice_Pal,
GFX_TAG_POKEBLOCK_CASE
};
-const struct SpriteTemplate gSpriteTemplate_83F7F84 = {
+const struct SpriteTemplate gSpriteTemplate_83F7F84 =
+{
GFX_TAG_POKEBLOCK_CASE,
GFX_TAG_POKEBLOCK_CASE,
&gOamData_83F7F34,
@@ -208,12 +220,25 @@ const struct SpriteTemplate gSpriteTemplate_83F7F84 = {
SpriteCallbackDummy
};
-const struct Pokeblock gUnknown_083F7F9C[] = {
- { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20},
- { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20},
- { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20},
- { PBLOCK_CLR_GREEN, 0, 0, 0, 20, 0, 20},
- { PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20}
+const struct Pokeblock gUnknown_083F7F9C[] =
+{
+ { PBLOCK_CLR_RED, 20, 0, 0, 0, 0, 20 },
+ { PBLOCK_CLR_BLUE, 0, 20, 0, 0, 0, 20 },
+ { PBLOCK_CLR_PINK, 0, 0, 20, 0, 0, 20 },
+ { PBLOCK_CLR_GREEN, 0, 0, 0, 20, 0, 20 },
+ { PBLOCK_CLR_YELLOW, 0, 0, 0, 0, 20, 20 },
+#if DEBUG
+ { PBLOCK_CLR_PURPLE, 20, 0, 20, 0, 0, 20 },
+ { PBLOCK_CLR_INDIGO, 0, 20, 0, 20, 0, 20 },
+ { PBLOCK_CLR_BROWN, 0, 0, 20, 0, 20, 20 },
+ { PBLOCK_CLR_LITEBLUE, 20, 0, 0, 20, 0, 20 },
+ { PBLOCK_CLR_OLIVE, 0, 20, 0, 0, 20, 20 },
+ { PBLOCK_CLR_GRAY, 0, 2, 0, 2, 2, 0 },
+ { PBLOCK_CLR_BLACK, 3, 3, 3, 4, 3, 0 },
+ { PBLOCK_CLR_WHITE, 1, 1, 1, 1, 1, 1 },
+ { PBLOCK_CLR_GOLD, 20, 0, 0, 0, 0, 20 },
+ { 0 },
+#endif
};
// text
@@ -424,21 +449,20 @@ void OpenPokeblockCaseOnFeeder(void)
SetMainCallback2(sub_810B96C);
}
-#ifdef DEBUG
+#if DEBUG
void debug_sub_8120F98(void)
{
u8 i;
- for (i=0; i<40 && gUnknown_083F7F9C[i].color != 0; i++)
- {
+
+ for (i = 0; i < 40 && gUnknown_083F7F9C[i].color != 0; i++)
gSaveBlock1.pokeblocks[i] = gUnknown_083F7F9C[i];
- }
}
#endif
static void sub_810BB0C(void)
{
BasicInitMenuWindow(&gWindowTemplate_81E6E34);
- sub_8072BD8(ItemId_GetItem(ITEM_POKEBLOCK_CASE)->name, 2, 1, 0x48);
+ sub_8072BD8(ItemId_GetName(ITEM_POKEBLOCK_CASE), 2, 1, 0x48);
}
static void sub_810BB30(void)
@@ -457,7 +481,7 @@ static void sub_810BB88(u8 a0)
u8 y;
u8 *buf;
BasicInitMenuWindow(&gWindowTemplate_81E6E34);
- for (i=a0; i<=a0+8; i++)
+ for (i = a0; i <= a0 + 8; i++)
{
y = (i - a0) << 1;
if (i == gUnknown_02039248.unk2)
@@ -1046,7 +1070,7 @@ s8 GetFirstFreePokeblockSlot(void)
return -1;
}
-bool8 sub_810CA34(struct Pokeblock *pokeblock)
+bool8 sub_810CA34(const struct Pokeblock *pokeblock)
{
s8 idx = GetFirstFreePokeblockSlot();
if (idx == -1)
diff --git a/src/pokemon/pokeblock_feed.c b/src/pokeblock_feed.c
index 2f2ce2f8f..2f2ce2f8f 100644
--- a/src/pokemon/pokeblock_feed.c
+++ b/src/pokeblock_feed.c
diff --git a/src/pokemon/pokedex.c b/src/pokedex.c
index cbd816206..711dc69fa 100644
--- a/src/pokemon/pokedex.c
+++ b/src/pokedex.c
@@ -185,7 +185,7 @@ static const u8 gUnknown_0839FA7C[] = INCBIN_U8("graphics/pokedex/noball.4bpp.lz
extern const u8 gUnknown_0839FA7C[];
#endif
-#include "../data/pokedex_orders.h"
+#include "data/pokedex_orders.h"
static const struct OamData gOamData_83A0404 =
{
.y = 160,
@@ -514,9 +514,9 @@ static const u8 gUnknown_083A05F1[] = {16, 8, 4, 2, 1};
const u8 gEmptySpacce_83A05F6[] = {0, 0}; // Padding, maybe?
static const u8 gUnknown_083A05F8[] = _("");
#if ENGLISH
-#include "../data/pokedex_entries_en.h"
+#include "data/pokedex_entries_en.h"
#elif GERMAN
-#include "../data/pokedex_entries_de.h"
+#include "data/pokedex_entries_de.h"
#endif
static const u16 gUnknown_083B4EC4[16] = {0};
static const u8 *const sMonFootprintTable[] =
@@ -1273,7 +1273,7 @@ static u8 sub_8091260(u16 num, u8, u8, u8);
static void sub_8091304(const u8 *name, u8, u8);
static void sub_8091458(u16 height, u8 i, u8 i1);
static void sub_8091564(u16 weight, u8 i, u8 i1);
-static void sub_8091738(u16, u16, u16);
+void sub_8091738(u16, u16, u16);
static void sub_80917CC(u16 i, u16 i1);
static u16 sub_8091818(u8, u16, u16, u16);
u16 sub_80918EC(u16 a, s16 b, s16 c, u16 d);
@@ -4449,7 +4449,7 @@ static void sub_8091564(u16 arg0, u8 left, u8 top)
}
#endif
-static void sub_8091738(u16 num, u16 b, u16 c)
+void sub_8091738(u16 num, u16 b, u16 c)
{
u8 arr[0x80];
u16 i;
diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c
new file mode 100644
index 000000000..67ca276c4
--- /dev/null
+++ b/src/pokedex_area_screen.c
@@ -0,0 +1,20 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+EWRAM_DATA u16 gUnknown_02039260 = 0;
+EWRAM_DATA u16 gUnknown_02039262 = 0;
+EWRAM_DATA u16 gUnknown_02039264 = 0;
+EWRAM_DATA u16 gUnknown_02039266 = 0;
+EWRAM_DATA u16 gUnknown_02039268 = 0;
+EWRAM_DATA u16 gUnknown_0203926A = 0;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/pokemon/pokedex_cry_screen.c b/src/pokedex_cry_screen.c
index 912b9aabd..912b9aabd 100644
--- a/src/pokemon/pokedex_cry_screen.c
+++ b/src/pokedex_cry_screen.c
diff --git a/src/pokemon/mail.c b/src/pokemon/mail.c
deleted file mode 100644
index 921a3ad93..000000000
--- a/src/pokemon/mail.c
+++ /dev/null
@@ -1,599 +0,0 @@
-#include "global.h"
-#include "mail.h"
-#include "easy_chat.h"
-#include "constants/items.h"
-#include "graphics.h"
-#include "mail_data.h"
-#include "menu.h"
-#include "menu_helpers.h"
-#include "name_string_util.h"
-#include "palette.h"
-#include "pokemon_icon.h"
-#include "overworld.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "strings2.h"
-#include "task.h"
-#include "text.h"
-#include "scanline_effect.h"
-#include "ewram.h"
-
-struct UnkMailStruct
-{
- u8 unk_0_0:2;
- u8 unk_0_2:2;
- u8 unk_0_4:4;
-};
-
-struct MailLayout
-{
- u8 var0;
- u8 var1;
- u8 var2;
- u8 var3_0:4;
- u8 var3_4:4;
- const struct UnkMailStruct *var4;
-};
-
-struct Unk2000000
-{
- /* 0x00*/ u8 words[8][27];
- /* 0xD8*/ u8 varD8[20];
- /* 0xEC*/ MainCallback varEC;
- /* 0xF0*/ MainCallback varF0;
- /* 0xF4*/ struct MailStruct *varF4;
- /* 0xF8*/ u8 varF8;
- /* 0xF9*/ u8 varF9;
- /* 0xFA*/ u8 varFA;
- /* 0xFB*/ u8 varFB;
- /* 0xFC*/ u8 varFC;
- u8 padFD[1];
- /* 0xFE*/ u8 varFE;
- /* 0xFF*/ u8 varFF;
- /*0x100*/ u8 var100;
- u8 pad101[3];
- /*0x104*/ MainCallback var104;
- /*0x108*/ MainCallback var108;
- /*0x10C*/ const struct MailLayout *var10C;
-};
-
-struct MailGraphics
-{
- const u16 *palette;
- const u8 *tiles;
- const u8 *tileMap;
- u16 var0C;
- u16 var0E;
- u16 color10;
- u16 color12;
-};
-
-const u16 gUnknown_083E562C[][2] =
-{
- {0x6ACD, 0x51A5},
- {0x45FC, 0x38D4},
-};
-
-const struct MailGraphics gMailGraphicsTable[] =
-{
- {
- .palette = gMailPalette_Orange,
- .tiles = gMailTiles_Orange,
- .tileMap = gMailTilemap_Orange,
- .var0C = 0x2C0,
- .var0E = 0,
- .color10 = 0x294A,
- .color12 = 0x6739,
- },
- {
- .palette = gMailPalette_Harbor,
- .tiles = gMailTiles_Harbor,
- .tileMap = gMailTilemap_Harbor,
- .var0C = 0x2E0,
- .var0E = 0,
- .color10 = 0x7FFF,
- .color12 = 0x4631,
- },
- {
- .palette = gMailPalette_Glitter,
- .tiles = gMailTiles_Glitter,
- .tileMap = gMailTilemap_Glitter,
- .var0C = 0x400,
- .var0E = 0,
- .color10 = 0x294A,
- .color12 = 0x6739,
- },
- {
- .palette = gMailPalette_Mech,
- .tiles = gMailTiles_Mech,
- .tileMap = gMailTilemap_Mech,
- .var0C = 0x1E0,
- .var0E = 0,
- .color10 = 0x7FFF,
- .color12 = 0x4631,
- },
- {
- .palette = gMailPalette_Wood,
- .tiles = gMailTiles_Wood,
- .tileMap = gMailTilemap_Wood,
- .var0C = 0x2E0,
- .var0E = 0,
- .color10 = 0x7FFF,
- .color12 = 0x4631,
- },
- {
- .palette = gMailPalette_Wave,
- .tiles = gMailTiles_Wave,
- .tileMap = gMailTilemap_Wave,
- .var0C = 0x300,
- .var0E = 0,
- .color10 = 0x294A,
- .color12 = 0x6739,
- },
- {
- .palette = gMailPalette_Bead,
- .tiles = gMailTiles_Bead,
- .tileMap = gMailTilemap_Bead,
- .var0C = 0x140,
- .var0E = 0,
- .color10 = 0x7FFF,
- .color12 = 0x4631,
- },
- {
- .palette = gMailPalette_Shadow,
- .tiles = gMailTiles_Shadow,
- .tileMap = gMailTilemap_Shadow,
- .var0C = 0x300,
- .var0E = 0,
- .color10 = 0x7FFF,
- .color12 = 0x4631,
- },
- {
- .palette = gMailPalette_Tropic,
- .tiles = gMailTiles_Tropic,
- .tileMap = gMailTilemap_Tropic,
- .var0C = 0x220,
- .var0E = 0,
- .color10 = 0x294A,
- .color12 = 0x6739,
- },
- {
- .palette = gMailPalette_Dream,
- .tiles = gMailTiles_Dream,
- .tileMap = gMailTilemap_Dream,
- .var0C = 0x340,
- .var0E = 0,
- .color10 = 0x294A,
- .color12 = 0x6739,
- },
- {
- .palette = gMailPalette_Fab,
- .tiles = gMailTiles_Fab,
- .tileMap = gMailTilemap_Fab,
- .var0C = 0x2A0,
- .var0E = 0,
- .color10 = 0x294A,
- .color12 = 0x6739,
- },
- {
- .palette = gMailPalette_Retro,
- .tiles = gMailTiles_Retro,
- .tileMap = gMailTilemap_Retro,
- .var0C = 0x520,
- .var0E = 0,
- .color10 = 0x294A,
- .color12 = 0x6739,
- },
-};
-
-const struct UnkMailStruct Unknown_3E5724[] =
-{
- {0, 3, 0},
- {0, 3, 0},
- {0, 3, 0},
-};
-
-const struct MailLayout gUnknown_083E5730[] =
-{
- {3, 15, 27, 4, 3, Unknown_3E5724},
- {3, 15, 27, 4, 3, Unknown_3E5724},
- {3, 15, 27, 4, 3, Unknown_3E5724},
- {3, 15, 27, 4, 3, Unknown_3E5724},
- {3, 15, 27, 4, 3, Unknown_3E5724},
- {3, 15, 27, 4, 3, Unknown_3E5724},
- {3, 15, 27, 4, 3, Unknown_3E5724},
- {3, 15, 27, 4, 3, Unknown_3E5724},
- {3, 15, 27, 4, 3, Unknown_3E5724},
- {3, 15, 27, 4, 3, Unknown_3E5724},
- {3, 16, 27, 4, 3, Unknown_3E5724},
- {3, 15, 27, 4, 3, Unknown_3E5724},
-};
-
-const struct UnkMailStruct Unknown_3E5790[] =
-{
- {0, 2, 0},
- {0, 2, 0},
- {0, 2, 0},
- {0, 2, 0},
- {0, 1, 0},
-};
-
-const struct MailLayout gUnknown_083E57A4[] =
-{
- {5, 15, 15, 4, 3, Unknown_3E5790},
- {5, 15, 15, 4, 3, Unknown_3E5790},
- {5, 15, 16, 4, 3, Unknown_3E5790},
- {5, 15, 15, 4, 3, Unknown_3E5790},
- {5, 15, 15, 4, 3, Unknown_3E5790},
- {5, 15, 16, 4, 3, Unknown_3E5790},
- {5, 15, 16, 4, 3, Unknown_3E5790},
- {5, 15, 15, 4, 3, Unknown_3E5790},
- {5, 15, 15, 4, 3, Unknown_3E5790},
- {5, 15, 15, 4, 3, Unknown_3E5790},
- {5, 16, 15, 4, 3, Unknown_3E5790},
- {5, 15, 15, 4, 3, Unknown_3E5790},
-};
-
-// XXX: what is this?
-static u8 *const sSharedMemPtr = gSharedMem;
-
-static u8 sub_80F8A28(void);
-static void sub_80F8D50(void);
-static void sub_80F8DA0(void);
-static void sub_80F8E80(void);
-static void sub_80F8F18(void);
-static void sub_80F8F2C(void);
-static void sub_80F8F58(void);
-static void sub_80F8F78(void);
-static void sub_80F8FB4(void);
-
-void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
-{
- u16 mailDesign;
- u16 buffer[2];
-
- ewram0_4.varFF = GAME_LANGUAGE;
- ewram0_4.var100 = 1;
- ewram0_4.var104 = (MainCallback)EasyChat_GetWordText;
- ewram0_4.var108 = (MainCallback)ConvertEasyChatWordsToString;
-
- mailDesign = arg0->itemId - ITEM_ORANGE_MAIL;
-
- if (mailDesign <= 11)
- {
- ewram0_4.varFA = arg0->itemId - ITEM_ORANGE_MAIL;
- }
- else
- {
- ewram0_4.varFA = 0;
- arg2 = FALSE;
- }
-
- switch (ewram0_4.var100)
- {
- case 0:
- default:
- ewram0_4.var10C = &gUnknown_083E5730[ewram0_4.varFA];
- break;
-
- case 1:
- ewram0_4.var10C = &gUnknown_083E57A4[ewram0_4.varFA];
- break;
- }
-
- if (((MailSpeciesToSpecies(arg0->species, buffer) << 16) + 0xFFFF0000) <= (410 << 16))
- {
- switch (ewram0_4.varFA)
- {
- case 6:
- ewram0_4.varFB = 1;
- break;
-
- case 9:
- ewram0_4.varFB = 2;
- break;
-
- default:
- ewram0_4.varFB = 0;
- break;
- }
- }
- else
- {
- ewram0_4.varFB = 0;
- }
-
-
- ewram0_4.varF4 = arg0;
- ewram0_4.varEC = arg1;
- ewram0_4.varF8 = arg2;
-
- SetMainCallback2(sub_80F8D50);
-}
-
-#define RETURN_UP_STATE break
-#define RETURN_SKIP_STATE return FALSE
-
-static u8 sub_80F8A28(void)
-{
- switch (gMain.state)
- {
- case 0:
- SetVBlankCallback(NULL);
- ScanlineEffect_Stop();
- REG_DISPCNT = 0;
- RETURN_UP_STATE;
-
- case 1: CpuFill16(0, (void *)OAM, OAM_SIZE);
- RETURN_UP_STATE;
-
- case 2:
- ResetPaletteFade();
- RETURN_UP_STATE;
-
- case 3:
- ResetTasks();
- RETURN_UP_STATE;
-
- case 4:
- ResetSpriteData();
- RETURN_UP_STATE;
-
- case 5:
- FreeAllSpritePalettes();
- REG_BG0HOFS = 0;
- REG_BG0VOFS = 0;
- REG_BG1HOFS = 0;
- REG_BG1VOFS = 0;
- REG_BG2VOFS = 0;
- REG_BG2HOFS = 0;
- REG_BG3HOFS = 0;
- REG_BG3VOFS = 0;
- REG_BLDCNT = 0;
- REG_BLDALPHA = 0;
- RETURN_UP_STATE;
-
- case 6:
- Text_LoadWindowTemplate(&gWindowTemplate_81E6DFC);
- RETURN_UP_STATE;
-
- case 7:
- MultistepInitMenuWindowBegin(&gWindowTemplate_81E6DFC);
- RETURN_UP_STATE;
-
- case 8:
- if (MultistepInitMenuWindowContinue() == 0)
- {
- return FALSE;
- }
- RETURN_UP_STATE;
-
- case 9:
- Menu_EraseScreen();
- RETURN_UP_STATE;
-
- case 10: CpuFill16(1, (void *)(VRAM + 0x4800), 0x800);
- RETURN_UP_STATE;
-
- case 11:
- LoadPalette(gMailGraphicsTable[ewram0_4.varFA].palette, 0, 16 * 2);
- RETURN_UP_STATE;
-
- case 12:
- LZ77UnCompVram(gMailGraphicsTable[ewram0_4.varFA].tileMap, (void *)(VRAM + 0x4000));
- RETURN_UP_STATE;
-
- case 13:
- LZ77UnCompVram(gMailGraphicsTable[ewram0_4.varFA].tiles, (void *)(VRAM));
-
- gPlttBufferUnfaded[241] = gMailGraphicsTable[ewram0_4.varFA].color10;
- gPlttBufferUnfaded[248] = gMailGraphicsTable[ewram0_4.varFA].color12;
- gPlttBufferUnfaded[10] = gUnknown_083E562C[gSaveBlock2.playerGender][0];
- gPlttBufferUnfaded[11] = gUnknown_083E562C[gSaveBlock2.playerGender][1];
- RETURN_UP_STATE;
-
- case 14:
- if (ewram0_4.varF8 != 0)
- {
- sub_80F8DA0();
- }
- RETURN_UP_STATE;
-
- case 15:
- if (ewram0_4.varF8 != 0)
- {
- sub_80F8E80();
- }
-
- SetVBlankCallback(sub_80F8F18);
- gPaletteFade.bufferTransferDisabled = 1;
- RETURN_UP_STATE;
-
- case 16:
- {
- u16 local1;
-
- local1 = sub_809D4A8(ewram0_4.varF4->species);
-
- switch (ewram0_4.varFB)
- {
- case 1:
- sub_809D580(local1);
- ewram0_4.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 96, 128, 0);
- break;
-
- case 2:
- sub_809D580(local1);
- ewram0_4.varFC = sub_809D3A4(local1, SpriteCallbackDummy, 40, 128, 0);
- break;
- }
- RETURN_UP_STATE;
- }
-
- case 17:
- if (sub_8055870() != TRUE)
- {
- RETURN_UP_STATE;
- }
- RETURN_SKIP_STATE;
-
- case 18:
- REG_BG0CNT = BGCNT_PRIORITY(0) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(31) | BGCNT_16COLOR | BGCNT_TXT256x512;
- REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(8) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(9) | BGCNT_16COLOR | BGCNT_TXT256x256;
- REG_BLDCNT = 0;
- REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
- BeginNormalPaletteFade(-1, 0, 16, 0, 0);
- gPaletteFade.bufferTransferDisabled = 0;
- ewram0_4.varF0 = sub_80F8F58;
- return TRUE;
-
- default:
- return FALSE;
- }
-
- gMain.state += 1;
- return FALSE;
-}
-
-static void sub_80F8D50(void)
-{
- do
- {
- if (sub_80F8A28() == 1)
- {
- SetMainCallback2(sub_80F8F2C);
- return;
- }
- } while (sub_80F9344() != 1);
-}
-
-static u8 *sub_80F8D7C(u8 *dest, u8 *src)
-{
- u16 length;
-
- StringCopy(dest, src);
- SanitizeNameString(dest);
-
- length = StringLength(dest);
-
- return dest + length;
-}
-
-static void sub_80F8DA0(void)
-{
- u16 i;
- u8 r6;
- u8 *ptr;
-
- r6 = 0;
- for (i = 0; i < ewram0_4.var10C->var0; i++)
- {
- ConvertEasyChatWordsToString(ewram0_4.words[i], &ewram0_4.varF4->words[r6], ewram0_4.var10C->var4[i].unk_0_2, 1);
- r6 += ewram0_4.var10C->var4[i].unk_0_2;
- }
- ptr = ewram0_4.varD8;
- if (ewram0_4.var100 == 0)
- {
- ptr = sub_80F8D7C(ptr, ewram0_4.varF4->playerName);
- StringCopy(ptr, gOtherText_From);
- ewram0_4.varF9 = ewram0_4.var10C->var2 - StringLength(ewram0_4.varD8);
-
- }
- else
- {
- ptr = StringCopy(ptr, gOtherText_From);
- sub_80F8D7C(ptr, ewram0_4.varF4->playerName);
- ewram0_4.varF9 = ewram0_4.var10C->var2;
- }
-}
-
-static void sub_80F8E80(void)
-{
- u16 pos;
- u8 x;
- u8 y = 0;
-
- for (pos = 0; pos < ewram0_4.var10C->var0; pos++)
- {
- if (ewram0_4.words[pos][0] == 0xFF)
- {
- continue;
- }
-
- if (ewram0_4.words[pos][0] == 0x00)
- {
- continue;
- }
-
- x = ewram0_4.var10C->var4[pos].unk_0_4;
- y += ewram0_4.var10C->var4[pos].unk_0_0;
- Menu_PrintText(ewram0_4.words[pos], ewram0_4.var10C->var3_4 + x, ewram0_4.var10C->var3_0 + y);
- y += 2;
- }
-
- Menu_PrintText(ewram0_4.varD8, ewram0_4.varF9, ewram0_4.var10C->var1);
-}
-
-static void sub_80F8F18(void)
-{
- LoadOam();
- ProcessSpriteCopyRequests();
- TransferPlttBuffer();
-}
-
-static void sub_80F8F2C(void)
-{
- if (ewram0_4.varFB != 0)
- {
- AnimateSprites();
- BuildOamBuffer();
- }
-
- ewram0_4.varF0();
-}
-
-static void sub_80F8F58(void)
-{
- u8 local0;
-
- local0 = UpdatePaletteFade();
- if (local0 == 0)
- {
- ewram0_4.varF0 = sub_80F8F78;
- }
-}
-
-static void sub_80F8F78(void)
-{
- if (gMain.newKeys & (A_BUTTON | B_BUTTON))
- {
- BeginNormalPaletteFade(-1, 0, 0, 16, 0);
- ewram0_4.varF0 = sub_80F8FB4;
- }
-}
-
-static void sub_80F8FB4(void)
-{
- u16 local1;
-
- if (UpdatePaletteFade())
- {
- return;
- }
-
- SetMainCallback2(ewram0_4.varEC);
- switch (ewram0_4.varFB)
- {
- case 2:
- case 1:
- local1 = sub_809D4A8(ewram0_4.varF4->species);
- sub_809D608(local1);
-
- sub_809D510(&gSprites[ewram0_4.varFC]);
- break;
- }
-
- memset(&ewram0_4, 0, 0x110);
- ResetPaletteFade();
-}
diff --git a/src/pokemon/pokemon_storage_system.c b/src/pokemon/pokemon_storage_system.c
deleted file mode 100644
index 001cebe45..000000000
--- a/src/pokemon/pokemon_storage_system.c
+++ /dev/null
@@ -1,93 +0,0 @@
-#include "global.h"
-#include "pokemon_storage_system.h"
-#include "menu.h"
-#include "string_util.h"
-#include "ewram.h"
-
-struct StorageAction {
- u8 *text;
- u8 format;
-};
-
-extern const struct StorageAction gUnknown_083B6DF4[];
-
-EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
-
-void sub_8098898(u8 index) {
- u8 *ptr;
-
- Menu_DrawStdWindowFrame(10, 16, 29, 19);
-
- switch (gUnknown_083B6DF4[index].format)
- {
-
- case 2:
- ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
- ptr = StringCopy(ptr, gUnk20011fa);
- break;
-
- case 5:
- ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
- ptr = StringCopy(ptr, gUnk20026e4);
- break;
-
- case 1:
- // {var} + " is selected."
- ptr = StringCopy(gUnk2002694, gUnk20011fa);
- ptr = StringCopy(ptr, gUnknown_083B6DF4[index].text);
- break;
-
- case 4:
- // {var} + " was released."
- ptr = StringCopy(gUnk2002694, gUnk20026e4);
-#if ENGLISH
- ptr = StringCopy(ptr, gUnknown_083B6DF4[index].text);
-#elif GERMAN
- ptr = de_sub_8073174(gUnk2002694, gUnknown_083B6DF4[index].text);
-#endif
- break;
-
- case 3:
- {
- u8 *stringLength;
- u8 *text;
-
- text = gUnknown_083B6DF4[index].text;
- stringLength = &text[StringLength(text)] + 1;
-
- ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
- ptr = StringCopy(ptr, gUnk20011fa);
- ptr = StringCopy(ptr, stringLength);
- }
- break;
-
- case 6:
- // "Bye-bye, ".substr(0, -1) + {var} + "Bye-bye, !".substr(-1, 1)
- {
- u8 *stringLength;
- u8 *text;
-
- text = gUnknown_083B6DF4[index].text;
- stringLength = &text[StringLength(text)] - 1;
-
- ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
- ptr = StringCopy(ptr - 1, gUnk20026e4);
- ptr = StringCopy(ptr, stringLength);
- }
- break;
-
- case 0:
- default:
- ptr = StringCopy(gUnk2002694, gUnknown_083B6DF4[index].text);
- break;
- }
-
- while (ptr < gUnk20026A6)
- {
- ptr[0] = CHAR_SPACE;
- ptr++;
- }
-
- ptr[0] = EOS;
- Menu_PrintText(gUnk2002694, 11, 17);
-}
diff --git a/src/pokemon/pokemon_1.c b/src/pokemon_1.c
index 0242e7444..a23bb3324 100644
--- a/src/pokemon/pokemon_1.c
+++ b/src/pokemon_1.c
@@ -41,7 +41,7 @@ const struct SpindaSpot gSpindaSpotGraphics[] =
{34, 33, INCBIN_U16("graphics/spinda_spots/spot_3.bin")}
};
-#include "../data/pokemon/item_effects.h"
+#include "data/pokemon/item_effects.h"
const s8 gNatureStatTable[][5] =
{
@@ -73,14 +73,14 @@ const s8 gNatureStatTable[][5] =
{ 0, 0, 0, 0, 0} // Quirky
};
-#include "../data/pokemon/tmhm_learnsets.h"
-#include "../data/pokemon/trainer_class_lookups.h"
-#include "../data/pokemon/cry_ids.h"
-#include "../data/pokemon/experience_tables.h"
-#include "../data/pokemon/base_stats.h"
-#include "../data/pokemon/level_up_learnsets.h"
-#include "../data/pokemon/evolution.h"
-#include "../data/pokemon/level_up_learnset_pointers.h"
+#include "data/pokemon/tmhm_learnsets.h"
+#include "data/pokemon/trainer_class_lookups.h"
+#include "data/pokemon/cry_ids.h"
+#include "data/pokemon/experience_tables.h"
+#include "data/pokemon/base_stats.h"
+#include "data/pokemon/level_up_learnsets.h"
+#include "data/pokemon/evolution.h"
+#include "data/pokemon/level_up_learnset_pointers.h"
void ZeroBoxMonData(struct BoxPokemon *boxMon)
{
@@ -524,7 +524,54 @@ void CalculateMonStats(struct Pokemon *mon)
SetMonData(mon, MON_DATA_HP, &currentHP);
}
-void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest)
+#if DEBUG
+void debug_sub_803F55C(struct Pokemon *mon)
+{
+ s32 currentHP = GetMonData(mon, MON_DATA_HP, NULL);
+ s32 hpIV = GetMonData(mon, MON_DATA_HP_IV, NULL);
+ s32 hpEV = GetMonData(mon, MON_DATA_HP_EV, NULL);
+ s32 attackIV = GetMonData(mon, MON_DATA_ATK_IV, NULL);
+ s32 attackEV = GetMonData(mon, MON_DATA_ATK_EV, NULL);
+ s32 defenseIV = GetMonData(mon, MON_DATA_DEF_IV, NULL);
+ s32 defenseEV = GetMonData(mon, MON_DATA_DEF_EV, NULL);
+ s32 speedIV = GetMonData(mon, MON_DATA_SPEED_IV, NULL);
+ s32 speedEV = GetMonData(mon, MON_DATA_SPEED_EV, NULL);
+ s32 spAttackIV = GetMonData(mon, MON_DATA_SPATK_IV, NULL);
+ s32 spAttackEV = GetMonData(mon, MON_DATA_SPATK_EV, NULL);
+ s32 spDefenseIV = GetMonData(mon, MON_DATA_SPDEF_IV, NULL);
+ s32 spDefenseEV = GetMonData(mon, MON_DATA_SPDEF_EV, NULL);
+ u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
+ s32 level = GetLevelFromMonExp(mon);
+ s32 newMaxHP;
+
+ SetMonData(mon, MON_DATA_LEVEL, &level);
+
+ if (species == SPECIES_SHEDINJA)
+ {
+ newMaxHP = 1;
+ }
+ else
+ {
+ s32 n = 2 * gBaseStats[species].baseHP + hpIV;
+ newMaxHP = (((n + hpEV / 4) * level) / 100) + level + 10;
+ }
+
+ SetMonData(mon, MON_DATA_MAX_HP, &newMaxHP);
+
+ CALC_STAT(baseAttack, attackIV, attackEV, 1, MON_DATA_ATK)
+ CALC_STAT(baseDefense, defenseIV, defenseEV, 2, MON_DATA_DEF)
+ CALC_STAT(baseSpeed, speedIV, speedEV, 3, MON_DATA_SPEED)
+ CALC_STAT(baseSpAttack, spAttackIV, spAttackEV, 4, MON_DATA_SPATK)
+ CALC_STAT(baseSpDefense, spDefenseIV, spDefenseEV, 5, MON_DATA_SPDEF)
+
+ if (newMaxHP < currentHP)
+ currentHP = newMaxHP;
+
+ SetMonData(mon, MON_DATA_HP, &currentHP);
+}
+#endif
+
+void ExpandBoxMon(const struct BoxPokemon *src, struct Pokemon *dest)
{
u32 value = 0;
dest->box = *src;
diff --git a/src/pokemon/pokemon_2.c b/src/pokemon_2.c
index b941ed2ab..7fd1aa7b2 100644
--- a/src/pokemon/pokemon_2.c
+++ b/src/pokemon_2.c
@@ -1,5 +1,6 @@
#include "global.h"
#include "constants/hold_effects.h"
+#include "constants/moves.h"
#include "battle.h"
#include "battle_util.h"
#include "data2.h"
@@ -569,7 +570,7 @@ u32 GetBoxMonData(struct BoxPokemon *boxMon, s32 field, u8 *data)
u16 *moves = (u16 *)data;
s32 i = 0;
- while (moves[i] != 355)
+ while (moves[i] != NUM_MOVES)
{
u16 move = moves[i];
if (substruct1->moves[0] == move
diff --git a/src/pokemon/pokemon_3.c b/src/pokemon_3.c
index 9346031a6..9346031a6 100644
--- a/src/pokemon/pokemon_3.c
+++ b/src/pokemon_3.c
diff --git a/src/pokemon/pokemon_icon.c b/src/pokemon_icon.c
index b1b462761..b1b462761 100644
--- a/src/pokemon/pokemon_icon.c
+++ b/src/pokemon_icon.c
diff --git a/src/pokemon/pokemon_item_effect.c b/src/pokemon_item_effect.c
index 4ebece3b3..4ebece3b3 100644
--- a/src/pokemon/pokemon_item_effect.c
+++ b/src/pokemon_item_effect.c
diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon_menu.c
index c0cae9353..532340ce4 100644
--- a/src/pokemon/pokemon_menu.c
+++ b/src/pokemon_menu.c
@@ -31,6 +31,7 @@
#include "item_menu.h"
#include "player_pc.h"
#include "ewram.h"
+#include "script.h"
/*
Pokemon menu:
@@ -45,6 +46,7 @@ struct PokeMenuFieldMoveFunc
u8 field_1;
};
+extern u8 gUnknown_020297ED;
extern u8 gUnknown_020384F0;
extern u8 gUnknown_0202E8F4;
extern u8 gUnknown_0202E8F5;
@@ -900,9 +902,10 @@ static void sub_808AE08(void)
static bool8 SetUpFieldMove_Waterfall(void)
{
s16 x, y;
+
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE
- && IsPlayerSurfingNorth() == TRUE)
+ && IsPlayerSurfingNorth() == TRUE)
{
gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_808AE08;
@@ -912,6 +915,20 @@ static bool8 SetUpFieldMove_Waterfall(void)
return FALSE;
}
+#if DEBUG
+void debug_sub_80986AC(void)
+{
+ s16 x, y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE
+ && IsPlayerSurfingNorth() == TRUE)
+ sub_808AE08();
+ else
+ ScriptContext2_Disable();
+}
+#endif
+
static void sub_808AE8C(void)
{
u8 i;
@@ -921,7 +938,11 @@ static void sub_808AE8C(void)
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
{
sub_806D668(i);
- if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg))
+ if (
+#if DEBUG
+ gUnknown_020297ED == 0 &&
+#endif
+ (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg)))
sub_806BC3C(i, 0x9A);
else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gSpecialVar_ItemId)))
sub_806BC3C(i, 0xA8);
diff --git a/src/pokemon/pokemon_size_record.c b/src/pokemon_size_record.c
index 2ba4e57cc..2ba4e57cc 100644
--- a/src/pokemon/pokemon_size_record.c
+++ b/src/pokemon_size_record.c
diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c
new file mode 100644
index 000000000..1ea8bc205
--- /dev/null
+++ b/src/pokemon_storage_system.c
@@ -0,0 +1,784 @@
+#include "global.h"
+#include "palette.h"
+#include "constants/songs.h"
+#include "sound.h"
+#include "field_weather.h"
+#include "overworld.h"
+#include "field_fadetransition.h"
+#include "menu.h"
+#include "main.h"
+#include "strings.h"
+#include "string_util.h"
+#include "event_data.h"
+#include "script.h"
+#include "pokemon_storage_system.h"
+
+void StorageSystemCreatePrimaryMenu(u8 whichMenu);
+void sub_80963D0(u8 curBox);
+void sub_809658C(void);
+void sub_80965F8(void);
+void sub_809662C(void);
+void sub_809665C(void);
+void sub_80966F4(const u8 *sourceString, u16 x, u16 y);
+void sub_8096784(struct Sprite *sprite);
+
+EWRAM_DATA struct PokemonStorage gPokemonStorage = {0};
+EWRAM_DATA u8 gUnknown_02038470[3] = {};
+EWRAM_DATA u8 gUnknown_02038473 = 0;
+EWRAM_DATA u8 gUnknown_02038474 = 0;
+EWRAM_DATA struct UnkPSSStruct_2002370 *gUnknown_02038478 = NULL;
+
+const struct PSS_MenuStringPtrs gUnknown_083B600C[] = {
+ {PCText_WithdrawPoke, PCText_MovePokeToParty},
+ {PCText_DepositPoke, PCText_StorePokeInBox},
+ {PCText_MovePoke, PCText_OrganizeBoxesParty},
+ {PCText_SeeYa, PCText_ReturnToPrevMenu}
+};
+
+#if DEBUG
+const u16 gUnknown_Debug_083E05F0[2] = {0};
+#endif
+
+const union AnimCmd gSpriteAnim_83B602C[] = {
+ ANIMCMD_FRAME( 0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83B6034[] = {
+ ANIMCMD_FRAME( 4, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83B603C[] = {
+ ANIMCMD_FRAME( 6, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83B6044[] = {
+ ANIMCMD_FRAME(10, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_83B604C[] = {
+ gSpriteAnim_83B602C,
+ gSpriteAnim_83B6034,
+ gSpriteAnim_83B603C,
+ gSpriteAnim_83B6044
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83B605C[] = {
+ AFFINEANIMCMD_FRAME(0xe0, 0xe0, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83B606C[] = {
+ gSpriteAffineAnim_83B605C
+};
+
+const u16 gBoxSelectionPopupPalette[] = INCBIN_U16("graphics/pokemon_storage/box_selection_popup.gbapal");
+
+const u8 gBoxSelectionPopupCenterTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_center.4bpp");
+
+const u8 gBoxSelectionPopupSidesTiles[] = INCBIN_U8("graphics/pokemon_storage/box_selection_popup_sides.4bpp");
+
+u8 CountPokemonInBoxN(u8 boxId)
+{
+ u16 i;
+ u16 count;
+
+ for (i = 0, count = 0; i < 30; i++)
+ {
+ if (GetBoxMonData(gPokemonStorage.boxes[boxId] + i, MON_DATA_SPECIES) != 0)
+ count++;
+ }
+ return count;
+}
+
+s16 GetIndexOfFirstEmptySpaceInBoxN(u8 boxId)
+{
+ u16 i;
+
+ for (i = 0; i < 30; i++)
+ {
+ if (GetBoxMonData(gPokemonStorage.boxes[boxId] + i, MON_DATA_SPECIES) == 0)
+ return i;
+ }
+ return -1;
+}
+
+u8 GetNumValidDaycarePartyMons(void)
+{
+ u16 i;
+ u16 count;
+
+ for (i = 0, count = 0; i < PARTY_SIZE; i++)
+ {
+ struct Pokemon *pokemon = gPlayerParty + i;
+ if (GetMonData(pokemon, MON_DATA_SPECIES) != 0 && !GetMonData(pokemon, MON_DATA_IS_EGG))
+ count++;
+ }
+ return count;
+}
+
+u8 CountAlivePartyMonsExceptOne(u8 toSkip)
+{
+ u16 i;
+ u16 count;
+
+ for (i = 0, count = 0; i < PARTY_SIZE; i++)
+ {
+ if (i != toSkip)
+ {
+ struct Pokemon *pokemon = gPlayerParty + i;
+ if (GetMonData(pokemon, MON_DATA_SPECIES) != 0 && !GetMonData(pokemon, MON_DATA_IS_EGG) && GetMonData(pokemon, MON_DATA_HP) != 0)
+ count++;
+ }
+ }
+ return count;
+}
+
+u8 CountAlivePartyMonsExceptSelectedOne(void)
+{
+ return CountAlivePartyMonsExceptOne(gSpecialVar_0x8004);
+}
+
+u8 StorageSystemGetPartySize(void)
+{
+ u16 i;
+ u16 count;
+
+ for (i = 0, count = 0; i < PARTY_SIZE; i++)
+ {
+ if (GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != 0)
+ count++;
+ }
+ return count;
+}
+
+u8 *unref_sub_8095C60(u8 *dest, const u8 *src, u16 pad)
+{
+ u8 *_dest = StringCopy(dest, src);
+ while (_dest < dest + pad)
+ {
+ *_dest++ = CHAR_SPACE;
+ }
+ *_dest = EOS;
+ return _dest;
+}
+
+void sub_8095C8C(u16 *dest, u16 dest_left, u16 dest_top, const u16 *src, u16 src_left, u16 src_top, u16 dest_width, u16 dest_height, u16 src_width)
+{
+ u16 i;
+
+ dest_width *= 2;
+ dest += dest_top * 0x20 + dest_left;
+ src += src_top * src_width + src_left;
+ for (i = 0; i < dest_height; i++)
+ {
+ CpuCopy16(src, dest, dest_width);
+ dest += 0x20;
+ src += src_width;
+ }
+}
+
+#define MAX_DMA_BLOCK_SIZE 0x1000
+#define Dma3FillLarge_(value, dest, size, bit) \
+{ \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ if (_size <= MAX_DMA_BLOCK_SIZE) \
+ { \
+ DmaFill##bit(3, value, _dest, _size); \
+ break; \
+ } \
+ DmaFill##bit(3, value, _dest, MAX_DMA_BLOCK_SIZE); \
+ _dest += MAX_DMA_BLOCK_SIZE; \
+ _size -= MAX_DMA_BLOCK_SIZE; \
+ } \
+}
+
+#define Dma3FillLarge16_(value, dest, size) Dma3FillLarge_(value, dest, size, 16)
+#define Dma3FillLarge32_(value, dest, size) Dma3FillLarge_(value, dest, size, 32)
+
+void unref_sub_8095D08(u16 *dest, u16 dest_left, u16 dest_top, u16 width, u16 height)
+{
+ u16 i;
+
+ dest += dest_top * 0x20 + dest_left;
+ width *= 2;
+ for (i = 0; i < height; dest += 0x20, i++)
+ Dma3FillLarge16_(0, dest, width);
+}
+
+s16 StorageSystemGetNextMonIndex(struct BoxPokemon *box, s8 startIdx, u8 stopIdx, u8 mode)
+{
+ s16 i;
+ s16 direction;
+ if (mode == 0 || mode == 2)
+ {
+ direction = 1;
+ }
+ else
+ {
+ direction = -1;
+ }
+ if (mode == 2 || mode == 3)
+ {
+ for (i = startIdx + direction; i >= 0 && i <= stopIdx; i += direction)
+ {
+ if (GetBoxMonData(box + i, MON_DATA_SPECIES) != 0)
+ return i;
+ }
+ }
+ else
+ {
+ for (i = startIdx + direction; i >= 0 && i <= stopIdx; i += direction)
+ {
+ if (GetBoxMonData(box + i, MON_DATA_SPECIES) != 0 && !GetBoxMonData(box + i, MON_DATA_IS_EGG))
+ return i;
+ }
+ }
+ return -1;
+}
+
+void StorageSystemClearMessageWindow(void)
+{
+ Menu_BlankWindowRect(2, 15, 27, 18);
+}
+
+void Task_PokemonStorageSystem(u8 taskId)
+{
+ struct Task *task = gTasks + taskId;
+ switch (task->data[0])
+ {
+ case 0:
+ StorageSystemCreatePrimaryMenu(task->data[1]);
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gUnknown_083B600C[task->data[1]].desc, 2, 15);
+ task->data[0]++;
+ break;
+ case 1:
+ if (IsWeatherNotFadingIn())
+ {
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ task->data[2] = Menu_ProcessInput();
+ switch(task->data[2])
+ {
+ case -2:
+ task->data[3] = task->data[1];
+ if (gMain.newKeys & DPAD_UP && --task->data[3] < 0)
+ task->data[3] = 3;
+
+ if (gMain.newKeys & DPAD_DOWN && ++task->data[3] > 3)
+ task->data[3] = 0;
+ if (task->data[1] != task->data[3])
+ {
+ task->data[1] = task->data[3];
+ StorageSystemClearMessageWindow();
+ Menu_PrintText(gUnknown_083B600C[task->data[1]].desc, 2, 15);
+ }
+ break;
+ case -1:
+ case 3:
+ Menu_DestroyCursor();
+ Menu_EraseWindowRect(0, 0, 13, 9);
+ ScriptContext2_Disable();
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
+ default:
+ if (task->data[2] == 0 && StorageSystemGetPartySize() == PARTY_SIZE)
+ {
+ StorageSystemClearMessageWindow();
+ Menu_PrintText(gPCText_PartyFull2, 2, 15);
+ task->data[0] = 3;
+ }
+ else if (task->data[2] == 1 && StorageSystemGetPartySize() == 1)
+ {
+ StorageSystemClearMessageWindow();
+ Menu_PrintText(gPCText_OnlyOne, 2, 15);
+ task->data[0] = 3;
+ }
+ else
+ {
+ FadeScreen(1, 0);
+ task->data[0] = 4;
+ }
+ break;
+ }
+ break;
+ case 3:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ StorageSystemClearMessageWindow();
+ Menu_PrintText(gUnknown_083B600C[task->data[1]].desc, 2, 15);
+ task->data[0] = 2;
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (--task->data[1] < 0)
+ task->data[1] = 3;
+ Menu_MoveCursor(-1);
+ task->data[1] = Menu_GetCursorPos();
+ StorageSystemClearMessageWindow();
+ Menu_PrintText(gUnknown_083B600C[task->data[1]].desc, 2, 15);
+ task->data[0] = 2;
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (++task->data[1] > 3)
+ task->data[1] = 0;
+ Menu_MoveCursor(1);
+ task->data[1] = Menu_GetCursorPos();
+ StorageSystemClearMessageWindow();
+ Menu_PrintText(gUnknown_083B600C[task->data[1]].desc, 2, 15);
+ task->data[0] = 2;
+ }
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ task_intro_29(task->data[2]);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void ShowPokemonStorageSystem(void)
+{
+ u8 taskId = CreateTask(Task_PokemonStorageSystem, 80);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 0;
+ ScriptContext2_Enable();
+}
+
+void FieldCB_ReturnToOverworld(void)
+{
+ u8 taskId = CreateTask(Task_PokemonStorageSystem, 80);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = gUnknown_02038474;
+ pal_fill_black();
+}
+
+void StorageSystemCreatePrimaryMenu(u8 whichMenu)
+{
+ Menu_DrawStdWindowFrame(0, 0, 13, 9);
+ Menu_PrintItems(1, 1, 4, (const struct MenuAction *)gUnknown_083B600C);
+ InitMenu(0, 1, 1, 4, whichMenu, 12);
+}
+
+void sub_80961A8(void)
+{
+ gUnknown_02038474 = gPokemonStorageSystemPtr->unk_0005;
+ gFieldCallback = FieldCB_ReturnToOverworld;
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+}
+
+void ResetPokemonStorageSystem(void)
+{
+ u16 boxId;
+ u16 boxMon;
+
+ gPokemonStorage.currentBox = 0;
+ for (boxId = 0; boxId < 14; boxId++)
+ {
+ for (boxMon = 0; boxMon < 30; boxMon++)
+ {
+ ZeroBoxMonData(gPokemonStorage.boxes[boxId] + boxMon);
+ }
+ }
+ for (boxId = 0; boxId < 14; boxId++)
+ {
+ u8 *dest = StringCopy(gPokemonStorage.boxNames[boxId], gPCText_BOX);
+ ConvertIntToDecimalStringN(dest, boxId + 1, STR_CONV_MODE_LEFT_ALIGN, 2);
+ }
+ for (boxId = 0; boxId < 14; boxId++)
+ {
+ gPokemonStorage.wallpaper[boxId] = boxId & 0x03;
+ }
+}
+
+#if DEBUG
+__attribute__((naked))
+void debug_sub_80A3904(void)
+{
+ asm("\
+ push {r4, r5, r6, r7, lr}\n\
+ mov r7, sl\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5, r6, r7}\n\
+ add sp, sp, #0xffffffe4\n\
+ mov r0, #0x0\n\
+ mov r8, r0\n\
+ mov r7, r8\n\
+ mov r1, #0x14\n\
+ str r1, [sp, #0x18]\n\
+ mov r2, #0xff\n\
+ mov r9, r2\n\
+._162:\n\
+ mov r5, #0x0\n\
+ cmp r7, #0\n\
+ beq ._160 @cond_branch\n\
+ mov r0, #0xe\n\
+ mov r8, r0\n\
+ b ._158\n\
+._160:\n\
+ bl Random\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ str r0, [sp, #0x14]\n\
+ mov r2, r8\n\
+ lsl r1, r2, #0x2\n\
+ add r1, r1, r8\n\
+ lsl r3, r1, #0x4\n\
+ sub r3, r3, r1\n\
+ lsl r3, r3, #0x5\n\
+ lsl r1, r5, #0x2\n\
+ add r1, r1, r5\n\
+ lsl r1, r1, #0x4\n\
+ ldr r2, ._163 @ gPokemonStorage\n\
+ add r1, r1, r2\n\
+ add r6, r3, r1\n\
+ ldr r2, ._163 + 4 @ gUnknown_Debug_083E05F0\n\
+ lsl r1, r7, #0x1\n\
+ add r1, r1, r2\n\
+ ldrh r4, [r1]\n\
+ add r5, r5, #0x1\n\
+ lsl r2, r5, #0x18\n\
+ lsr r2, r2, #0x18\n\
+ mov r1, #0x0\n\
+ str r1, [sp]\n\
+ str r1, [sp, #0x4]\n\
+ mov r1, #0x1\n\
+ mov sl, r1\n\
+ str r1, [sp, #0x8]\n\
+ str r0, [sp, #0xc]\n\
+ add r0, r6, #0\n\
+ add r1, r4, #0\n\
+ mov r3, #0x20\n\
+ bl CreateBoxMon\n\
+ cmp r4, #0\n\
+ beq ._157 @cond_branch\n\
+ cmp r4, #0xac\n\
+ bne ._156 @cond_branch\n\
+ add r0, sp, #0x10\n\
+ mov r2, sl\n\
+ strb r2, [r0]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x2d\n\
+ add r2, sp, #0x10\n\
+ bl SetBoxMonData\n\
+._156:\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r4, sp, #0x14\n\
+ add r0, r6, #0\n\
+ mov r1, #0x16\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x17\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x18\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x21\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x2f\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ bl Random\n\
+ mov r1, r9\n\
+ and r1, r1, r0\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x30\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+ ldr r0, [sp, #0x18]\n\
+ cmp r0, #0\n\
+ beq ._157 @cond_branch\n\
+ sub r0, r0, #0x1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ str r0, [sp, #0x18]\n\
+ mov r1, sl\n\
+ str r1, [sp, #0x14]\n\
+ add r0, r6, #0\n\
+ mov r1, #0x32\n\
+ add r2, r4, #0\n\
+ bl SetBoxMonData\n\
+._157:\n\
+ add r0, r7, #1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r7, r0, #0x10\n\
+ lsl r0, r5, #0x10\n\
+ lsr r5, r0, #0x10\n\
+ cmp r5, #0x1d\n\
+ bhi ._158 @cond_branch\n\
+ cmp r7, #0\n\
+ bne ._159 @cond_branch\n\
+ b ._160\n\
+._159:\n\
+ mov r2, #0xe\n\
+ mov r8, r2\n\
+._158:\n\
+ mov r0, r8\n\
+ add r0, r0, #0x1\n\
+ lsl r0, r0, #0x10\n\
+ lsr r0, r0, #0x10\n\
+ mov r8, r0\n\
+ cmp r0, #0xd\n\
+ bhi ._161 @cond_branch\n\
+ b ._162\n\
+._161:\n\
+ add sp, sp, #0x1c\n\
+ pop {r3, r4, r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov sl, r5\n\
+ pop {r4, r5, r6, r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+._164:\n\
+ .align 2, 0\n\
+._163:\n\
+ .word gPokemonStorage+0x4\n\
+ .word gUnknown_Debug_083E05F0");
+}
+#endif
+
+void sub_8096264(struct UnkPSSStruct_2002370 *a0, u16 tileTag, u16 palTag, u8 a3)
+{
+ struct SpritePalette palette = {
+ gBoxSelectionPopupPalette, palTag
+ };
+ struct SpriteSheet sheets[] = {
+ {gBoxSelectionPopupCenterTiles, 0x800, tileTag},
+ {gBoxSelectionPopupSidesTiles, 0x180, tileTag + 1},
+ {}
+ };
+ LoadSpritePalette(&palette);
+ LoadSpriteSheets(sheets);
+ gUnknown_02038478 = a0;
+ a0->unk_0240 = tileTag;
+ a0->unk_0242 = palTag;
+ a0->unk_023e = a3;
+}
+
+void sub_8096310(void)
+{
+ FreeSpritePaletteByTag(gUnknown_02038478->unk_0242);
+ FreeSpriteTilesByTag(gUnknown_02038478->unk_0240);
+ FreeSpriteTilesByTag(gUnknown_02038478->unk_0240 + 1);
+}
+
+void sub_809634C(u8 curBox)
+{
+ sub_80963D0(curBox);
+}
+
+void sub_809635C(void)
+{
+ sub_809658C();
+}
+
+u8 sub_8096368(void)
+{
+ if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return 201;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ return gUnknown_02038478->curBox;
+ }
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ PlaySE(SE_SELECT);
+ sub_809662C();
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ PlaySE(SE_SELECT);
+ sub_80965F8();
+ }
+ return 200;
+}
+
+void sub_80963D0(u8 curBox)
+{
+ u16 i;
+ u8 spriteId;
+ struct SpriteTemplate template;
+ struct OamData oamData = {};
+ oamData.size = 3;
+ oamData.paletteNum = 1;
+ template = (struct SpriteTemplate){
+ 0, 0, &oamData, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ };
+
+ gUnknown_02038478->curBox = curBox;
+ template.tileTag = gUnknown_02038478->unk_0240;
+ template.paletteTag = gUnknown_02038478->unk_0242;
+
+ spriteId = CreateSprite(&template, 0xA0, 0x60, 0);
+ gUnknown_02038478->unk_0000 = gSprites + spriteId;
+
+ oamData.shape = ST_OAM_V_RECTANGLE;
+ oamData.size = 1;
+ template.tileTag = gUnknown_02038478->unk_0240 + 1;
+ template.anims = gSpriteAnimTable_83B604C;
+ for (i = 0; i < 4; i++)
+ {
+ u16 r5;
+ spriteId = CreateSprite(&template, 0x7c, 0x50, gUnknown_02038478->unk_023e);
+ gUnknown_02038478->unk_0004[i] = gSprites + spriteId;
+ r5 = 0;
+ if (i & 2)
+ {
+ gUnknown_02038478->unk_0004[i]->pos1.x = 0xc4;
+ r5 = 2;
+ }
+ if (i & 1)
+ {
+ gUnknown_02038478->unk_0004[i]->pos1.y = 0x70;
+ gUnknown_02038478->unk_0004[i]->oam.size = 0;
+ r5++;
+ }
+ StartSpriteAnim(gUnknown_02038478->unk_0004[i], r5);
+ }
+ for (i = 0; i < 2; i++)
+ {
+ gUnknown_02038478->unk_0020[i] = sub_809A9A0(72 * i + 0x7c, 0x58, i, 0, gUnknown_02038478->unk_023e);
+ if (gUnknown_02038478->unk_0020[i])
+ {
+ gUnknown_02038478->unk_0020[i]->data[0] = (i == 0 ? -1 : 1);
+ gUnknown_02038478->unk_0020[i]->callback = sub_8096784;
+ }
+ }
+ sub_809665C();
+}
+
+void sub_809658C(void)
+{
+ u16 i;
+ if (gUnknown_02038478->unk_0000)
+ {
+ DestroySprite(gUnknown_02038478->unk_0000);
+ gUnknown_02038478->unk_0000 = NULL;
+ }
+ for (i = 0; i < 4; i++)
+ {
+ if (gUnknown_02038478->unk_0004[i])
+ {
+ DestroySprite(gUnknown_02038478->unk_0004[i]);
+ gUnknown_02038478->unk_0004[i] = NULL;
+ }
+ }
+ for (i = 0; i < 2; i++)
+ {
+ if (gUnknown_02038478->unk_0020[i])
+ DestroySprite(gUnknown_02038478->unk_0020[i]);
+ }
+}
+
+void sub_80965F8(void)
+{
+ if (++gUnknown_02038478->curBox > 13)
+ gUnknown_02038478->curBox = 0;
+ sub_809665C();
+}
+
+void sub_809662C(void)
+{
+ gUnknown_02038478->curBox = (gUnknown_02038478->curBox == 0 ? 13 : gUnknown_02038478->curBox - 1);
+ sub_809665C();
+}
+
+void sub_809665C(void)
+{
+ u8 nPokemonInBox = CountPokemonInBoxN(gUnknown_02038478->curBox);
+ u8 *stringVar = gStringVar1;
+
+ stringVar[0] = EXT_CTRL_CODE_BEGIN;
+ stringVar[1] = 0x04; // EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW
+ stringVar[2] = 0x0F; // TEXT_COLOR_WHITE2
+ stringVar[3] = 0x01; // TEXT_COLOR_DARK_GREY
+ stringVar[4] = 0x0E; // TEXT_COLOR_LIGHT_BLUE
+ stringVar += 5;
+
+ stringVar = StringCopy(stringVar, gPokemonStorage.boxNames[gUnknown_02038478->curBox]);
+
+ stringVar[0] = CHAR_NEWLINE;
+ stringVar[1] = EXT_CTRL_CODE_BEGIN;
+ stringVar[2] = 0x11; // EXT_CTRL_CODE_CLEAR
+ if (nPokemonInBox < 10)
+ stringVar[3] = 0x28;
+ else
+ stringVar[3] = 0x22;
+ stringVar += 4;
+
+ stringVar = ConvertIntToDecimalString(stringVar, nPokemonInBox);
+
+ stringVar[0] = CHAR_SLASH;
+ stringVar[1] = CHAR_0 + 3;
+ stringVar[2] = CHAR_0 + 0;
+ stringVar[3] = EOS;
+ sub_80966F4(gStringVar1, 0, 1);
+}
+
+void sub_80966F4(const u8 *sourceString, u16 x, u16 y)
+{
+ u16 *vdest = (u16 *)(BG_CHAR_ADDR(4) + (GetSpriteTileStartByTag(gUnknown_02038478->unk_0240) * 32) + y * 256 + x * 32);
+ u8 *tileBuff = gUnknown_083B6DB8;
+ DmaFill16(3, 0x1111, tileBuff, 0x400);
+ Text_InitWindow8004E3C(&gWindowTemplate_81E6D38, tileBuff, sourceString);
+ DmaCopy16(3, tileBuff, vdest, 0x400);
+}
+
+void sub_8096784(struct Sprite *sprite)
+{
+ if (++sprite->data[1] > 3)
+ {
+ sprite->data[1] = 0;
+ sprite->pos2.x += sprite->data[0];
+ if (++sprite->data[2] > 5)
+ {
+ sprite->data[2] = 0;
+ sprite->pos2.x = 0;
+ }
+ }
+}
diff --git a/src/pokemon_storage_system_2.c b/src/pokemon_storage_system_2.c
new file mode 100644
index 000000000..0331abf3e
--- /dev/null
+++ b/src/pokemon_storage_system_2.c
@@ -0,0 +1,2121 @@
+
+// Includes
+#include "global.h"
+#include "decompress.h"
+#include "constants/songs.h"
+#include "constants/species.h"
+#include "data2.h"
+#include "sound.h"
+#include "ewram.h"
+#include "task.h"
+#include "main.h"
+#include "palette.h"
+#include "menu.h"
+#include "graphics.h"
+#include "strings.h"
+#include "string_util.h"
+#include "pokemon_summary_screen.h"
+#include "mail_data.h"
+#include "naming_screen.h"
+#include "pokemon_storage_system.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+EWRAM_DATA u8 gUnknown_0203847C = 0;
+EWRAM_DATA u8 gUnknown_0203847D = 0;
+EWRAM_DATA u8 gUnknown_0203847E = 0;
+EWRAM_DATA u8 gUnknown_0203847F = 0;
+
+// Static ROM declarations
+
+void sub_8096884(void);
+void sub_8096AFC(void);
+void sub_8096B38(void);
+void SetPSSCallback(void (*func)(void));
+void sub_8096BF0(void);
+void sub_8096C68(void);
+void sub_8096C84(void);
+void sub_8096FC8(void);
+void sub_8097004(void);
+void sub_8097078(void);
+void sub_80972A8(void);
+void sub_80972FC(void);
+void c3_0808DC50(void);
+void sub_8097390(void);
+void sub_809746C(void);
+void sub_8097594(void);
+void sub_8097788(void);
+void sub_80977E4(void);
+void sub_8097858(void);
+void sub_809789C(void);
+void sub_8097974(void);
+void sub_8097A64(void);
+void sub_8097B44(void);
+void sub_8097BA0(void);
+void sub_8097CC0(void);
+void sub_8097DE0(void);
+void sub_8097E44(void);
+void sub_8097E70(void);
+void sub_8097F58(void);
+void sub_8097FB8(void);
+void sub_809801C(void);
+void BoxSetMosaic(void);
+void sub_8098090(struct Sprite *sprite);
+void sub_80980D4(void);
+void sub_80981F0(u16 species, u32 pid);
+void sub_80982B4(void);
+void sub_8098350(void);
+void sub_8098400(void);
+void add_to_c3_somehow(void);
+void sub_8098780(void);
+void sub_8098690(bool8 flag);
+bool8 sub_80985CC(void);
+void sub_80986E8(void);
+void sub_8098710(void);
+void sub_8098734(void);
+void sub_80987DC(void);
+void sub_809880C(void);
+bool8 sub_8098830(void);
+void PrintStorageActionText(u8 index);
+void sub_8098A38(s8);
+void sub_8098A5C(void);
+void sub_8098A80(void);
+void sub_8098AA8(u8 a0);
+
+// .rodata
+
+const u16 gPokemonStorageScrollingBGPalette[] = INCBIN_U16("graphics/pokemon_storage/scrolling_bg.gbapal");
+
+const u16 gPokemonStorageScrollingBGTile[] = INCBIN_U16("graphics/pokemon_storage/scrolling_bg.4bpp");
+
+const u8 gPokemonStorageScrollingBGTilemap[] = INCBIN_U8("graphics/pokemon_storage/scrolling_bg_map.bin.lz");
+
+const u16 sUnknownTilemap[] = {
+ 0x1281,
+ 0x1282,
+ 0x1283,
+ 0x1284,
+ 0x1285,
+ 0x1286,
+ 0x1287,
+ 0x1288,
+ 0x128C,
+ 0x128D,
+ 0x128E,
+ 0x128F,
+ 0x1290,
+ 0x1291,
+ 0x1292,
+ 0x1293,
+ 0x0281,
+ 0x0282,
+ 0x0283,
+ 0x0284,
+ 0x0285,
+ 0x0286,
+ 0x0287,
+ 0x0288,
+ 0x028C,
+ 0x028D,
+ 0x028E,
+ 0x028F,
+ 0x0290,
+ 0x0291,
+ 0x0292,
+ 0x0293,
+ 0x12AD,
+ 0x12AE,
+ 0x12A8,
+ 0x12A8
+};
+
+const u16 WaveformPalette[] = INCBIN_U16("graphics/pokemon_storage/waveform.gbapal");
+
+const u8 WaveformTiles[] = INCBIN_U8("graphics/pokemon_storage/waveform.4bpp");
+
+const u16 gUnknown_083B6D74[] = INCBIN_U16("graphics/pokemon_storage/83B6D74.gbapal");
+
+const u16 gUnknown_083B6D94[] = INCBIN_U16("graphics/pokemon_storage/83B6D94.gbapal");
+
+struct PokemonStorageSystemData *const gPokemonStorageSystemPtr = &ePokemonStorageSystem;
+
+u8 *const gUnknown_083B6DB8 = gTileBuffer;
+
+const struct SpritePalette gWaveformSpritePalette = {
+ WaveformPalette, 0xdacd
+};
+
+// .text
+
+void task_intro_29(u8 whichMenu)
+{
+ gUnknown_0203847D = whichMenu;
+ gPokemonStorageSystemPtr->unk_0005 = whichMenu;
+ SetMainCallback2(sub_8096884);
+}
+
+void sub_80967DC(void)
+{
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+}
+
+void sub_8096804(void)
+{
+ ResetPaletteFade();
+ ResetSpriteData();
+ FreeSpriteTileRanges();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ gReservedSpriteTileCount = 0x280;
+ sub_809CFDC(&gPokemonStorageSystemPtr->unk_0020, gPokemonStorageSystemPtr->unk_0028, 8);
+ gKeyRepeatStartDelay = 20;
+}
+
+void sub_8096848(void)
+{
+ sub_809B0D4();
+ gUnknown_0203847C = (gPokemonStorageSystemPtr->unk_0005 == 1 ? 1 : 0);
+ gUnknown_0203847E = 0;
+}
+
+void sub_8096874(void)
+{
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
+}
+
+extern u8 unk_2038790;
+
+void sub_8096884(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = 0;
+ sub_8096804();
+#if DEBUG
+ unk_2038790 = 0;
+#endif
+ gMain.state++;
+ break;
+ case 1:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6D00);
+ gMain.state++;
+ break;
+ case 2:
+ InitMenuWindow(&gWindowTemplate_81E6D00);
+ Menu_EraseScreen();
+ gMain.state++;
+ break;
+ case 3:
+ sub_80967DC();
+ sub_8096848();
+ gMain.state++;
+ break;
+ case 4:
+ ResetPSSMonIconSprites();
+ sub_809AA24();
+ gMain.state++;
+ break;
+ case 5:
+ sub_8097DE0();
+ gMain.state++;
+ break;
+ case 6:
+ sub_8097E70();
+ gMain.state++;
+ break;
+ case 7:
+ sub_8098400();
+ gMain.state++;
+ break;
+ case 8:
+ sub_8099BF8(gPokemonStorage.currentBox);
+ gPokemonStorageSystemPtr->unk_12bc.baseTileTag = 0x000a;
+ gPokemonStorageSystemPtr->unk_12bc.basePaletteTag = 0xdacb;
+ sub_80F727C(&gPokemonStorageSystemPtr->unk_12bc);
+ sub_80F7404();
+ gMain.state++;
+ break;
+ case 9:
+ sub_8096874();
+ SetPSSCallback(sub_8096BF0);
+ SetMainCallback2(sub_8096B38);
+ SetVBlankCallback(sub_8096AFC);
+ gMain.state++;
+ break;
+ }
+}
+
+void sub_80969A0(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ REG_DISPCNT = 0;
+ gPokemonStorageSystemPtr->unk_0005 = gUnknown_0203847D;
+ sub_8096804();
+ if (gUnknown_0203847F == 1)
+ sub_809BBC0();
+ if (gUnknown_0203847F == 0)
+ sub_809BD14();
+ gMain.state++;
+ break;
+ case 1:
+ Text_LoadWindowTemplate(&gWindowTemplate_81E6D00);
+ gMain.state++;
+ break;
+ case 2:
+ InitMenuWindow(&gWindowTemplate_81E6D00);
+ Menu_EraseScreen();
+ gMain.state++;
+ break;
+ case 3:
+ sub_80967DC();
+ gMain.state++;
+ break;
+ case 4:
+ ResetPSSMonIconSprites();
+ sub_809AA98();
+ gMain.state++;
+ break;
+ case 5:
+ sub_8097DE0();
+ gMain.state++;
+ break;
+ case 6:
+ sub_8097E70();
+ gMain.state++;
+ break;
+ case 7:
+ sub_8098400();
+ gMain.state++;
+ break;
+ case 8:
+ sub_8099BF8(gPokemonStorage.currentBox);
+ gPokemonStorageSystemPtr->unk_12bc.baseTileTag = 0x000a;
+ gPokemonStorageSystemPtr->unk_12bc.basePaletteTag = 0xdacb;
+ sub_80F727C(&gPokemonStorageSystemPtr->unk_12bc);
+ sub_80F7404();
+ gMain.state++;
+ break;
+ case 9:
+ BeginNormalPaletteFade(0xffffffff, 0, 16, 0, 0);
+ SetVBlankCallback(sub_8096AFC);
+ gMain.state++;
+ break;
+ case 10:
+ sub_8096874();
+ SetPSSCallback(sub_8096C68);
+ SetMainCallback2(sub_8096B38);
+ gMain.state++;
+ break;
+ }
+}
+
+#if DEBUG
+
+void debug_sub_80A4300(void)
+{
+ gUnknown_0203847D = 0;
+ gPokemonStorageSystemPtr->unk_0005 = 0;
+ sub_8096884();
+ if (gMain.callback2 == sub_8096B38)
+ unk_2038790 = 1;
+}
+
+extern void (*unk_2038794)(void);
+extern u32 unk_2038798;
+
+extern void unref_sub_809CB94();
+
+void debug_sub_80A433C(u32 a, void (*b)(void))
+{
+ unk_2038794 = b;
+ unk_2038798 = a;
+ SetMainCallback2(debug_sub_80A4300);
+}
+
+void debug_sub_80A435C(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ unref_sub_809CB94(unk_2038798);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ unk_2038794();
+ break;
+ }
+}
+
+#endif
+
+void sub_8096AFC(void)
+{
+ REG_BG2HOFS = gPokemonStorageSystemPtr->unk_08b4;
+ REG_BG3HOFS = gPokemonStorageSystemPtr->unk_000a;
+ REG_BG3VOFS = gPokemonStorageSystemPtr->unk_0008;
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ sub_809CFF0();
+ TransferPlttBuffer();
+}
+
+void sub_8096B38(void)
+{
+ gPokemonStorageSystemPtr->unk_0000();
+ sub_8097E44();
+ sub_8098734();
+ AnimateSprites();
+ BuildOamBuffer();
+}
+
+void sub_8096B5C(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0006)
+ {
+ case 0:
+ ShowPokemonSummaryScreen(gPokemonStorageSystemPtr->unk_2690.pokemon, gPokemonStorageSystemPtr->unk_268d, gPokemonStorageSystemPtr->unk_268c, sub_80969A0, gPokemonStorageSystemPtr->unk_268e);
+ break;
+ case 1:
+ DoNamingScreen(1, gPokemonStorage.boxNames[gPokemonStorage.currentBox], 0, 0, 0, sub_80969A0);
+ break;
+ }
+}
+
+void SetPSSCallback(void (*func)(void))
+{
+ gPokemonStorageSystemPtr->unk_0000 = func;
+ gPokemonStorageSystemPtr->unk_0004 = 0;
+}
+
+void sub_8096BF0(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ BlendPalettes(0xffffffff, 16, 0);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ PlaySE(SE_PC_LOGON);
+ gPokemonStorageSystemPtr->unk_000c.tileTag = 14;
+ gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0;
+ gPokemonStorageSystemPtr->unk_000c.unk04 = 0;
+ gPokemonStorageSystemPtr->unk_000c.unk06 = 0;
+ sub_80C5CD4(&gPokemonStorageSystemPtr->unk_000c);
+ BlendPalettes(0xffffffff, 0, 0);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 2:
+ if (sub_80C5DCC())
+ SetPSSCallback(sub_8096C84);
+ break;
+ }
+}
+
+void sub_8096C68(void)
+{
+ if (!UpdatePaletteFade())
+ SetPSSCallback(sub_8096C84);
+}
+
+void sub_8096C84(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ switch (sub_809CA40())
+ {
+ case 1:
+ PlaySE(SE_SELECT);
+ gPokemonStorageSystemPtr->unk_0004 = 1;
+ break;
+ case 5:
+ if (gPokemonStorageSystemPtr->unk_0005 != 2)
+ {
+ PrintStorageActionText(PC_TEXT_WHICH_ONE_WILL_TAKE);
+ gPokemonStorageSystemPtr->unk_0004 = 3;
+ }
+ else
+ {
+ sub_809B0D4();
+ SetPSSCallback(sub_8096FC8);
+ }
+ break;
+ case 6:
+ if (gPokemonStorageSystemPtr->unk_0005 == 2)
+ {
+ if (sub_809BF20() && ItemIsMail(gPokemonStorageSystemPtr->unk_11f2))
+ gPokemonStorageSystemPtr->unk_0004 = 5;
+ else
+ SetPSSCallback(sub_8097004);
+ }
+ break;
+ case 4:
+#if DEBUG
+ if (unk_2038790 != 0)
+ break;
+#endif
+ SetPSSCallback(sub_8097BA0);
+ break;
+ case 16:
+#if DEBUG
+ if (unk_2038790 != 0)
+ break;
+#endif
+ SetPSSCallback(sub_8097CC0);
+ break;
+ case 7:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_809789C);
+ break;
+ case 8:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_8097078);
+ break;
+ case 9:
+ PlaySE(SE_SELECT);
+ gPokemonStorageSystemPtr->unk_08b2 = gPokemonStorage.currentBox + 1;
+ if (gPokemonStorageSystemPtr->unk_08b2 > 13)
+ gPokemonStorageSystemPtr->unk_08b2 = 0;
+ sub_8099C70(gPokemonStorageSystemPtr->unk_08b2);
+ gPokemonStorageSystemPtr->unk_0004 = 2;
+ break;
+ case 10:
+ PlaySE(SE_SELECT);
+ gPokemonStorageSystemPtr->unk_08b2 = gPokemonStorage.currentBox - 1;
+ if (gPokemonStorageSystemPtr->unk_08b2 < 0)
+ gPokemonStorageSystemPtr->unk_08b2 = 13;
+ sub_8099C70(gPokemonStorageSystemPtr->unk_08b2);
+ gPokemonStorageSystemPtr->unk_0004 = 2;
+ break;
+ case 11:
+ if (!sub_809BE80())
+ {
+ if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2))
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 5;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_809746C);
+ }
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 4;
+ }
+ break;
+ case 13:
+ if (sub_809BE80())
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 4;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80972A8);
+ }
+ break;
+ case 14:
+ if (!sub_809BEBC())
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 4;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ SetPSSCallback(c3_0808DC50);
+ }
+ break;
+ case 12:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_8097390);
+ break;
+ case 15:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80972FC);
+ break;
+ }
+ break;
+ case 1:
+ if (!sub_809AC00())
+ {
+ if (sub_809BF48())
+ sub_80986E8();
+ else
+ sub_8098710();
+ if (gPokemonStorageSystemPtr->unk_11f6)
+ BoxSetMosaic();
+ gPokemonStorageSystemPtr->unk_0004 = 0;
+ }
+ break;
+ case 2:
+ if (!sub_8099D34())
+ {
+ gPokemonStorage.currentBox = gPokemonStorageSystemPtr->unk_08b2;
+ if (!gUnknown_0203847C && !sub_809BF20())
+ {
+ sub_809B440();
+ BoxSetMosaic();
+ }
+ gPokemonStorageSystemPtr->unk_0004 = 0;
+ }
+ break;
+ case 3:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ {
+ sub_8098A5C();
+ gPokemonStorageSystemPtr->unk_0004 = 0;
+ }
+ break;
+ case 4:
+ PlaySE(SE_HAZURE);
+ PrintStorageActionText(PC_TEXT_LAST_POKE);
+ gPokemonStorageSystemPtr->unk_0004 = 6;
+ break;
+ case 5:
+ PlaySE(SE_HAZURE);
+ PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL);
+ gPokemonStorageSystemPtr->unk_0004 = 6;
+ break;
+ case 6:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ {
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_8096FC8(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ sub_809880C();
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ if (!sub_8098830())
+ SetPSSCallback(sub_8096C84);
+ break;
+ }
+}
+
+void sub_8097004(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ PlaySE(SE_SELECT);
+ add_to_c3_somehow();
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ if (!sub_80985CC())
+ {
+ sub_809B0C0(sub_809B0F4());
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ case 2:
+ if (!sub_809AC00())
+ {
+ if (gPokemonStorageSystemPtr->unk_11f6)
+ BoxSetMosaic();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_8097078(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ PrintStorageActionText(PC_TEXT_IS_SELECTED);
+ sub_809CE84();
+ gPokemonStorageSystemPtr->unk_0004 = 1;
+ break;
+ case 1:
+ switch (sub_809CF30())
+ {
+ case -1:
+ case 0:
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ break;
+ case 3:
+ if (sub_809BE80())
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 2;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ SetPSSCallback(sub_80972A8);
+ }
+ break;
+ case 5:
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ SetPSSCallback(sub_80972FC);
+ break;
+ case 4:
+ if (!sub_809BEBC())
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 2;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ SetPSSCallback(c3_0808DC50);
+ }
+ break;
+ case 2:
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ SetPSSCallback(sub_8097390);
+ break;
+ case 1:
+ if (sub_809BE80())
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 2;
+ }
+ else if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2))
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 3;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ SetPSSCallback(sub_809746C);
+ }
+ break;
+ case 7:
+ if (sub_809BE80())
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 2;
+ }
+ else if (gPokemonStorageSystemPtr->unk_11f9)
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 4;
+ }
+ else if (ItemIsMail(gPokemonStorageSystemPtr->unk_11f2))
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 3;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_8097594);
+ }
+ break;
+ case 6:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_8097788);
+ break;
+ case 8:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_80977E4);
+ break;
+#if DEBUG
+ case 32:
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ SetPSSCallback(debug_sub_80A435C);
+ break;
+#endif
+ }
+ break;
+ case 2:
+ PlaySE(SE_HAZURE);
+ PrintStorageActionText(PC_TEXT_LAST_POKE);
+ gPokemonStorageSystemPtr->unk_0004 = 5;
+ break;
+ case 4:
+ PlaySE(SE_HAZURE);
+ PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG);
+ gPokemonStorageSystemPtr->unk_0004 = 5;
+ break;
+ case 3:
+ PlaySE(SE_HAZURE);
+ PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL);
+ gPokemonStorageSystemPtr->unk_0004 = 5;
+ break;
+ case 5:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ {
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_80972A8(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ sub_809B100(0);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ if (!sub_809B130())
+ {
+ if (gUnknown_0203847C)
+ SetPSSCallback(sub_8097858);
+ else
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_80972FC(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ sub_809B100(1);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ if (!sub_809B130())
+ {
+ if (gUnknown_0203847C)
+ SetPSSCallback(sub_8097858);
+ else
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void c3_0808DC50(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ sub_809B100(2);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ if (!sub_809B130())
+ {
+ BoxSetMosaic();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_8097390(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ if (CalculatePlayerPartyCount() == 6)
+ {
+ PrintStorageActionText(PC_TEXT_PARTY_FULL);
+ gPokemonStorageSystemPtr->unk_0004 = 1;
+ }
+ else
+ {
+ sub_809B0E0();
+ sub_809B100(0);
+ gPokemonStorageSystemPtr->unk_0004 = 2;
+ }
+ break;
+ case 1:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ {
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ case 2:
+ if (!sub_809B130())
+ {
+ sub_809880C();
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ case 3:
+ if (!sub_8098830())
+ {
+ sub_809B100(1);
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ case 4:
+ if (!sub_809B130())
+ {
+ sub_80987DC();
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ case 5:
+ SetPSSCallback(sub_8097004);
+ break;
+ }
+}
+
+void sub_809746C(void)
+{
+ u8 r4;
+
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX);
+ sub_8096264(&gPokemonStorageSystemPtr->unk_2370, 0x0007, 0xdaca, 3);
+ sub_809634C(gUnknown_0203847E);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ r4 = sub_8096368();
+ if (r4 == 200);
+ else if (r4 == 201)
+ {
+ sub_8098A5C();
+ sub_809635C();
+ sub_8096310();
+ SetPSSCallback(sub_8096C84);
+ }
+ else
+ {
+ if (sub_809B62C(r4))
+ {
+ sub_8098A5C();
+ sub_809635C();
+ sub_8096310();
+ gPokemonStorageSystemPtr->unk_0004 = 2;
+ }
+ else
+ {
+ PrintStorageActionText(PC_TEXT_BOX_IS_FULL);
+ gPokemonStorageSystemPtr->unk_0004 = 4;
+ }
+ gUnknown_0203847E = r4;
+ }
+ break;
+ case 2:
+ party_compaction();
+ sub_8099310();
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 3:
+ if (sub_8099374() == 0)
+ {
+ sub_809B6BC();
+ BoxSetMosaic();
+ sub_80987DC();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ case 4:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ PrintStorageActionText(PC_TEXT_DEPOSIT_IN_WHICH_BOX);
+ gPokemonStorageSystemPtr->unk_0004 = 1;
+ }
+ break;
+ }
+}
+
+void sub_8097594(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ PrintStorageActionText(PC_TEXT_RELEASE_POKE);
+ sub_8098A38(1);
+ gPokemonStorageSystemPtr->unk_0004++;
+ // fallthrough
+ case 1:
+ switch (Menu_ProcessInputNoWrap())
+ {
+ case -1:
+ case 1:
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ break;
+ case 0:
+ sub_8098A5C();
+ sub_809B7D4();
+ sub_809B6DC();
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ }
+ break;
+ case 2:
+ sub_809B960();
+ if (!sub_809B734())
+ {
+ while (1)
+ {
+ s8 r0 = sub_809B960();
+ if (r0 == 1)
+ {
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ }
+ if (r0 == 0)
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 8;
+ break;
+ }
+ }
+ }
+ break;
+ case 3:
+ sub_809B760();
+ sub_809801C();
+ PrintStorageActionText(PC_TEXT_WAS_RELEASED);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 4:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ PrintStorageActionText(PC_TEXT_BYE_BYE);
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ case 5:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_8098A5C();
+ if (gUnknown_0203847C)
+ {
+ party_compaction();
+ sub_8099310();
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_0004 = 7;
+ }
+ }
+ break;
+ case 6:
+ if (sub_8099374() == 0)
+ {
+ sub_809B440();
+ BoxSetMosaic();
+ sub_80987DC();
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ case 7:
+ SetPSSCallback(sub_8096C84);
+ break;
+ case 8:
+ PrintStorageActionText(PC_TEXT_WAS_RELEASED);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 9:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ PrintStorageActionText(PC_TEXT_SURPRISE);
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ case 10:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_8098A5C();
+ sub_8099958();
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ case 11:
+ if (!sub_8099990())
+ {
+ sub_809B7AC();
+ PrintStorageActionText(PC_TEXT_CAME_BACK);
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ case 12:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ PrintStorageActionText(PC_TEXT_WORRIED);
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ case 13:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON))
+ {
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_8097788(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ sub_809BC18();
+ BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ gUnknown_0203847F = 0;
+ gPokemonStorageSystemPtr->unk_0006 = 0;
+ SetMainCallback2(sub_8096B5C);
+ }
+ break;
+ }
+}
+
+void sub_80977E4(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ PrintStorageActionText(PC_TEXT_MARK_POKE);
+ gPokemonStorageSystemPtr->unk_12bc.markings = gPokemonStorageSystemPtr->unk_11f7;
+ sub_80F7418(gPokemonStorageSystemPtr->unk_11f7, 0xb0, 0x10);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ if (!sub_80F7500())
+ {
+ sub_80F7470();
+ sub_8098A5C();
+ sub_809BDD8(gPokemonStorageSystemPtr->unk_12bc.markings);
+ sub_809801C();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_8097858(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ party_compaction();
+ sub_8099310();
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ if (sub_8099374() == 0)
+ {
+ sub_80987DC();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_809789C(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ PrintStorageActionText(PC_TEXT_WHAT_YOU_DO);
+ sub_809CE84();
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ switch (sub_809CF30())
+ {
+ case -1:
+ case 0:
+ sub_809A860(TRUE);
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ break;
+ case 11:
+ PlaySE(SE_SELECT);
+ SetPSSCallback(sub_8097B44);
+ break;
+ case 10:
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ SetPSSCallback(sub_8097974);
+ break;
+ case 9:
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ SetPSSCallback(sub_8097A64);
+ break;
+ }
+ break;
+ }
+}
+
+void sub_8097974(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ sub_8098A80();
+ PrintStorageActionText(PC_TEXT_PICK_A_THEME);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ gPokemonStorageSystemPtr->unk_0d5e = sub_809CF30();
+ switch (gPokemonStorageSystemPtr->unk_0d5e)
+ {
+ case -1:
+ sub_809A860(TRUE);
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ break;
+ case 12 ... 15:
+ PlaySE(SE_SELECT);
+ gPokemonStorageSystemPtr->unk_0d5e -= 12;
+ sub_8098AA8(gPokemonStorageSystemPtr->unk_0d5e);
+ PrintStorageActionText(PC_TEXT_PICK_A_WALLPAPER);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ }
+ break;
+ case 2:
+ gPokemonStorageSystemPtr->unk_0d60 = sub_809CF30();
+ switch (gPokemonStorageSystemPtr->unk_0d60)
+ {
+ case -1:
+ sub_8098A5C();
+ gPokemonStorageSystemPtr->unk_0004 = 0;
+ break;
+ case -2:
+ break;
+ default:
+ PlaySE(SE_SELECT);
+ sub_8098A5C();
+ gPokemonStorageSystemPtr->unk_0d60 -= 16;
+ sub_8099DCC(gPokemonStorageSystemPtr->unk_0d60);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ }
+ break;
+ case 3:
+ if (!sub_8099E08())
+ {
+ sub_809A860(TRUE);
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_8097A64(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ PrintStorageActionText(PC_TEXT_JUMP_TO_WHICH_BOX);
+ sub_8096264(&gPokemonStorageSystemPtr->unk_2370, 0x0007, 0xdaca, 3);
+ sub_809634C(gPokemonStorage.currentBox);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ gPokemonStorageSystemPtr->unk_08b2 = sub_8096368();
+ switch (gPokemonStorageSystemPtr->unk_08b2)
+ {
+ case 200:
+ break;
+ default:
+ sub_8098A5C();
+ sub_809635C();
+ sub_8096310();
+ if (gPokemonStorageSystemPtr->unk_08b2 == 201 || gPokemonStorageSystemPtr->unk_08b2 == gPokemonStorage.currentBox)
+ {
+ sub_809A860(TRUE);
+ SetPSSCallback(sub_8096C84);
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_0004++;
+ }
+ break;
+ }
+ break;
+ case 2:
+ sub_8099C70(gPokemonStorageSystemPtr->unk_08b2);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 3:
+ if (!sub_8099D34())
+ {
+ gPokemonStorage.currentBox = gPokemonStorageSystemPtr->unk_08b2;
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ }
+}
+
+void sub_8097B44(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ sub_809BB90();
+ BeginNormalPaletteFade(0xffffffff, 0, 0, 16, 0);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ gUnknown_0203847F = 1;
+ gPokemonStorageSystemPtr->unk_0006 = 1;
+ SetMainCallback2(sub_8096B5C);
+ }
+ break;
+ }
+}
+
+void sub_8097BA0(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ if (sub_809BF20())
+ {
+ PlaySE(SE_HAZURE);
+ PrintStorageActionText(PC_TEXT_HOLDING_POKE);
+ gPokemonStorageSystemPtr->unk_0004 = 1;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ PrintStorageActionText(PC_TEXT_EXIT_BOX);
+ sub_8098A38(0);
+ gPokemonStorageSystemPtr->unk_0004 = 2;
+ }
+ break;
+ case 1:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ {
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ case 2:
+ switch (Menu_ProcessInputNoWrap())
+ {
+ case 1:
+ case -1:
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ break;
+ case 0:
+ PlaySE(SE_PC_OFF);
+ sub_8098A5C();
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ }
+ break;
+ case 3:
+ gPokemonStorageSystemPtr->unk_000c.tileTag = 0x000e;
+ gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0;
+ gPokemonStorageSystemPtr->unk_000c.unk04 = 20;
+ gPokemonStorageSystemPtr->unk_000c.unk06 = 0;
+ sub_80C5E38(&gPokemonStorageSystemPtr->unk_000c);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 4:
+ if (sub_80C5F98())
+ {
+ gPlayerPartyCount = CalculatePlayerPartyCount();
+ SetMainCallback2(sub_80961A8);
+ }
+ break;
+ }
+}
+
+void sub_8097CC0(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_0004)
+ {
+ case 0:
+ if (sub_809BF20())
+ {
+ PlaySE(SE_HAZURE);
+ PrintStorageActionText(PC_TEXT_HOLDING_POKE);
+ gPokemonStorageSystemPtr->unk_0004 = 1;
+ }
+ else
+ {
+ PlaySE(SE_SELECT);
+ PrintStorageActionText(PC_TEXT_CONTINUE_BOX);
+ sub_8098A38(0);
+ gPokemonStorageSystemPtr->unk_0004 = 2;
+ }
+ break;
+ case 1:
+ if (gMain.newKeys & (A_BUTTON | B_BUTTON | DPAD_ANY))
+ {
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ }
+ break;
+ case 2:
+ switch (Menu_ProcessInputNoWrap())
+ {
+ case 0:
+ sub_8098A5C();
+ SetPSSCallback(sub_8096C84);
+ break;
+ case -1:
+ case 1:
+ PlaySE(SE_PC_OFF);
+ sub_8098A5C();
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ }
+ break;
+ case 3:
+ gPokemonStorageSystemPtr->unk_000c.tileTag = 0x000e;
+ gPokemonStorageSystemPtr->unk_000c.paletteTag = 0xdad0;
+ gPokemonStorageSystemPtr->unk_000c.unk04 = 20;
+ gPokemonStorageSystemPtr->unk_000c.unk06 = 0;
+ sub_80C5E38(&gPokemonStorageSystemPtr->unk_000c);
+ gPokemonStorageSystemPtr->unk_0004++;
+ break;
+ case 4:
+ if (sub_80C5F98())
+ {
+ gPlayerPartyCount = CalculatePlayerPartyCount();
+ SetMainCallback2(sub_80961A8);
+ }
+ break;
+ }
+}
+
+void sub_8097DE0(void)
+{
+ gPokemonStorageSystemPtr->unk_0007 = 0;
+ gPokemonStorageSystemPtr->unk_0008 = 0;
+ gPokemonStorageSystemPtr->unk_000a = 0;
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(3) | BGCNT_SCREENBASE(30);
+ DmaCopy16Defvars(3, gPokemonStorageScrollingBGTile, BG_SCREEN_ADDR(28), sizeof gPokemonStorageScrollingBGTile);
+ LZ77UnCompVram(gPokemonStorageScrollingBGTilemap, BG_SCREEN_ADDR(30));
+ LoadPalette(gPokemonStorageScrollingBGPalette, 0xd0, 0x10);
+}
+
+void sub_8097E44(void)
+{
+ if (++gPokemonStorageSystemPtr->unk_0007 >= 2)
+ {
+ gPokemonStorageSystemPtr->unk_0007 = 0;
+ gPokemonStorageSystemPtr->unk_0008--;
+ gPokemonStorageSystemPtr->unk_000a++;
+ }
+}
+
+void sub_8097E70(void)
+{
+ LZ77UnCompVram(gPSSMenuHeader_Gfx, BG_SCREEN_ADDR(10));
+ LZ77UnCompWram(gPSSMenuHeader_Tilemap, gUnknown_02039760);
+ sub_809D034(BG_SCREEN_ADDR(15), 0, 0, gUnknown_02039760, 0, 0, 10, 20);
+ LoadPalette(gPSSMenu1_Pal, 0x10, 0x20);
+ LoadPalette(gPSSMenu2_Pal, 0x00, 0x20);
+ LoadPalette(gUnknown_083B6D74, 0xB0, 0x20);
+ LoadPalette(gUnknown_083B6D94, 0xC0, 0x20);
+ LoadPalette(gUnknownPalette_81E6692 + 1, 0xF1, 0x02);
+ LoadPalette(gUnknownPalette_81E6692 + 1, 0xF2, 0x02);
+ LoadPalette(gUnknownPalette_81E6692 + 5, 0xF3, 0x02);
+ LoadPalette(gUnknownPalette_81E6692 + 12, 0xF4, 0x04);
+ LoadPalette(gUnknownPalette_81E6692 + 10, 0xF6, 0x04);
+ LoadPalette(gUnknownPalette_81E6692 + 2, 0xFF, 0x02);
+ LoadSpritePalette(&gWaveformSpritePalette);
+ sub_80980D4();
+ sub_8097F58();
+ sub_8097FB8();
+ sub_809801C();
+}
+
+void sub_8097F58(void)
+{
+ gPokemonStorageSystemPtr->unk_12ac = sub_80F7940(0x000d, 0xdace, 0);
+ gPokemonStorageSystemPtr->unk_12ac->oam.priority = 0;
+ gPokemonStorageSystemPtr->unk_12ac->subpriority = 1;
+ gPokemonStorageSystemPtr->unk_12ac->pos1.x = 0x28;
+ gPokemonStorageSystemPtr->unk_12ac->pos1.y = 0x95;
+ gPokemonStorageSystemPtr->unk_12b8 = BG_CHAR_ADDR(4) + 32 * GetSpriteTileStartByTag(0x000d);
+}
+
+const struct SpriteTemplate gSpriteTemplate_83B6EFC;
+
+void sub_8097FB8(void)
+{
+ u16 i;
+ struct SpriteSheet sheet = {WaveformTiles, 0x1c0, 0x0005};
+
+ LoadSpriteSheet(&sheet);
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83B6EFC, i * 63 + 8, 9, 2);
+ gPokemonStorageSystemPtr->unk_12b0[i] = gSprites + spriteId;
+ }
+}
+
+void sub_809801C(void)
+{
+ sub_80981F0(gPokemonStorageSystemPtr->unk_11f0, gPokemonStorageSystemPtr->unk_11ec);
+ sub_80982B4();
+ sub_8098350();
+}
+
+void BoxSetMosaic(void)
+{
+ sub_809801C();
+ if (gPokemonStorageSystemPtr->unk_2700)
+ {
+ gPokemonStorageSystemPtr->unk_2700->oam.mosaic = TRUE;
+ gPokemonStorageSystemPtr->unk_2700->data[0] = 10;
+ gPokemonStorageSystemPtr->unk_2700->data[1] = 1;
+ gPokemonStorageSystemPtr->unk_2700->callback = sub_8098090;
+ REG_MOSAIC = (gPokemonStorageSystemPtr->unk_2700->data[0] << 12) | (gPokemonStorageSystemPtr->unk_2700->data[0] << 8);
+ }
+}
+
+void sub_8098090(struct Sprite *sprite)
+{
+ sprite->data[0] -= sprite->data[1];
+ if (sprite->data[0] < 0)
+ sprite->data[0] = 0;
+ REG_MOSAIC = (sprite->data[0] << 12) | (sprite->data[0] << 8);
+ if (sprite->data[0] == 0)
+ {
+ sprite->oam.mosaic = FALSE;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+// sub_80980D4
+
+const struct OamData gOamData_83B6EAC;
+
+#ifdef NONMATCHING
+void sub_80980D4(void)
+{
+ u16 i;
+ u16 tileStart;
+ u8 palSlot;
+ u8 spriteId;
+ struct SpriteSheet sheet = {gPokemonStorageSystemPtr->unk_2784, 0x800, 0x0002};
+ struct SpritePalette palette = {gPokemonStorageSystemPtr->unk_2704, 0xdac7};
+ struct SpriteTemplate template = {
+ 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+ };
+
+ for (i = 0; i < 0x800; i++)
+ gPokemonStorageSystemPtr->unk_2784[i] = 0;
+ for (i = 0; i < 0x10; i++)
+ gPokemonStorageSystemPtr->unk_2704[i] = 0;
+
+ gPokemonStorageSystemPtr->unk_2700 = NULL;
+ if ((tileStart = LoadSpriteSheet(&sheet)) != 0
+ && (palSlot = LoadSpritePalette(&palette)) != 0xff
+ && (spriteId = CreateSprite(&template, 0x28, 0x30, 0)) != MAX_SPRITES)
+ {
+ // FIXME this gets compiled as a separate block between the palSlot check and the spriteId check
+ gPokemonStorageSystemPtr->unk_2700 = gSprites + spriteId;
+ gPokemonStorageSystemPtr->unk_26fa = palSlot * 16 + 0x100;
+ gPokemonStorageSystemPtr->unk_26fc = BG_CHAR_ADDR(4) + tileStart * 32;
+ }
+
+ if (gPokemonStorageSystemPtr->unk_2700 == NULL)
+ {
+ FreeSpriteTilesByTag(0x0002);
+ FreeSpritePaletteByTag(0xdac7);
+ }
+}
+#else
+
+const struct SpriteSheet gUnknown_083B6DCC = {ePokemonStorageSystem.unk_2784, 0x800, 0x0002};
+const struct SpritePalette gUnknown_083B6DD4 = {ePokemonStorageSystem.unk_2704, 0xdac7};
+const struct SpriteTemplate gSpriteTemplate_83B6DDC = {
+ 0x0002, 0xdac7, &gOamData_83B6EAC, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+__attribute__((naked)) void sub_80980D4(void)
+{
+ asm_unified("\tpush {r4,r5,lr}\n"
+ "\tsub sp, 0x28\n"
+ "\tldr r0, _08098150 @ =gUnknown_083B6DCC\n"
+ "\tldr r1, [r0, 0x4]\n"
+ "\tldr r0, [r0]\n"
+ "\tstr r0, [sp, 0x18]\n"
+ "\tstr r1, [sp, 0x1C]\n"
+ "\tldr r0, _08098154 @ =gUnknown_083B6DD4\n"
+ "\tldr r1, [r0, 0x4]\n"
+ "\tldr r0, [r0]\n"
+ "\tstr r0, [sp, 0x20]\n"
+ "\tstr r1, [sp, 0x24]\n"
+ "\tmov r1, sp\n"
+ "\tldr r0, _08098158 @ =gSpriteTemplate_83B6DDC\n"
+ "\tldm r0!, {r2-r4}\n"
+ "\tstm r1!, {r2-r4}\n"
+ "\tldm r0!, {r2-r4}\n"
+ "\tstm r1!, {r2-r4}\n"
+ "\tmovs r1, 0\n"
+ "\tadd r5, sp, 0x18\n"
+ "\tldr r4, _0809815C @ =gSharedMem + 0x2784\n"
+ "\tmovs r3, 0\n"
+ "\tldr r2, _08098160 @ =0x000007ff\n"
+ "_08098102:\n"
+ "\tadds r0, r1, r4\n"
+ "\tstrb r3, [r0]\n"
+ "\tadds r0, r1, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tcmp r1, r2\n"
+ "\tbls _08098102\n"
+ "\tmovs r1, 0\n"
+ "\tldr r3, _08098164 @ =gSharedMem + 0x2704\n"
+ "\tmovs r2, 0\n"
+ "_08098116:\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r3\n"
+ "\tstrh r2, [r0]\n"
+ "\tadds r0, r1, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tcmp r1, 0xF\n"
+ "\tbls _08098116\n"
+ "\tldr r0, _08098168 @ =gSharedMem\n"
+ "\tmovs r1, 0x9C\n"
+ "\tlsls r1, 6\n"
+ "\tadds r0, r1\n"
+ "\tmovs r1, 0\n"
+ "\tstr r1, [r0]\n"
+ "\tadds r0, r5, 0\n"
+ "\tbl LoadSpriteSheet\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, 0\n"
+ "\tbeq _080981C4\n"
+ "\tadd r0, sp, 0x20\n"
+ "\tbl LoadSpritePalette\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tcmp r4, 0xFF\n"
+ "\tbeq _080981C4\n"
+ "\tb _080981B0\n"
+ "\t.align 2, 0\n"
+ "_08098150: .4byte gUnknown_083B6DCC\n"
+ "_08098154: .4byte gUnknown_083B6DD4\n"
+ "_08098158: .4byte gSpriteTemplate_83B6DDC\n"
+ "_0809815C: .4byte gSharedMem + 0x2784\n"
+ "_08098160: .4byte 0x000007ff\n"
+ "_08098164: .4byte gSharedMem + 0x2704\n"
+ "_08098168: .4byte gSharedMem\n"
+ "_0809816C:\n"
+ "\tldr r2, _0809819C @ =gSharedMem\n"
+ "\tmovs r0, 0x9C\n"
+ "\tlsls r0, 6\n"
+ "\tadds r3, r2, r0\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _080981A0 @ =gSprites\n"
+ "\tadds r0, r1\n"
+ "\tstr r0, [r3]\n"
+ "\tlsls r0, r4, 4\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tldr r3, _080981A4 @ =0x000026fa\n"
+ "\tadds r1, r2, r3\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r4, _080981A8 @ =0x000026fc\n"
+ "\tadds r2, r4\n"
+ "\tlsls r0, r5, 5\n"
+ "\tldr r1, _080981AC @ =0x06010000\n"
+ "\tadds r0, r1\n"
+ "\tstr r0, [r2]\n"
+ "\tb _080981C4\n"
+ "\t.align 2, 0\n"
+ "_0809819C: .4byte gSharedMem\n"
+ "_080981A0: .4byte gSprites\n"
+ "_080981A4: .4byte 0x000026fa\n"
+ "_080981A8: .4byte 0x000026fc\n"
+ "_080981AC: .4byte 0x06010000\n"
+ "_080981B0:\n"
+ "\tmov r0, sp\n"
+ "\tmovs r1, 0x28\n"
+ "\tmovs r2, 0x30\n"
+ "\tmovs r3, 0\n"
+ "\tbl CreateSprite\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r1, r0, 24\n"
+ "\tcmp r1, 0x40\n"
+ "\tbne _0809816C\n"
+ "_080981C4:\n"
+ "\tldr r0, _080981E8 @ =gSharedMem\n"
+ "\tmovs r2, 0x9C\n"
+ "\tlsls r2, 6\n"
+ "\tadds r0, r2\n"
+ "\tldr r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080981DE\n"
+ "\tmovs r0, 0x2\n"
+ "\tbl FreeSpriteTilesByTag\n"
+ "\tldr r0, _080981EC @ =0x0000dac7\n"
+ "\tbl FreeSpritePaletteByTag\n"
+ "_080981DE:\n"
+ "\tadd sp, 0x28\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_080981E8: .4byte gSharedMem\n"
+ "_080981EC: .4byte 0x0000dac7");
+}
+#endif
+
+void sub_80981F0(u16 species, u32 pid)
+{
+ if (gPokemonStorageSystemPtr->unk_2700)
+ {
+ if (species != SPECIES_NONE)
+ {
+ HandleLoadSpecialPokePic(gMonFrontPicTable + species, gMonFrontPicCoords[species].coords, 1, (intptr_t)gPokemonStorageSystemPtr->unk_4784, gPokemonStorageSystemPtr->unk_2784, species, pid);
+ LZ77UnCompWram(gPokemonStorageSystemPtr->unk_11e8, gPokemonStorageSystemPtr->unk_2704);
+ CpuCopy32(gPokemonStorageSystemPtr->unk_2784, gPokemonStorageSystemPtr->unk_26fc, 0x800);
+ LoadPalette(gPokemonStorageSystemPtr->unk_2704, gPokemonStorageSystemPtr->unk_26fa, 0x20);
+ gPokemonStorageSystemPtr->unk_2700->invisible = FALSE;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_2700->invisible = TRUE;
+ }
+ }
+}
+
+void sub_80982B4(void)
+{
+ if (gPokemonStorageSystemPtr->unk_11f0)
+ {
+ sub_80F7A10(gPokemonStorageSystemPtr->unk_11f7, gPokemonStorageSystemPtr->unk_12b8);
+ gPokemonStorageSystemPtr->unk_12ac->invisible = FALSE;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_12ac->invisible = TRUE;
+ }
+ Menu_EraseWindowRect(0, 11, 9, 17);
+ Menu_PrintText(gPokemonStorageSystemPtr->unk_127a, 1, 16);
+ Menu_PrintText(gPokemonStorageSystemPtr->unk_120f, 1, 11);
+ Menu_PrintText(gPokemonStorageSystemPtr->unk_1234, 0, 13);
+ Menu_PrintText(gPokemonStorageSystemPtr->unk_1259, 1, 15);
+}
+
+void sub_8098350(void)
+{
+ u16 i;
+
+ if (gPokemonStorageSystemPtr->unk_11f0)
+ {
+ sub_809D034(BG_SCREEN_ADDR(15), 1, 0, gUnknown_02039760, 1, 0, 8, 2);
+ for (i = 0; i < 2; i++)
+ StartSpriteAnimIfDifferent(gPokemonStorageSystemPtr->unk_12b0[i], i * 2 + 1);
+ }
+ else
+ {
+ sub_809D034(BG_SCREEN_ADDR(15), 1, 0, gUnknown_02039760, 10, 0, 8, 2);
+ for (i = 0; i < 2; i++)
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_12b0[i], i * 2);
+ }
+}
+
+void sub_8098400(void)
+{
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(15);
+ LZ77UnCompVram(gPSSMenuMisc_Gfx, BG_SCREEN_ADDR(13));
+ LZ77UnCompWram(gPSSMenuMisc_Tilemap, gPokemonStorageSystemPtr->unk_00a8);
+ LoadPalette(gPSSMenu3_Pal, 0x20, 0x20);
+ LoadPalette(gPSSMenu4_Pal, 0x30, 0x20);
+ DmaClear16(3, BG_SCREEN_ADDR(15), 0x800);
+ sub_8098780();
+ if (gUnknown_0203847C)
+ {
+ sub_8098690(TRUE);
+ sub_8099200(TRUE);
+ sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, 0, 12, 22);
+ }
+ else
+ {
+ sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, 20, 12, 2);
+ sub_8098690(TRUE);
+ }
+ gPokemonStorageSystemPtr->unk_08af = 0;
+}
+
+void sub_80984E8(void)
+{
+ gPokemonStorageSystemPtr->unk_08a8 = 20;
+ gPokemonStorageSystemPtr->unk_08aa = 2;
+ gPokemonStorageSystemPtr->unk_08ad = 0;
+ sub_8099200(FALSE);
+}
+
+bool8 sub_8098520(void)
+{
+ if (gPokemonStorageSystemPtr->unk_08ad == 20)
+ return FALSE;
+ gPokemonStorageSystemPtr->unk_08a8--;
+ gPokemonStorageSystemPtr->unk_08aa++;
+ sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, gPokemonStorageSystemPtr->unk_08a8, 12, gPokemonStorageSystemPtr->unk_08aa);
+ sub_80994A8(8);
+ if (++gPokemonStorageSystemPtr->unk_08ad == 20)
+ {
+ gUnknown_0203847C = 1;
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void add_to_c3_somehow(void)
+{
+ gPokemonStorageSystemPtr->unk_08a8 = 0;
+ gPokemonStorageSystemPtr->unk_08aa = 22;
+ gPokemonStorageSystemPtr->unk_08ad = 0;
+}
+
+bool8 sub_80985CC(void)
+{
+ if (gPokemonStorageSystemPtr->unk_08ad == 20)
+ return FALSE;
+ gPokemonStorageSystemPtr->unk_08a8++;
+ gPokemonStorageSystemPtr->unk_08aa--;
+ sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, gPokemonStorageSystemPtr->unk_08a8, 12, gPokemonStorageSystemPtr->unk_08aa);
+ sub_809D16C(BG_SCREEN_ADDR(15), 10, gPokemonStorageSystemPtr->unk_08aa, 12, 1);
+ sub_80994A8(-8);
+ if (++gPokemonStorageSystemPtr->unk_08ad == 20)
+ {
+ gUnknown_0203847C = 0;
+ sub_809954C();
+ party_compaction();
+ sub_809D034(BG_SCREEN_ADDR(15), 21, 0, gPokemonStorageSystemPtr->unk_00a8, 12, 0, 1, 2);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_8098690(bool8 flag)
+{
+ if (flag)
+ sub_809D034(BG_SCREEN_ADDR(15), 21, 0, gPokemonStorageSystemPtr->unk_00a8, 12, 0, 9, 2);
+ else
+ sub_809D034(BG_SCREEN_ADDR(15), 21, 0, gPokemonStorageSystemPtr->unk_00a8, 12, 2, 9, 2);
+}
+
+void sub_80986E8(void)
+{
+ gPokemonStorageSystemPtr->unk_08af = 1;
+ gPokemonStorageSystemPtr->unk_08b0 = 30;
+ gPokemonStorageSystemPtr->unk_08b1 = 1;
+}
+
+void sub_8098710(void)
+{
+ if (gPokemonStorageSystemPtr->unk_08af)
+ {
+ gPokemonStorageSystemPtr->unk_08af = 0;
+ sub_8098690(TRUE);
+ }
+}
+
+void sub_8098734(void)
+{
+ if (gPokemonStorageSystemPtr->unk_08af && ++gPokemonStorageSystemPtr->unk_08b0 > 30)
+ {
+ gPokemonStorageSystemPtr->unk_08b0 = 0;
+ gPokemonStorageSystemPtr->unk_08b1 = gPokemonStorageSystemPtr->unk_08b1 ? FALSE : TRUE;
+ sub_8098690(gPokemonStorageSystemPtr->unk_08b1);
+ }
+}
+
+void sub_8098780(void)
+{
+ int i;
+
+ for (i = 1; i < PARTY_SIZE; i++)
+ {
+ u16 r1;
+ bool32 r0 = GetMonData(gPlayerParty + i, MON_DATA_SPECIES);
+ if (r0)
+ r0 = TRUE;
+ r1 = r0 ? 12 : 16;
+ sub_809D104(gPokemonStorageSystemPtr->unk_00a8, 7, (i - 1) * 3 + 1, gPokemonStorageSystemPtr->unk_00a8, r1, 4, 4, 3);
+ }
+}
+
+void sub_80987DC(void)
+{
+ sub_8098780();
+ sub_809D034(BG_SCREEN_ADDR(15), 10, 0, gPokemonStorageSystemPtr->unk_00a8, 0, 0, 12, 22);
+}
+
+void sub_809880C(void)
+{
+ gPokemonStorageSystemPtr->unk_08ae = 0;
+ PlaySE(SE_WIN_OPEN);
+ sub_80984E8();
+}
+
+bool8 sub_8098830(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_08ae)
+ {
+ case 0:
+ if (!sub_8098520())
+ {
+ sub_809B068();
+ gPokemonStorageSystemPtr->unk_08ae++;
+ }
+ break;
+ case 1:
+ if (!sub_809AC00())
+ {
+ if (gPokemonStorageSystemPtr->unk_11f6)
+ BoxSetMosaic();
+ gPokemonStorageSystemPtr->unk_08ae++;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+const struct StorageAction gPCStorageActionTexts[] =
+{
+ {PCText_ExitBox, 0},
+ {PCText_WhatYouDo, 0},
+ {PCText_PickATheme, 0},
+ {PCText_PickAWallpaper, 0},
+ {PCText_IsSelected, 1},
+ {PCText_JumpToWhichBox, 0},
+ {PCText_DepositInWhichBox, 0},
+ {PCText_WasDeposited, 1},
+ {PCText_BoxIsFull, 0},
+ {PCText_ReleasePoke, 0},
+ {PCText_WasReleased, 4},
+ {PCText_ByeBye, 6},
+ {PCText_MarkPoke, 0},
+ {PCText_LastPoke, 0},
+ {PCText_PartyFull, 0},
+ {PCText_HoldingPoke, 0},
+ {PCText_WhichOneWillTake, 0},
+ {PCText_CantReleaseEgg, 0},
+ {PCText_ContinueBox, 0},
+ {PCText_CameBack, 1},
+ {PCText_Worried, 0},
+ {PCText_Surprise, 0},
+ {PCText_PleaseRemoveMail, 0}
+};
+
+void PrintStorageActionText(u8 index)
+{
+ u8 *ptr;
+
+ Menu_DrawStdWindowFrame(10, 16, 29, 19);
+
+ switch (gPCStorageActionTexts[index].format)
+ {
+ case PC_TEXT_FMT_UNK_02:
+ ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text);
+ ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_11fa);
+ break;
+ case PC_TEXT_FMT_UNK_05:
+ ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text);
+ ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_26e4);
+ break;
+ case PC_TEXT_FMT_MON_NAME:
+ // {var} + " is selected."
+ ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPokemonStorageSystemPtr->unk_11fa);
+ ptr = StringCopy(ptr, gPCStorageActionTexts[index].text);
+ break;
+ case PC_TEXT_FMT_MON_NAME_2:
+ // {var} + " was released."
+ ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPokemonStorageSystemPtr->unk_26e4);
+#if ENGLISH
+ ptr = StringCopy(ptr, gPCStorageActionTexts[index].text);
+#elif GERMAN
+ ptr = de_sub_8073174(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text);
+#endif
+ break;
+ case PC_TEXT_FMT_UNK_03:
+ {
+ const u8 *stringLength;
+ const u8 *text;
+
+ text = gPCStorageActionTexts[index].text;
+ stringLength = &text[StringLength(text)] + 1;
+
+ ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text);
+ ptr = StringCopy(ptr, gPokemonStorageSystemPtr->unk_11fa);
+ ptr = StringCopy(ptr, stringLength);
+ }
+ break;
+ case PC_TEXT_FMT_MON_NAME_AFTER_EXCL_MARK:
+ {
+ const u8 *stringLength;
+ const u8 *text;
+
+ text = gPCStorageActionTexts[index].text;
+ stringLength = &text[StringLength(text)] - 1;
+
+ ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text);
+ ptr = StringCopy(ptr - 1, gPokemonStorageSystemPtr->unk_26e4);
+ ptr = StringCopy(ptr, stringLength);
+ }
+ break;
+ case PC_TEXT_FMT_NORMAL:
+ default:
+ ptr = StringCopy(gPokemonStorageSystemPtr->unk_2694, gPCStorageActionTexts[index].text);
+ break;
+ }
+
+ while (ptr < gPokemonStorageSystemPtr->unk_26a6)
+ {
+ ptr[0] = CHAR_SPACE;
+ ptr++;
+ }
+
+ ptr[0] = EOS;
+ Menu_PrintText(gPokemonStorageSystemPtr->unk_2694, 11, 17);
+}
+
+const struct OamData gOamData_83B6EAC = {
+ .size = 3
+};
+
+const struct OamData gOamData_83B6EB4 = {
+ .shape = ST_OAM_H_RECTANGLE
+};
+
+const union AnimCmd gSpriteAnim_83B6EBC[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83B6EC4[] = {
+ ANIMCMD_FRAME(2, 8),
+ ANIMCMD_FRAME(4, 8),
+ ANIMCMD_FRAME(6, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd gSpriteAnim_83B6ED4[] = {
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83B6EDC[] = {
+ ANIMCMD_FRAME(10, 8),
+ ANIMCMD_FRAME( 4, 8),
+ ANIMCMD_FRAME(12, 8),
+ ANIMCMD_JUMP(0)
+};
+
+const union AnimCmd *const gSpriteAnimTable_83B6EEC[] = {
+ gSpriteAnim_83B6EBC,
+ gSpriteAnim_83B6EC4,
+ gSpriteAnim_83B6ED4,
+ gSpriteAnim_83B6EDC
+};
+
+const struct SpriteTemplate gSpriteTemplate_83B6EFC = {
+ 0x0005,
+ 0xdacd,
+ &gOamData_83B6EB4,
+ gSpriteAnimTable_83B6EEC,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+void sub_8098A38(s8 a0)
+{
+ DisplayYesNoMenu(23, 10, 0);
+ Menu_MoveCursor(a0);
+}
+
+void sub_8098A5C(void)
+{
+ Menu_DestroyCursor();
+ Menu_EraseWindowRect(10, 16, 29, 19);
+ Menu_EraseWindowRect(23, 10, 29, 15);
+}
+
+void sub_8098A80(void)
+{
+ sub_809CDCC();
+ sub_809CDEC(12);
+ sub_809CDEC(13);
+ sub_809CDEC(14);
+ sub_809CDEC(15);
+ sub_809CE84();
+}
+
+void sub_8098AA8(u8 a0)
+{
+ sub_809CDCC();
+ switch (a0)
+ {
+ case 0:
+ sub_809CDEC(16);
+ sub_809CDEC(17);
+ sub_809CDEC(18);
+ sub_809CDEC(19);
+ break;
+ case 1:
+ sub_809CDEC(20);
+ sub_809CDEC(21);
+ sub_809CDEC(22);
+ sub_809CDEC(23);
+ break;
+ case 2:
+ sub_809CDEC(24);
+ sub_809CDEC(25);
+ sub_809CDEC(26);
+ sub_809CDEC(27);
+ break;
+ case 3:
+ sub_809CDEC(28);
+ sub_809CDEC(29);
+ sub_809CDEC(30);
+ sub_809CDEC(31);
+ break;
+ }
+ sub_809CE84();
+}
diff --git a/src/pokemon_storage_system_3.c b/src/pokemon_storage_system_3.c
new file mode 100644
index 000000000..da26c6fc5
--- /dev/null
+++ b/src/pokemon_storage_system_3.c
@@ -0,0 +1,655 @@
+
+// Includes
+#include "global.h"
+#include "constants/species.h"
+#include "sprite.h"
+#include "trig.h"
+#include "pokemon_icon.h"
+#include "pokemon_storage_system.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+// Static ROM declarations
+
+static void sub_8098E68(struct Sprite *sprite);
+static void sub_8099388(struct Sprite *sprite, u16 a1);
+static void sub_80993F4(struct Sprite *sprite);
+static void sub_80999C4(struct Sprite *sprite);
+static struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 priority, u8 subpriority);
+static void PSS_DestroyMonIconSprite(struct Sprite *sprite);
+
+// .rodata
+
+const struct OamData gOamData_83B6F2C;
+
+// .text
+
+u8 get_preferred_box(void)
+{
+ return gPokemonStorage.currentBox;
+}
+
+void ResetPSSMonIconSprites(void)
+{
+ u16 i;
+
+ sub_809D51C();
+ for (i = 0; i < 40; i++)
+ gPokemonStorageSystemPtr->unk_10d0[i] = 0;
+ for (i = 0; i < 40; i++)
+ gPokemonStorageSystemPtr->unk_1120[i] = 0;
+ for (i = 0; i < 6; i++)
+ gPokemonStorageSystemPtr->unk_1038[i] = NULL;
+ for (i = 0; i < 30; i++)
+ gPokemonStorageSystemPtr->unk_1050[i] = NULL;
+ gPokemonStorageSystemPtr->unk_1034 = NULL;
+ gPokemonStorageSystemPtr->unk_0d5c = 0;
+}
+
+void sub_8098BF0(void)
+{
+ u32 personality = GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_PERSONALITY);
+ gPokemonStorageSystemPtr->unk_1034 = PSS_SpawnMonIconSprite(GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_SPECIES2), personality, 0, 0, 1, 7);
+ gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4;
+}
+
+void SpawnBoxIconSprites(u8 boxId)
+{
+ struct BoxPokemon *box = gPokemonStorage.boxes[boxId];
+ u16 i;
+ u16 k = 0;
+ for (i = 0; i < 5; i++)
+ {
+ u16 j;
+ for (j = 0; j < 6; j++)
+ {
+ u16 species = GetBoxMonData(box, MON_DATA_SPECIES2);
+ if (species != SPECIES_NONE)
+ gPokemonStorageSystemPtr->unk_1050[k] = PSS_SpawnMonIconSprite(species, GetBoxMonData(box, MON_DATA_PERSONALITY), 24 * j + 0x64, 24 * i + 0x2c, 2, 18 - j);
+ else
+ gPokemonStorageSystemPtr->unk_1050[k] = NULL;
+ box++;
+ k++;
+ }
+ }
+}
+
+void sub_8098D20(u8 monId)
+{
+ struct BoxPokemon *mon = gPokemonStorage.boxes[get_preferred_box()] + monId;
+ u16 species = GetBoxMonData(mon, MON_DATA_SPECIES2);
+ if (species != SPECIES_NONE)
+ {
+ s16 x = 24 * (monId % 6) + 0x64;
+ s16 y = 24 * (monId / 6) + 0x2c;
+ gPokemonStorageSystemPtr->unk_1050[monId] = PSS_SpawnMonIconSprite(species, GetBoxMonData(mon, MON_DATA_PERSONALITY), x, y, 2, 18 - (monId % 6));
+ }
+}
+
+static void sub_8098DE0(s16 a0)
+{
+ u16 monId;
+ for (monId = 0; monId < 30; monId++)
+ {
+ if (gPokemonStorageSystemPtr->unk_1050[monId])
+ {
+ gPokemonStorageSystemPtr->unk_1050[monId]->data[2] = a0;
+ gPokemonStorageSystemPtr->unk_1050[monId]->data[4] = 1;
+ gPokemonStorageSystemPtr->unk_1050[monId]->callback = sub_8098E68;
+ }
+ }
+}
+
+static void sub_8098E24(struct Sprite *sprite)
+{
+ if (sprite->data[1] != 0)
+ {
+ sprite->data[1]--;
+ sprite->pos1.x += sprite->data[2];
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_1178--;
+ sprite->pos1.x = sprite->data[3];
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void sub_8098E68(struct Sprite *sprite)
+{
+ if (sprite->data[4] != 0)
+ {
+ sprite->data[4]--;
+ }
+ else
+ {
+ sprite->pos1.x += sprite->data[2];
+ sprite->data[5] = sprite->pos1.x + sprite->pos2.x;
+ if (sprite->data[5] < 0x45 || sprite->data[5] > 0xfb)
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void sub_8098EA0(u8 col)
+{
+ u16 i;
+
+ for (i = 0; i < 5; i++)
+ {
+ if (gPokemonStorageSystemPtr->unk_1050[col])
+ {
+ PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1050[col]);
+ gPokemonStorageSystemPtr->unk_1050[col] = NULL;
+ }
+ col += 6;
+ }
+}
+
+static u8 sub_8098EE0(u8 col, u16 a1, s16 a2)
+{
+ u16 i;
+ u16 x;
+ u16 y;
+ u8 count;
+ u8 x1;
+ u16 curX;
+
+ y = 0x2c;
+ x = 24 * col + 0x64;
+ curX = x - (a1 + 1) * a2;
+ x1 = 18 - col;
+ count = 0;
+
+ for (i = 0; i < 5; i++)
+ {
+ u16 species = GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_117d] + col, MON_DATA_SPECIES2);
+ if (species != SPECIES_NONE)
+ {
+ gPokemonStorageSystemPtr->unk_1050[col] = PSS_SpawnMonIconSprite(species, GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_117d] + col, MON_DATA_PERSONALITY), curX, y, 2, x1);
+ if (gPokemonStorageSystemPtr->unk_1050[col])
+ {
+ gPokemonStorageSystemPtr->unk_1050[col]->data[1] = a1;
+ gPokemonStorageSystemPtr->unk_1050[col]->data[2] = a2;
+ gPokemonStorageSystemPtr->unk_1050[col]->data[3] = x;
+ gPokemonStorageSystemPtr->unk_1050[col]->callback = sub_8098E24;
+ count++;
+ }
+ }
+ col += 6;
+ y += 24;
+ }
+ return count;
+}
+
+void sub_809900C(u8 a0, s8 a1)
+{
+ gPokemonStorageSystemPtr->unk_117c = 0;
+ gPokemonStorageSystemPtr->unk_117d = a0;
+ gPokemonStorageSystemPtr->unk_117b = a1;
+ gPokemonStorageSystemPtr->unk_1172 = 32;
+ gPokemonStorageSystemPtr->unk_1176 = -6 * a1;
+ gPokemonStorageSystemPtr->unk_1178 = 0;
+ if (a1 > 0)
+ gPokemonStorageSystemPtr->unk_117a = 0;
+ else
+ gPokemonStorageSystemPtr->unk_117a = 5;
+ gPokemonStorageSystemPtr->unk_1174 = 24 * gPokemonStorageSystemPtr->unk_117a + 0x64;
+ sub_8098DE0(gPokemonStorageSystemPtr->unk_1176);
+}
+
+bool8 sub_80990AC(void)
+{
+ if (gPokemonStorageSystemPtr->unk_1172)
+ gPokemonStorageSystemPtr->unk_1172--;
+ switch (gPokemonStorageSystemPtr->unk_117c)
+ {
+ case 0:
+ gPokemonStorageSystemPtr->unk_1174 += gPokemonStorageSystemPtr->unk_1176;
+ if (gPokemonStorageSystemPtr->unk_1174 < 0x41 || gPokemonStorageSystemPtr->unk_1174 > 0xfb)
+ {
+ sub_8098EA0(gPokemonStorageSystemPtr->unk_117a);
+ gPokemonStorageSystemPtr->unk_1174 += 24 * gPokemonStorageSystemPtr->unk_117b;
+ gPokemonStorageSystemPtr->unk_117c++;
+ }
+ break;
+ case 1:
+ gPokemonStorageSystemPtr->unk_1174 += gPokemonStorageSystemPtr->unk_1176;
+ gPokemonStorageSystemPtr->unk_1178 += sub_8098EE0(gPokemonStorageSystemPtr->unk_117a, gPokemonStorageSystemPtr->unk_1172, gPokemonStorageSystemPtr->unk_1176);
+ if ((gPokemonStorageSystemPtr->unk_117b > 0 && gPokemonStorageSystemPtr->unk_117a == 5) || (gPokemonStorageSystemPtr->unk_117b < 0 && gPokemonStorageSystemPtr->unk_117a == 0))
+ {
+ gPokemonStorageSystemPtr->unk_117c++;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_117a += gPokemonStorageSystemPtr->unk_117b;
+ gPokemonStorageSystemPtr->unk_117c = 0;
+ }
+ break;
+ case 2:
+ if (gPokemonStorageSystemPtr->unk_1178 == 0)
+ {
+ gPokemonStorageSystemPtr->unk_1172++;
+ return FALSE;
+ }
+ break;
+ default:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_8099200(bool8 a0)
+{
+ u16 count;
+ u16 i;
+ u16 species = GetMonData(gPlayerParty + 0, MON_DATA_SPECIES2);
+ u32 personality = GetMonData(gPlayerParty + 0, MON_DATA_PERSONALITY);
+ gPokemonStorageSystemPtr->unk_1038[0] = PSS_SpawnMonIconSprite(species, personality, 0x68, 0x40, 1, 11);
+ count = 1;
+ for (i = 1; i < PARTY_SIZE; i++)
+ {
+ species = GetMonData(gPlayerParty + i, MON_DATA_SPECIES2);
+ if (species != SPECIES_NONE)
+ {
+ personality = GetMonData(gPlayerParty + i, MON_DATA_PERSONALITY);
+ gPokemonStorageSystemPtr->unk_1038[i] = PSS_SpawnMonIconSprite(species, personality, 0x98, (i - 1) * 24 + 0x10, 1, 11);
+ count++;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_1038[i] = NULL;
+ }
+ }
+ if (!a0)
+ {
+ for (i = 0; i < count; i++)
+ {
+ // this routine assumes party_compaction has been called
+ gPokemonStorageSystemPtr->unk_1038[i]->pos1.y -= 0xa0;
+ gPokemonStorageSystemPtr->unk_1038[i]->invisible = TRUE;
+ }
+ }
+}
+
+void sub_8099310(void)
+{
+ u16 i;
+ u16 count;
+
+ gPokemonStorageSystemPtr->unk_1171 = 0;
+ for (i = 0, count = 0; i < PARTY_SIZE; i++)
+ {
+ if (gPokemonStorageSystemPtr->unk_1038[i])
+ {
+ if (i != count)
+ {
+ sub_8099388(gPokemonStorageSystemPtr->unk_1038[i], count);
+ gPokemonStorageSystemPtr->unk_1038[i] = NULL;
+ gPokemonStorageSystemPtr->unk_1171++;
+ }
+ count++;
+ }
+ }
+}
+
+u8 sub_8099374(void)
+{
+ return gPokemonStorageSystemPtr->unk_1171;
+}
+
+static void sub_8099388(struct Sprite *sprite, u16 a1)
+{
+ s16 r3;
+ s16 r4;
+
+ sprite->data[1] = a1;
+ if (a1 == 0)
+ {
+ r3 = 0x68;
+ r4 = 0x40;
+ }
+ else
+ {
+ r3 = 0x98;
+ r4 = 24 * (a1 - 1) + 0x10;
+ }
+ sprite->data[2] = sprite->pos1.x << 3;
+ sprite->data[3] = sprite->pos1.y << 3;
+ sprite->data[4] = (r3 * 8 - sprite->data[2]) / 8;
+ sprite->data[5] = (r4 * 8 - sprite->data[3]) / 8;
+ sprite->data[6] = 8;
+ sprite->callback = sub_80993F4;
+}
+
+static void sub_80993F4(struct Sprite *sprite)
+{
+ if (sprite->data[6])
+ {
+ sprite->data[2] += sprite->data[4];
+ sprite->data[3] += sprite->data[5];
+ sprite->pos1.x = sprite->data[2] >> 3;
+ sprite->pos1.y = sprite->data[3] >> 3;
+ sprite->data[6]--;
+ }
+ else
+ {
+ if (sprite->data[1] == 0)
+ {
+ sprite->pos1.x = 0x68;
+ sprite->pos1.y = 0x40;
+ }
+ else
+ {
+ sprite->pos1.x = 0x98;
+ sprite->pos1.y = (sprite->data[1] - 1) * 24 + 0x10;
+ }
+ sprite->callback = SpriteCallbackDummy;
+ gPokemonStorageSystemPtr->unk_1038[sprite->data[1]] = sprite;
+ gPokemonStorageSystemPtr->unk_1171--;
+ }
+}
+
+void sub_8099480(void)
+{
+ if (gPokemonStorageSystemPtr->unk_1034)
+ {
+ PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1034);
+ gPokemonStorageSystemPtr->unk_1034 = NULL;
+ }
+}
+
+void sub_80994A8(s16 y)
+{
+ u16 i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (gPokemonStorageSystemPtr->unk_1038[i])
+ {
+ s16 yy;
+ gPokemonStorageSystemPtr->unk_1038[i]->pos1.y += y;
+ yy = gPokemonStorageSystemPtr->unk_1038[i]->pos1.y + gPokemonStorageSystemPtr->unk_1038[i]->pos2.y + gPokemonStorageSystemPtr->unk_1038[i]->centerToCornerVecY;
+ if (yy < -0x10 || yy > 0xb0)
+ gPokemonStorageSystemPtr->unk_1038[i]->invisible = TRUE;
+ else
+ gPokemonStorageSystemPtr->unk_1038[i]->invisible = FALSE;
+ }
+ }
+}
+
+void sub_8099520(u8 a0)
+{
+ if (gPokemonStorageSystemPtr->unk_1038[a0])
+ {
+ PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1038[a0]);
+ gPokemonStorageSystemPtr->unk_1038[a0] = NULL;
+ }
+}
+
+void sub_809954C(void)
+{
+ u16 i;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (gPokemonStorageSystemPtr->unk_1038[i])
+ {
+ PSS_DestroyMonIconSprite(gPokemonStorageSystemPtr->unk_1038[i]);
+ gPokemonStorageSystemPtr->unk_1038[i] = NULL;
+ }
+ }
+}
+
+void sub_8099584(u8 a0, u8 a1)
+{
+ if (a0 == 0)
+ {
+ gPokemonStorageSystemPtr->unk_1034 = gPokemonStorageSystemPtr->unk_1038[a1];
+ gPokemonStorageSystemPtr->unk_1038[a1] = NULL;
+ }
+ else if (a0 == 1)
+ {
+ gPokemonStorageSystemPtr->unk_1034 = gPokemonStorageSystemPtr->unk_1050[a1];
+ gPokemonStorageSystemPtr->unk_1050[a1] = NULL;
+ }
+ else
+ {
+ return;
+ }
+ gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4;
+ gPokemonStorageSystemPtr->unk_1034->oam.priority = 1;
+ gPokemonStorageSystemPtr->unk_1034->subpriority = 7;
+}
+
+void sub_809960C(u8 a0, u8 a1)
+{
+ if (a0 == 14)
+ {
+ gPokemonStorageSystemPtr->unk_1038[a1] = gPokemonStorageSystemPtr->unk_1034;
+ gPokemonStorageSystemPtr->unk_1038[a1]->oam.priority = 1;
+ gPokemonStorageSystemPtr->unk_1038[a1]->subpriority = 11;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_1050[a1] = gPokemonStorageSystemPtr->unk_1034;
+ gPokemonStorageSystemPtr->unk_1050[a1]->oam.priority = 2;
+ gPokemonStorageSystemPtr->unk_1050[a1]->subpriority = 18 - (a1 % 6);
+ }
+ gPokemonStorageSystemPtr->unk_1034->callback = SpriteCallbackDummy;
+ gPokemonStorageSystemPtr->unk_1034 = NULL;
+}
+
+void sub_80996B0(u8 a0, u8 a1)
+{
+ if (a0 == 14)
+ gPokemonStorageSystemPtr->unk_10c8 = gPokemonStorageSystemPtr->unk_1038 + a1;
+ else
+ gPokemonStorageSystemPtr->unk_10c8 = gPokemonStorageSystemPtr->unk_1050 + a1;
+ gPokemonStorageSystemPtr->unk_1034->callback = SpriteCallbackDummy;
+ gPokemonStorageSystemPtr->unk_1170 = 0;
+}
+
+bool8 sub_809971C(void)
+{
+ if (gPokemonStorageSystemPtr->unk_1170 == 16)
+ return FALSE;
+ gPokemonStorageSystemPtr->unk_1170++;
+ if (gPokemonStorageSystemPtr->unk_1170 & 1)
+ {
+ (*gPokemonStorageSystemPtr->unk_10c8)->pos1.y--;
+ gPokemonStorageSystemPtr->unk_1034->pos1.y++;
+ }
+ (*gPokemonStorageSystemPtr->unk_10c8)->pos2.x = gSineTable[gPokemonStorageSystemPtr->unk_1170 * 8] / 16;
+ gPokemonStorageSystemPtr->unk_1034->pos2.x = -(gSineTable[gPokemonStorageSystemPtr->unk_1170 * 8] / 16);
+ if (gPokemonStorageSystemPtr->unk_1170 == 8)
+ {
+ gPokemonStorageSystemPtr->unk_1034->oam.priority = (*gPokemonStorageSystemPtr->unk_10c8)->oam.priority;
+ gPokemonStorageSystemPtr->unk_1034->subpriority = (*gPokemonStorageSystemPtr->unk_10c8)->subpriority;
+ (*gPokemonStorageSystemPtr->unk_10c8)->oam.priority = 1;
+ (*gPokemonStorageSystemPtr->unk_10c8)->subpriority = 7;
+ }
+ if (gPokemonStorageSystemPtr->unk_1170 == 16)
+ {
+ struct Sprite *sprite = gPokemonStorageSystemPtr->unk_1034;
+ gPokemonStorageSystemPtr->unk_1034 = *(gPokemonStorageSystemPtr->unk_10c8);
+ (*gPokemonStorageSystemPtr->unk_10c8) = sprite;
+ gPokemonStorageSystemPtr->unk_1034->callback = sub_80999C4;
+ (*gPokemonStorageSystemPtr->unk_10c8)->callback = SpriteCallbackDummy;
+ }
+ return TRUE;
+}
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83B6F5C[];
+
+void sub_809981C(u8 mode, u8 idx)
+{
+ switch (mode)
+ {
+ case 0:
+ gPokemonStorageSystemPtr->unk_10cc = gPokemonStorageSystemPtr->unk_1038 + idx;
+ break;
+ case 1:
+ gPokemonStorageSystemPtr->unk_10cc = gPokemonStorageSystemPtr->unk_1050 + idx;
+ break;
+ case 2:
+ gPokemonStorageSystemPtr->unk_10cc = &gPokemonStorageSystemPtr->unk_1034;
+ break;
+ default:
+ return;
+ }
+ if (*gPokemonStorageSystemPtr->unk_10cc)
+ {
+ InitSpriteAffineAnim(*gPokemonStorageSystemPtr->unk_10cc);
+ (*gPokemonStorageSystemPtr->unk_10cc)->oam.affineMode = ST_OAM_AFFINE_NORMAL;
+ (*gPokemonStorageSystemPtr->unk_10cc)->affineAnims = gSpriteAffineAnimTable_83B6F5C;
+ StartSpriteAffineAnim(*gPokemonStorageSystemPtr->unk_10cc, 0);
+ }
+}
+
+bool8 sub_80998D8(void)
+{
+ if (*gPokemonStorageSystemPtr->unk_10cc == NULL || (*gPokemonStorageSystemPtr->unk_10cc)->invisible)
+ return FALSE;
+ if ((*gPokemonStorageSystemPtr->unk_10cc)->affineAnimEnded)
+ {
+ (*gPokemonStorageSystemPtr->unk_10cc)->invisible = TRUE;
+ }
+ return TRUE;
+}
+
+void sub_8099920(void)
+{
+ if (*gPokemonStorageSystemPtr->unk_10cc)
+ {
+ FreeOamMatrix((*gPokemonStorageSystemPtr->unk_10cc)->oam.matrixNum);
+ PSS_DestroyMonIconSprite(*gPokemonStorageSystemPtr->unk_10cc);
+ *gPokemonStorageSystemPtr->unk_10cc = NULL;
+ }
+}
+
+void sub_8099958(void)
+{
+ if (*gPokemonStorageSystemPtr->unk_10cc)
+ {
+ (*gPokemonStorageSystemPtr->unk_10cc)->invisible = FALSE;
+ StartSpriteAffineAnim(*gPokemonStorageSystemPtr->unk_10cc, 1);
+ }
+}
+
+bool8 sub_8099990(void)
+{
+ if (gPokemonStorageSystemPtr->unk_10cc == NULL)
+ return FALSE;
+ if ((*gPokemonStorageSystemPtr->unk_10cc)->affineAnimEnded)
+ gPokemonStorageSystemPtr->unk_10cc = NULL;
+ return TRUE;
+}
+
+static void sub_80999C4(struct Sprite *sprite)
+{
+ sprite->pos1.x = gPokemonStorageSystemPtr->unk_11c0->pos1.x;
+ sprite->pos1.y = gPokemonStorageSystemPtr->unk_11c0->pos1.y + gPokemonStorageSystemPtr->unk_11c0->pos2.y + 4;
+}
+
+static u16 PSS_LoadSpeciesIconGfx(u16 a0)
+{
+ u16 i;
+ u16 retval;
+
+ for (i = 0; i < 40; i++)
+ {
+ if (gPokemonStorageSystemPtr->unk_1120[i] == a0)
+ break;
+ }
+ if (i == 40)
+ {
+ for (i = 0; i < 40; i++)
+ {
+ if (gPokemonStorageSystemPtr->unk_1120[i] == 0)
+ break;
+ }
+ }
+ if (i != 40)
+ {
+ gPokemonStorageSystemPtr->unk_1120[i] = a0;
+ gPokemonStorageSystemPtr->unk_10d0[i]++;
+ retval = i * 16;
+ CpuCopy32(gMonIconTable[a0], BG_CHAR_ADDR(4) + 32 * retval, 0x200);
+ return retval;
+ }
+ return 0xFFFF;
+}
+
+static void PSS_ForgetSpeciesIcon(u16 a0)
+{
+ u16 i;
+
+ for (i = 0; i < 40; i++)
+ {
+ if (gPokemonStorageSystemPtr->unk_1120[i] == a0)
+ {
+ if (--gPokemonStorageSystemPtr->unk_10d0[i] == 0)
+ gPokemonStorageSystemPtr->unk_1120[i] = 0;
+ break;
+ }
+ }
+}
+
+static struct Sprite *PSS_SpawnMonIconSprite(u16 species, u32 personality, s16 x, s16 y, u8 priority, u8 subpriority)
+{
+ struct SpriteTemplate template = {
+ 0x000f,
+ 0xdac0,
+ &gOamData_83B6F2C,
+ gDummySpriteAnimTable,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+ };
+ u16 tileNum;
+ u8 spriteId;
+
+ species = mon_icon_convert_unown_species_id(species, personality);
+ template.paletteTag = 0xdac0 + gMonIconPaletteIndices[species];
+ tileNum = PSS_LoadSpeciesIconGfx(species);
+ if (tileNum == 0xFFFF)
+ return NULL;
+ spriteId = CreateSprite(&template, x, y, subpriority);
+ if (spriteId == MAX_SPRITES)
+ {
+ PSS_ForgetSpeciesIcon(species);
+ return NULL;
+ }
+ gSprites[spriteId].oam.tileNum = tileNum;
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].data[0] = species;
+ return gSprites + spriteId;
+}
+
+static void PSS_DestroyMonIconSprite(struct Sprite *sprite)
+{
+ PSS_ForgetSpeciesIcon(sprite->data[0]);
+ DestroySprite(sprite);
+}
+
+const struct OamData gOamData_83B6F2C = {
+ .size = 2
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83B6F34[] = {
+ AFFINEANIMCMD_FRAME(-2, -2, 0, 120),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_83B6F44[] = {
+ AFFINEANIMCMD_FRAME(16, 16, 0, 0),
+ AFFINEANIMCMD_FRAME(16, 16, 0, 15),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_83B6F5C[] = {
+ gSpriteAffineAnim_83B6F34,
+ gSpriteAffineAnim_83B6F44
+};
diff --git a/src/pokemon_storage_system_4.c b/src/pokemon_storage_system_4.c
new file mode 100644
index 000000000..2f9f79a54
--- /dev/null
+++ b/src/pokemon_storage_system_4.c
@@ -0,0 +1,2849 @@
+
+// Includes
+#include "global.h"
+#include "ewram.h"
+#include "data2.h"
+#include "constants/moves.h"
+#include "constants/species.h"
+#include "palette.h"
+#include "string_util.h"
+#include "text.h"
+#include "menu.h"
+#include "item.h"
+#include "pokemon_summary_screen.h"
+#include "pokemon_storage_system.h"
+
+// Static type declarations
+
+struct WallpaperTable {
+ const u8 *tiles;
+ u32 size;
+ const u8 *tileMap;
+ const u16 *palettes;
+};
+
+// Static RAM declarations
+
+EWRAM_DATA struct Pokemon gUnknown_02038480 = {};
+#if DEBUG
+EWRAM_DATA u32 unk_2038790 = 0;
+EWRAM_DATA u32 unk_2038794 = 0;
+EWRAM_DATA u32 unk_2038798 = 0;
+#endif
+EWRAM_DATA s8 gUnknown_020384E4 = 0;
+EWRAM_DATA s8 gUnknown_020384E5 = 0;
+EWRAM_DATA bool8 gUnknown_020384E6 = FALSE;
+EWRAM_DATA u8 gUnknown_020384E7 = 0;
+EWRAM_DATA u8 gUnknown_020384E8 = 0;
+EWRAM_DATA u8 gUnknown_020384E9 = 0;
+EWRAM_DATA u8 gUnknown_020384EA = 0;
+
+// Static ROM declarations
+
+void sub_809900C(u8 boxId, s8 a1);
+s8 sub_8099D90(u8 boxId);
+void sub_8099EB0(u8 boxId, s8 a1);
+void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3);
+void sub_809A14C(u16 *vdest);
+void sub_809A23C(u8 boxId);
+void sub_809A3D0(u8 boxId, s8 a1);
+void sub_809A598(void);
+void sub_809A5E8(struct Sprite *sprite);
+void sub_809A61C(struct Sprite *sprite);
+void sub_809A654(void);
+s16 sub_809A6D0(u8 width);
+void sub_809A6DC(void);
+void sub_809A774(s8 a0);
+void sub_809A810(void);
+void sub_809AFB8(void);
+void sub_809A8C8(struct Sprite *sprite);
+bool8 sub_809B150(void);
+bool8 sub_809B1D8(void);
+bool8 sub_809B24C(void);
+bool8 sub_809B324(void);
+bool8 sub_809B358(void);
+void sub_809B384(void);
+void sub_809B3E0(void);
+void sub_809B44C(u8 a0, u8 a1);
+void diegohint2(u8 a0, u8 a1);
+void sub_809B548(u8 a0, u8 a1);
+void diegohint1(u8 a0, u8 a1);
+bool8 sub_809BF2C(void);
+void sub_809BF74(void);
+void sub_809C028(void);
+void sub_809C04C(void *pokemon, u8 a1);
+bool8 sub_809CAB0(void);
+void sub_809CC04(void);
+void sub_809CD88(void);
+s8 sub_809CE4C(u8 a0);
+
+// .rodata
+
+const u16 gWallpaperPalettes_Forest[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_Forest_2[] = INCBIN_U16("graphics/pokemon_storage/forest_frame.gbapal");
+const u16 gWallpaperPalettes_Forest_2_3[] = INCBIN_U16("graphics/pokemon_storage/forest_bg.gbapal");
+
+const u8 gWallpaperTiles_Forest[] = INCBIN_U8("graphics/pokemon_storage/forest.4bpp.lz");
+
+const u8 gWallpaperTilemap_Forest[] = INCBIN_U8("graphics/pokemon_storage/forest.bin.lz");
+
+const u16 gWallpaperPalettes_City[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_City_2[] = INCBIN_U16("graphics/pokemon_storage/city_frame.gbapal");
+const u16 gWallpaperPalettes_City_2_3[] = INCBIN_U16("graphics/pokemon_storage/city_bg.gbapal");
+
+const u8 gWallpaperTiles_City[] = INCBIN_U8("graphics/pokemon_storage/city.4bpp.lz");
+
+const u8 gWallpaperTilemap_City[] = INCBIN_U8("graphics/pokemon_storage/city.bin.lz");
+
+const u16 gWallpaperPalettes_Desert[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_Desert_2[] = INCBIN_U16("graphics/pokemon_storage/desert_frame.gbapal");
+const u16 gWallpaperPalettes_Desert_2_3[] = INCBIN_U16("graphics/pokemon_storage/desert_bg.gbapal");
+
+const u8 gWallpaperTiles_Desert[] = INCBIN_U8("graphics/pokemon_storage/desert.4bpp.lz");
+
+const u8 gWallpaperTilemap_Desert[] = INCBIN_U8("graphics/pokemon_storage/desert.bin.lz");
+
+const u16 gWallpaperPalettes_Savanna[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_Savanna_2[] = INCBIN_U16("graphics/pokemon_storage/savanna_frame.gbapal");
+const u16 gWallpaperPalettes_Savanna_2_3[] = INCBIN_U16("graphics/pokemon_storage/savanna_bg.gbapal");
+
+const u8 gWallpaperTiles_Savanna[] = INCBIN_U8("graphics/pokemon_storage/savanna.4bpp.lz");
+
+const u8 gWallpaperTilemap_Savanna[] = INCBIN_U8("graphics/pokemon_storage/savanna.bin.lz");
+
+const u16 gWallpaperPalettes_Crag[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_Crag_2[] = INCBIN_U16("graphics/pokemon_storage/crag_frame.gbapal");
+const u16 gWallpaperPalettes_Crag_2_3[] = INCBIN_U16("graphics/pokemon_storage/crag_bg.gbapal");
+
+const u8 gWallpaperTiles_Crag[] = INCBIN_U8("graphics/pokemon_storage/crag.4bpp.lz");
+
+const u8 gWallpaperTilemap_Crag[] = INCBIN_U8("graphics/pokemon_storage/crag.bin.lz");
+
+const u16 gWallpaperPalettes_Volcano[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_Volcano_2[] = INCBIN_U16("graphics/pokemon_storage/volcano_frame.gbapal");
+const u16 gWallpaperPalettes_Volcano_2_3[] = INCBIN_U16("graphics/pokemon_storage/volcano_bg.gbapal");
+
+const u8 gWallpaperTiles_Volcano[] = INCBIN_U8("graphics/pokemon_storage/volcano.4bpp.lz");
+const u32 filler_83b871c = 0; // needed to match but otherwise garbage
+
+const u8 gWallpaperTilemap_Volcano[] = INCBIN_U8("graphics/pokemon_storage/volcano.bin.lz");
+
+const u16 gWallpaperPalettes_Snow[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_Snow_2[] = INCBIN_U16("graphics/pokemon_storage/snow_frame.gbapal");
+const u16 gWallpaperPalettes_Snow_2_3[] = INCBIN_U16("graphics/pokemon_storage/snow_bg.gbapal");
+
+const u8 gWallpaperTiles_Snow[] = INCBIN_U8("graphics/pokemon_storage/snow.4bpp.lz");
+
+const u8 gWallpaperTilemap_Snow[] = INCBIN_U8("graphics/pokemon_storage/snow.bin.lz");
+
+const u16 gWallpaperPalettes_Cave[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_Cave_2[] = INCBIN_U16("graphics/pokemon_storage/cave_frame.gbapal");
+const u16 gWallpaperPalettes_Cave_2_3[] = INCBIN_U16("graphics/pokemon_storage/cave_bg.gbapal");
+
+const u8 gWallpaperTiles_Cave[] = INCBIN_U8("graphics/pokemon_storage/cave.4bpp.lz");
+
+const u8 gWallpaperTilemap_Cave[] = INCBIN_U8("graphics/pokemon_storage/cave.bin.lz");
+
+const u16 gWallpaperPalettes_Beach[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_Beach_2[] = INCBIN_U16("graphics/pokemon_storage/beach_frame.gbapal");
+const u16 gWallpaperPalettes_Beach_2_3[] = INCBIN_U16("graphics/pokemon_storage/beach_bg.gbapal");
+
+const u8 gWallpaperTiles_Beach[] = INCBIN_U8("graphics/pokemon_storage/beach.4bpp.lz");
+
+const u8 gWallpaperTilemap_Beach[] = INCBIN_U8("graphics/pokemon_storage/beach.bin.lz");
+
+const u16 gWallpaperPalettes_Seafloor[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_Seafloor_2[] = INCBIN_U16("graphics/pokemon_storage/seafloor_frame.gbapal");
+const u16 gWallpaperPalettes_Seafloor_2_3[] = INCBIN_U16("graphics/pokemon_storage/seafloor_bg.gbapal");
+
+const u8 gWallpaperTiles_Seafloor[] = INCBIN_U8("graphics/pokemon_storage/seafloor.4bpp.lz");
+
+const u8 gWallpaperTilemap_Seafloor[] = INCBIN_U8("graphics/pokemon_storage/seafloor.bin.lz");
+
+const u16 gWallpaperPalettes_River[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_River_2[] = INCBIN_U16("graphics/pokemon_storage/river_frame.gbapal");
+const u16 gWallpaperPalettes_River_2_3[] = INCBIN_U16("graphics/pokemon_storage/river_bg.gbapal");
+
+const u8 gWallpaperTiles_River[] = INCBIN_U8("graphics/pokemon_storage/river.4bpp.lz");
+
+const u8 gWallpaperTilemap_River[] = INCBIN_U8("graphics/pokemon_storage/river.bin.lz");
+
+const u16 gWallpaperPalettes_Sky[] = INCBIN_U16("graphics/pokemon_storage/box_bg1.gbapal");
+const u16 gWallpaperPalettes_Sky_2[] = INCBIN_U16("graphics/pokemon_storage/sky_frame.gbapal");
+const u16 gWallpaperPalettes_Sky_2_3[] = INCBIN_U16("graphics/pokemon_storage/sky_bg.gbapal");
+
+const u8 gWallpaperTiles_Sky[] = INCBIN_U8("graphics/pokemon_storage/sky.4bpp.lz");
+
+const u8 gWallpaperTilemap_Sky[] = INCBIN_U8("graphics/pokemon_storage/sky.bin.lz");
+
+const u16 gWallpaperPalettes_Polkadot[] = INCBIN_U16("graphics/pokemon_storage/box_bg2.gbapal");
+const u16 gWallpaperPalettes_Polkadot_2[] = INCBIN_U16("graphics/pokemon_storage/polkadot_frame.gbapal");
+const u16 gWallpaperPalettes_Polkadot_2_3[] = INCBIN_U16("graphics/pokemon_storage/polkadot_bg.gbapal");
+
+const u8 gWallpaperTiles_Polkadot[] = INCBIN_U8("graphics/pokemon_storage/polkadot.4bpp.lz");
+
+const u8 gWallpaperTilemap_Polkadot[] = INCBIN_U8("graphics/pokemon_storage/polkadot.bin.lz");
+
+const u16 gWallpaperPalettes_Pokecenter[] = INCBIN_U16("graphics/pokemon_storage/box_bg2.gbapal");
+const u16 gWallpaperPalettes_Pokecenter_2[] = INCBIN_U16("graphics/pokemon_storage/pokecenter_frame.gbapal");
+const u16 gWallpaperPalettes_Pokecenter_2_3[] = INCBIN_U16("graphics/pokemon_storage/pokecenter_bg.gbapal");
+
+const u8 gWallpaperTiles_Pokecenter[] = INCBIN_U8("graphics/pokemon_storage/pokecenter.4bpp.lz");
+
+const u8 gWallpaperTilemap_Pokecenter[] = INCBIN_U8("graphics/pokemon_storage/pokecenter.bin.lz");
+
+const u16 gWallpaperPalettes_Machine[] = INCBIN_U16("graphics/pokemon_storage/box_bg3.gbapal");
+const u16 gWallpaperPalettes_Machine_2[] = INCBIN_U16("graphics/pokemon_storage/machine_frame.gbapal");
+const u16 gWallpaperPalettes_Machine_2_3[] = INCBIN_U16("graphics/pokemon_storage/machine_bg.gbapal");
+
+const u8 gWallpaperTiles_Machine[] = INCBIN_U8("graphics/pokemon_storage/machine.4bpp.lz");
+
+const u8 gWallpaperTilemap_Machine[] = INCBIN_U8("graphics/pokemon_storage/machine.bin.lz");
+
+const u16 gWallpaperPalettes_Plain[] = INCBIN_U16("graphics/pokemon_storage/box_bg4.gbapal");
+const u16 gWallpaperPalettes_Plain_2[] = INCBIN_U16("graphics/pokemon_storage/plain_frame.gbapal");
+const u16 gWallpaperPalettes_Plain_2_3[] = INCBIN_U16("graphics/pokemon_storage/plain_bg.gbapal");
+
+const u8 gWallpaperTiles_Plain[] = INCBIN_U8("graphics/pokemon_storage/plain.4bpp.lz");
+
+const u8 gWallpaperTilemap_Plain[] = INCBIN_U8("graphics/pokemon_storage/plain.bin.lz");
+
+const u16 gUnknown_083BAEF8[] = INCBIN_U16("graphics/unused/tilemap_3BAEF8.bin");
+
+const u16 gUnknown_083BB0A8[][2] = {
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF},
+ {0x1CE7, 0x7FFF}
+};
+
+const struct WallpaperTable gWallpaperTable[] = {
+ {gWallpaperTiles_Forest, 0x3D0, gWallpaperTilemap_Forest, gWallpaperPalettes_Forest}, // Forest
+ {gWallpaperTiles_City, 0x208, gWallpaperTilemap_City, gWallpaperPalettes_City}, // City
+ {gWallpaperTiles_Desert, 0x2EC, gWallpaperTilemap_Desert, gWallpaperPalettes_Desert}, // Desert
+ {gWallpaperTiles_Savanna, 0x220, gWallpaperTilemap_Savanna, gWallpaperPalettes_Savanna}, // Savanna
+ {gWallpaperTiles_Crag, 0x350, gWallpaperTilemap_Crag, gWallpaperPalettes_Crag}, // Crag
+ {gWallpaperTiles_Volcano, 0x334, gWallpaperTilemap_Volcano, gWallpaperPalettes_Volcano}, // Volcano
+ {gWallpaperTiles_Snow, 0x2B8, gWallpaperTilemap_Snow, gWallpaperPalettes_Snow}, // Snow
+ {gWallpaperTiles_Cave, 0x344, gWallpaperTilemap_Cave, gWallpaperPalettes_Cave}, // Cave
+ {gWallpaperTiles_Beach, 0x384, gWallpaperTilemap_Beach, gWallpaperPalettes_Beach}, // Beach
+ {gWallpaperTiles_Seafloor, 0x2B4, gWallpaperTilemap_Seafloor, gWallpaperPalettes_Seafloor}, // Seafloor
+ {gWallpaperTiles_River, 0x294, gWallpaperTilemap_River, gWallpaperPalettes_River}, // River
+ {gWallpaperTiles_Sky, 0x298, gWallpaperTilemap_Sky, gWallpaperPalettes_Sky}, // Sky
+ {gWallpaperTiles_Polkadot, 0x1FC, gWallpaperTilemap_Polkadot, gWallpaperPalettes_Polkadot}, // Polkadot
+ {gWallpaperTiles_Pokecenter, 0x3A4, gWallpaperTilemap_Pokecenter, gWallpaperPalettes_Pokecenter}, // Pokecenter
+ {gWallpaperTiles_Machine, 0x2F0, gWallpaperTilemap_Machine, gWallpaperPalettes_Machine}, // Machine
+ {gWallpaperTiles_Plain, 0xFC, gWallpaperTilemap_Plain, gWallpaperPalettes_Plain} // Plain
+};
+
+const u16 PCPal_Arrow[] = INCBIN_U16("graphics/pokemon_storage/arrow.gbapal");
+const u8 PCGfx_Arrow[] = INCBIN_U8("graphics/pokemon_storage/arrow.4bpp");
+
+const struct SpriteSheet gUnknown_083BB288 = {PCGfx_Arrow, 0x80, 6};
+const struct SpritePalette gUnknown_083BB290 = {PCPal_Arrow, 0xdacf};
+
+const struct OamData gOamData_83BB298 = {
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 2,
+ .priority = 2
+};
+
+const union AnimCmd gSpriteAnim_83BB2A0[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83BB2A8[] = {
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_83BB2B0[] = {
+ gSpriteAnim_83BB2A0,
+ gSpriteAnim_83BB2A8
+};
+
+const struct SpriteTemplate gSpriteTemplate_83BB2B8 = {
+ 3,
+ 0xdac8,
+ &gOamData_83BB298,
+ gSpriteAnimTable_83BB2B0,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+const struct OamData gOamData_83BB2D0 = {
+ .shape = ST_OAM_V_RECTANGLE,
+ .priority = 2
+};
+
+const union AnimCmd gSpriteAnim_83BB2D8[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_83BB2E0[] = {
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_83BB2E8[] = {
+ gSpriteAnim_83BB2D8,
+ gSpriteAnim_83BB2E0
+};
+
+const struct SpriteTemplate gSpriteTemplate_83BB2F0 = {
+ 6,
+ 0xdacf,
+ &gOamData_83BB2D0,
+ gSpriteAnimTable_83BB2E8,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ sub_809A8C8
+};
+
+const u16 HandCursorPalette[] = INCBIN_U16("graphics/pokemon_storage/hand_cursor_pal.bin");
+const u16 HandCursorAltPalette[] = INCBIN_U16("graphics/pokemon_storage/hand_cursor_alt_pal.bin");
+const u8 HandCursorTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor.4bpp");
+const u8 HandCursorShadowTiles[] = INCBIN_U8("graphics/pokemon_storage/hand_cursor_shadow.4bpp");
+
+bool8 (*const gUnknown_083BBBC8[])(void) = {
+ sub_809B150,
+ sub_809B1D8,
+ sub_809B24C
+};
+// .text
+
+void sub_8099BF8(u8 boxId)
+{
+ gPokemonStorageSystemPtr->unk_08ba = FALSE;
+ gPokemonStorageSystemPtr->unk_08b4 = 0;
+ DmaFill32(3, 0, BG_SCREEN_ADDR(26), 0x1000);
+ sub_8099EB0(boxId, 0);
+ sub_809A23C(boxId);
+ sub_809A6DC();
+ SpawnBoxIconSprites(boxId);
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_SCREENBASE(26) | BGCNT_TXT512x256;
+}
+
+void sub_8099C70(u8 whichBox)
+{
+ s8 r4 = sub_8099D90(whichBox);
+ sub_8099EB0(whichBox, r4);
+ gPokemonStorageSystemPtr->unk_08b6 = r4 * 6;
+ gPokemonStorageSystemPtr->unk_08b8 = 0x20;
+ gPokemonStorageSystemPtr->unk_08bb = whichBox;
+ gPokemonStorageSystemPtr->unk_08bc = r4 > 0 ? 0 : 5;
+ gPokemonStorageSystemPtr->unk_08be = r4;
+ gPokemonStorageSystemPtr->unk_08c0 = r4 > 0 ? 0x108 : 0x38;
+ gPokemonStorageSystemPtr->unk_08c2 = r4 > 0 ? 0 : 5;
+ gPokemonStorageSystemPtr->unk_08c4 = r4;
+ gPokemonStorageSystemPtr->unk_08c6 = 0;
+ gPokemonStorageSystemPtr->unk_08c8 = 2;
+ sub_809900C(whichBox, r4);
+ sub_809A3D0(whichBox, r4);
+ sub_809A774(r4);
+}
+
+bool8 sub_8099D34(void)
+{
+ bool8 retVal = sub_80990AC();
+ if (gPokemonStorageSystemPtr->unk_08b8 != 0)
+ {
+ gPokemonStorageSystemPtr->unk_08b4 += gPokemonStorageSystemPtr->unk_08b6;
+ gPokemonStorageSystemPtr->unk_08b4 &= 0x1ff;
+ if (--gPokemonStorageSystemPtr->unk_08b8 == 0)
+ {
+ sub_809A598();
+ sub_809A810();
+ }
+ return TRUE;
+ }
+ return retVal;
+}
+
+s8 sub_8099D90(u8 boxId)
+{
+ u8 curBox = get_preferred_box();
+ u8 i;
+
+ for (i = 0; curBox != boxId; i++)
+ {
+ if (++curBox >= 14)
+ curBox = 0;
+ }
+ return i <= 6 ? 1 : -1;
+}
+
+void sub_8099DCC(u8 wallpaperId)
+{
+ u8 curBox = get_preferred_box();
+ gPokemonStorage.wallpaper[curBox] = wallpaperId;
+ gPokemonStorageSystemPtr->unk_1032 = 0;
+}
+
+bool8 sub_8099E08(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_1032)
+ {
+ case 0:
+ BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0, 0x10, 0xffff);
+ gPokemonStorageSystemPtr->unk_1032++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ {
+ u8 curBox = get_preferred_box();
+ sub_8099EB0(curBox, 0);
+ sub_809A654();
+ BeginNormalPaletteFade(gPokemonStorageSystemPtr->unk_0d08, 1, 0x10, 0, 0xffff);
+ gPokemonStorageSystemPtr->unk_1032++;
+ }
+ break;
+ case 2:
+ if (!UpdatePaletteFade())
+ gPokemonStorageSystemPtr->unk_1032++;
+ break;
+ case 3:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_8099EB0(u8 boxId, s8 a1)
+{
+ const struct WallpaperTable *wallpaperTable;
+
+ if (a1)
+ {
+ gPokemonStorageSystemPtr->unk_08ba = gPokemonStorageSystemPtr->unk_08ba ? FALSE : TRUE;
+ sub_809A14C(BG_SCREEN_ADDR(26));
+ }
+ wallpaperTable = gWallpaperTable +gPokemonStorage.wallpaper[boxId];
+ LoadPalette(wallpaperTable->palettes, gPokemonStorageSystemPtr->unk_08ba * 0x30 + 0x40, 0x60);
+ LZ77UnCompWram(wallpaperTable->tileMap, gPokemonStorageSystemPtr->unk_0d62);
+ sub_8099F58(BG_SCREEN_ADDR(26), gPokemonStorageSystemPtr->unk_0d62, a1, gPokemonStorageSystemPtr->unk_08ba);
+ LZ77UnCompVram(wallpaperTable->tiles, BG_CHAR_ADDR(2) + (gPokemonStorageSystemPtr->unk_08ba << 13));
+}
+
+#ifdef NONMATCHING
+void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3)
+{
+ s16 r6;
+ s16 r3;
+ u16 sp0 = a3 << 8;
+ u16 sp4 = (a3 * 3 + 4) << 12;
+ u16 *r4;
+ u16 *r7;
+ u16 i;
+ u16 j;
+ s16 sp8 = ((gPokemonStorageSystemPtr->unk_08b4 >> 3) + 10 + a2 * 24) & 0x3f;
+ if (sp8 < 13)
+ {
+ r6 = 20;
+ r3 = 0;
+ r4 = vdest + sp8 + 0x40;
+ r7 = NULL;
+ }
+ else if (sp8 < 32)
+ {
+ r6 = 32 - sp8;
+ r3 = 20 - r6;
+ r4 = vdest + sp8 + 0x40;
+ r7 = vdest + 0x440;
+ }
+ else if (sp8 < 45)
+ {
+ r6 = 20;
+ r3 = 0;
+ r4 = vdest + sp8 + 0x420;
+ r7 = NULL;
+ }
+ else
+ {
+ r6 = 64 - sp8;
+ r3 = 20 - r6;
+ r4 = vdest + sp8 + 0x420;
+ r7 = vdest + 0x40;
+ }
+ for (i = 0; i < 18; i++)
+ {
+ for (j = 0; j < r6; j++)
+ {
+ u16 tile = ((*src & 0xfff) + sp0) | ((*src & 0xf000) + sp4);
+ r4[j] = tile;
+ src++;
+ }
+ for (j = 0; j < r3; j++)
+ {
+ u16 tile = ((*src & 0xfff) + sp0) | ((*src & 0xf000) + sp4);
+ r7[j] = tile;
+ src++;
+ }
+ r4 += 0x20;
+ r7 += 0x20;
+ }
+ if (a2)
+ {
+ s16 r4_2;
+ u16 *r2;
+ if (a2 > 0)
+ r4_2 = (sp8 + 20) & 0x3f;
+ else
+ r4_2 = (sp8 - 4) & 0x3f;
+ r2 = r4_2 < 0x20 ? vdest + r4_2 + 0x40 : vdest + r4_2 + 0x420;
+ for (i = 0; i < 4; i++)
+ {
+ for (j = 0; j < 18; j++)
+ {
+ *r2 = 0;
+ r2 += 0x20;
+ }
+ r4_2++;
+ r4_2 &= 0x3f;
+ r2 = r4_2 < 0x20 ? vdest + r4_2 + 0x40 : vdest + r4_2 + 0x420;
+ }
+ }
+}
+#else
+__attribute__((naked)) void sub_8099F58(u16 *vdest, const u16 *src, s8 a2, u8 a3)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x20\n"
+ "\tmov r9, r0\n"
+ "\tadds r5, r1, 0\n"
+ "\tlsls r2, 24\n"
+ "\tlsls r3, 24\n"
+ "\tlsrs r3, 24\n"
+ "\tlsls r0, r3, 8\n"
+ "\tstr r0, [sp]\n"
+ "\tlsls r0, r3, 1\n"
+ "\tadds r0, r3\n"
+ "\tadds r0, 0x4\n"
+ "\tlsls r0, 28\n"
+ "\tlsrs r0, 16\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tldr r0, _08099FB8 @ =gPokemonStorageSystemPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tldr r1, _08099FBC @ =0x000008b4\n"
+ "\tadds r0, r1\n"
+ "\tldrh r1, [r0]\n"
+ "\tlsrs r1, 3\n"
+ "\tadds r1, 0xA\n"
+ "\tlsrs r0, r2, 24\n"
+ "\tmov r8, r0\n"
+ "\tasrs r2, 24\n"
+ "\tlsls r0, r2, 1\n"
+ "\tadds r0, r2\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "\tmovs r0, 0x3F\n"
+ "\tands r1, r0\n"
+ "\tstr r1, [sp, 0x8]\n"
+ "\tadds r2, r1, 0\n"
+ "\tcmp r2, 0xC\n"
+ "\tbgt _08099FC0\n"
+ "\tmovs r6, 0x14\n"
+ "\tmovs r3, 0\n"
+ "\tlsls r0, r2, 1\n"
+ "\tadds r0, 0x80\n"
+ "\tmov r1, r9\n"
+ "\tadds r4, r1, r0\n"
+ "\tmovs r7, 0\n"
+ "\tb _0809A020\n"
+ "\t.align 2, 0\n"
+ "_08099FB8: .4byte gPokemonStorageSystemPtr\n"
+ "_08099FBC: .4byte 0x000008b4\n"
+ "_08099FC0:\n"
+ "\tcmp r2, 0x1F\n"
+ "\tbgt _08099FE6\n"
+ "\tmovs r0, 0x20\n"
+ "\tsubs r0, r2\n"
+ "\tlsls r0, 16\n"
+ "\tmovs r1, 0x14\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tsubs r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r3, r1, 16\n"
+ "\tlsls r0, r2, 1\n"
+ "\tadds r0, 0x80\n"
+ "\tmov r2, r9\n"
+ "\tadds r4, r2, r0\n"
+ "\tmovs r7, 0x88\n"
+ "\tlsls r7, 4\n"
+ "\tadd r7, r9\n"
+ "\tb _0809A020\n"
+ "_08099FE6:\n"
+ "\tcmp r2, 0x2C\n"
+ "\tbgt _08099FFE\n"
+ "\tmovs r6, 0x14\n"
+ "\tmovs r3, 0\n"
+ "\tlsls r0, r2, 1\n"
+ "\tmovs r1, 0x84\n"
+ "\tlsls r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tmov r2, r9\n"
+ "\tadds r4, r2, r0\n"
+ "\tmovs r7, 0\n"
+ "\tb _0809A020\n"
+ "_08099FFE:\n"
+ "\tmovs r0, 0x40\n"
+ "\tsubs r0, r2\n"
+ "\tlsls r0, 16\n"
+ "\tmovs r1, 0x14\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tsubs r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r3, r1, 16\n"
+ "\tlsls r0, r2, 1\n"
+ "\tmovs r1, 0x84\n"
+ "\tlsls r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tmov r2, r9\n"
+ "\tadds r4, r2, r0\n"
+ "\tmov r7, r9\n"
+ "\tadds r7, 0x80\n"
+ "_0809A020:\n"
+ "\tmovs r1, 0\n"
+ "\tmov r0, r8\n"
+ "\tlsls r0, 24\n"
+ "\tstr r0, [sp, 0x14]\n"
+ "\tlsls r0, r6, 16\n"
+ "\tasrs r0, 16\n"
+ "\tmov r8, r0\n"
+ "\tlsls r3, 16\n"
+ "\tstr r3, [sp, 0xC]\n"
+ "\tasrs r2, r3, 16\n"
+ "\tstr r2, [sp, 0x10]\n"
+ "_0809A036:\n"
+ "\tmovs r3, 0\n"
+ "\tadds r0, r4, 0\n"
+ "\tadds r0, 0x40\n"
+ "\tstr r0, [sp, 0x18]\n"
+ "\tadds r2, r7, 0\n"
+ "\tadds r2, 0x40\n"
+ "\tstr r2, [sp, 0x1C]\n"
+ "\tadds r1, 0x1\n"
+ "\tmov r10, r1\n"
+ "\tcmp r3, r8\n"
+ "\tbge _0809A07A\n"
+ "\tldr r0, _0809A0D4 @ =0x00000fff\n"
+ "\tmov r12, r0\n"
+ "\tmovs r6, 0xF0\n"
+ "\tlsls r6, 8\n"
+ "_0809A054:\n"
+ "\tldrh r2, [r5]\n"
+ "\tmov r0, r12\n"
+ "\tands r0, r2\n"
+ "\tldr r1, [sp]\n"
+ "\tadds r0, r1, r0\n"
+ "\tadds r1, r6, 0\n"
+ "\tands r1, r2\n"
+ "\tldr r2, [sp, 0x4]\n"
+ "\tadds r1, r2, r1\n"
+ "\torrs r1, r0\n"
+ "\tlsls r0, r3, 1\n"
+ "\tadds r0, r4\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r5, 0x2\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r3, r0, 16\n"
+ "\tcmp r3, r8\n"
+ "\tblt _0809A054\n"
+ "_0809A07A:\n"
+ "\tmovs r3, 0\n"
+ "\tldr r0, [sp, 0x10]\n"
+ "\tcmp r3, r0\n"
+ "\tbge _0809A0B4\n"
+ "\tldr r1, _0809A0D4 @ =0x00000fff\n"
+ "\tmov r12, r1\n"
+ "\tmovs r6, 0xF0\n"
+ "\tlsls r6, 8\n"
+ "\tldr r2, [sp, 0xC]\n"
+ "\tasrs r4, r2, 16\n"
+ "_0809A08E:\n"
+ "\tldrh r2, [r5]\n"
+ "\tmov r0, r12\n"
+ "\tands r0, r2\n"
+ "\tldr r1, [sp]\n"
+ "\tadds r0, r1, r0\n"
+ "\tadds r1, r6, 0\n"
+ "\tands r1, r2\n"
+ "\tldr r2, [sp, 0x4]\n"
+ "\tadds r1, r2, r1\n"
+ "\torrs r1, r0\n"
+ "\tlsls r0, r3, 1\n"
+ "\tadds r0, r7\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r5, 0x2\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r3, r0, 16\n"
+ "\tcmp r3, r4\n"
+ "\tblt _0809A08E\n"
+ "_0809A0B4:\n"
+ "\tldr r4, [sp, 0x18]\n"
+ "\tldr r7, [sp, 0x1C]\n"
+ "\tmov r1, r10\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tcmp r1, 0x11\n"
+ "\tbls _0809A036\n"
+ "\tldr r0, [sp, 0x14]\n"
+ "\tasrs r2, r0, 24\n"
+ "\tcmp r2, 0\n"
+ "\tbeq _0809A13A\n"
+ "\tcmp r2, 0\n"
+ "\tble _0809A0D8\n"
+ "\tldr r1, [sp, 0x8]\n"
+ "\tadds r1, 0x14\n"
+ "\tb _0809A0DC\n"
+ "\t.align 2, 0\n"
+ "_0809A0D4: .4byte 0x00000fff\n"
+ "_0809A0D8:\n"
+ "\tldr r1, [sp, 0x8]\n"
+ "\tsubs r1, 0x4\n"
+ "_0809A0DC:\n"
+ "\tmovs r0, 0x3F\n"
+ "\tands r1, r0\n"
+ "\tadds r4, r1, 0\n"
+ "\tadds r0, r4, 0\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbgt _0809A0EE\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, 0x80\n"
+ "\tb _0809A0F6\n"
+ "_0809A0EE:\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r2, 0x84\n"
+ "\tlsls r2, 4\n"
+ "\tadds r0, r2\n"
+ "_0809A0F6:\n"
+ "\tmov r1, r9\n"
+ "\tadds r2, r1, r0\n"
+ "\tmovs r3, 0\n"
+ "\tmovs r6, 0\n"
+ "_0809A0FE:\n"
+ "\tmovs r1, 0\n"
+ "\tadds r5, r3, 0x1\n"
+ "\tlsls r3, r4, 16\n"
+ "_0809A104:\n"
+ "\tstrh r6, [r2]\n"
+ "\tadds r2, 0x40\n"
+ "\tadds r0, r1, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tcmp r1, 0x11\n"
+ "\tbls _0809A104\n"
+ "\tasrs r0, r3, 16\n"
+ "\tadds r4, r0, 0x1\n"
+ "\tmovs r0, 0x3F\n"
+ "\tands r4, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbgt _0809A126\n"
+ "\tlsls r0, 1\n"
+ "\tadds r0, 0x80\n"
+ "\tb _0809A12E\n"
+ "_0809A126:\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r2, 0x84\n"
+ "\tlsls r2, 4\n"
+ "\tadds r0, r2\n"
+ "_0809A12E:\n"
+ "\tmov r1, r9\n"
+ "\tadds r2, r1, r0\n"
+ "\tlsls r0, r5, 16\n"
+ "\tlsrs r3, r0, 16\n"
+ "\tcmp r3, 0x3\n"
+ "\tbls _0809A0FE\n"
+ "_0809A13A:\n"
+ "\tadd sp, 0x20\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif
+
+#ifdef NONMATCHING
+void sub_809A14C(u16 *vdest)
+{
+ u16 *r2;
+ u16 i;
+ int r3 = ((gPokemonStorageSystemPtr->unk_08b4 >> 3) + 30) & 0x3f;
+ r2 = vdest + (r3 < 0x20 ? r3 + 0x260 : r3 + 0x640);
+ for (i = 0; i < 0x2b; i++)
+ {
+ *r2++ = 0;
+ r3++;
+ r3 &= 0x3f;
+ if (r3 == 0)
+ r2 -= 0x420;
+ if (r3 == 0x20)
+ r2 += 0x3e0;
+ }
+}
+#else
+__attribute__((naked)) void sub_809A14C(u16 *vdest)
+{
+ asm_unified("\tpush {r4-r6,lr}\n"
+ "\tadds r2, r0, 0\n"
+ "\tldr r0, _0809A174 @ =gPokemonStorageSystemPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tldr r1, _0809A178 @ =0x000008b4\n"
+ "\tadds r0, r1\n"
+ "\tldrh r0, [r0]\n"
+ "\tlsrs r0, 3\n"
+ "\tadds r3, r0, 0\n"
+ "\tadds r3, 0x1E\n"
+ "\tmovs r0, 0x3F\n"
+ "\tands r3, r0\n"
+ "\tadds r0, r3, 0\n"
+ "\tcmp r0, 0x1F\n"
+ "\tbgt _0809A17C\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r6, 0x98\n"
+ "\tlsls r6, 3\n"
+ "\tadds r0, r6\n"
+ "\tb _0809A184\n"
+ "\t.align 2, 0\n"
+ "_0809A174: .4byte gPokemonStorageSystemPtr\n"
+ "_0809A178: .4byte 0x000008b4\n"
+ "_0809A17C:\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r1, 0xC8\n"
+ "\tlsls r1, 4\n"
+ "\tadds r0, r1\n"
+ "_0809A184:\n"
+ "\tadds r2, r0\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r5, 0\n"
+ "\tmovs r4, 0x3F\n"
+ "_0809A18C:\n"
+ "\tstrh r5, [r2]\n"
+ "\tadds r2, 0x2\n"
+ "\tadds r3, 0x1\n"
+ "\tands r3, r4\n"
+ "\tadds r1, r3, 0\n"
+ "\tcmp r1, 0\n"
+ "\tbne _0809A19E\n"
+ "\tldr r6, _0809A1B8 @ =0xfffff7c0\n"
+ "\tadds r2, r6\n"
+ "_0809A19E:\n"
+ "\tcmp r1, 0x20\n"
+ "\tbne _0809A1A8\n"
+ "\tmovs r1, 0xF8\n"
+ "\tlsls r1, 3\n"
+ "\tadds r2, r1\n"
+ "_0809A1A8:\n"
+ "\tadds r0, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, 0x2B\n"
+ "\tbls _0809A18C\n"
+ "\tpop {r4-r6}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0809A1B8: .4byte 0xfffff7c0");
+}
+#endif
+
+void sub_809A1BC(const u8 *a0, const u8 *text)
+{
+ u8 *r5 = gUnknown_083B6DB8;
+ DmaClear16(3, r5, 0x200);
+ Text_InitWindow8004E3C(&gWindowTemplate_81E6D38, r5, text);
+ DmaCopy16(3, r5 + 0x000, a0 + 0x000, 0x80);
+ DmaCopy16(3, r5 + 0x100, a0 + 0x080, 0x80);
+ DmaCopy16(3, r5 + 0x080, a0 + 0x100, 0x80);
+ DmaCopy16(3, r5 + 0x180, a0 + 0x180, 0x80);
+}
+
+const struct SpriteTemplate gSpriteTemplate_83BB2B8;
+
+void sub_809A23C(u8 boxId)
+{
+ u8 tagIdx;
+ s16 r6;
+ u16 i;
+
+ struct SpriteSheet spriteSheet = {gPokemonStorageSystemPtr->unk_08ca, 0x200, 3};
+ struct SpritePalette palettes[] = {
+ {gPokemonStorageSystemPtr->unk_0ccc, 0xdac8},
+ {gPokemonStorageSystemPtr->unk_0ccc, 0xdac9},
+ {}
+ };
+
+ u16 wallpaper = gPokemonStorage.wallpaper[boxId];
+ gPokemonStorageSystemPtr->unk_0ccc[14] = gUnknown_083BB0A8[wallpaper][0];
+ gPokemonStorageSystemPtr->unk_0ccc[15] = gUnknown_083BB0A8[wallpaper][1];
+ LoadSpritePalettes(palettes);
+ gPokemonStorageSystemPtr->unk_0d08 = 0x3f0;
+ tagIdx = IndexOfSpritePaletteTag(0xdac8);
+ gPokemonStorageSystemPtr->unk_0cec = 0x10e + 16 * tagIdx;
+ gPokemonStorageSystemPtr->unk_0d08 |= 0x10000 << tagIdx;
+ tagIdx = IndexOfSpritePaletteTag(0xdac9);
+ gPokemonStorageSystemPtr->unk_0cee = 0x10e + 16 * tagIdx;
+ gPokemonStorageSystemPtr->unk_0d08 |= 0x10000 << tagIdx;
+ sub_809A1BC(gPokemonStorageSystemPtr->unk_08ca, gPokemonStorage.boxNames[boxId]);
+ LoadSpriteSheet(&spriteSheet);
+ r6 = sub_809A6D0(sub_8072CA4(gPokemonStorage.boxNames[boxId]));
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83BB2B8, r6 + i * 32, 0x1c, 23);
+ gPokemonStorageSystemPtr->unk_0cf0[i] = gSprites + spriteId;
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_0cf0[i], i);
+ }
+ gPokemonStorageSystemPtr->unk_0cca = 0;
+}
+
+void sub_809A3D0(u8 boxId, s8 a1)
+{
+ u16 r8;
+ s16 x;
+ s16 x2;
+ u16 i;
+ struct SpriteSheet spriteSheet = {gPokemonStorageSystemPtr->unk_08ca, 0x200, 3};
+ struct SpriteTemplate template = gSpriteTemplate_83BB2B8;
+
+ gPokemonStorageSystemPtr->unk_0cca = gPokemonStorageSystemPtr->unk_0cca ? FALSE : TRUE;
+ if (gPokemonStorageSystemPtr->unk_0cca == 0)
+ {
+ spriteSheet.tag = 3;
+ r8 = gPokemonStorageSystemPtr->unk_0cec;
+ }
+ else
+ {
+ spriteSheet.tag = 4;
+ r8 = gPokemonStorageSystemPtr->unk_0cec;
+ template.tileTag = 4;
+ template.paletteTag = 0xdac9;
+ }
+ sub_809A1BC(gPokemonStorageSystemPtr->unk_08ca, gPokemonStorage.boxNames[boxId]);
+ LoadSpriteSheet(&spriteSheet);
+ LoadPalette(gUnknown_083BB0A8[gPokemonStorage.wallpaper[boxId]], r8, 0x04);
+ x = sub_809A6D0(sub_8072CA4(gPokemonStorage.boxNames[boxId]));
+ x2 = x + a1 * 192;
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&template, i * 32 + x2, 0x1c, 23);
+ gPokemonStorageSystemPtr->unk_0cf8[i] = gSprites + spriteId;
+ gPokemonStorageSystemPtr->unk_0cf8[i]->data[0] = (-a1) * 6;
+ gPokemonStorageSystemPtr->unk_0cf8[i]->data[1] = i * 32 + x;
+ gPokemonStorageSystemPtr->unk_0cf8[i]->data[2] = 1;
+ gPokemonStorageSystemPtr->unk_0cf8[i]->callback = sub_809A5E8;
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_0cf8[i], i);
+ gPokemonStorageSystemPtr->unk_0cf0[i]->data[0] = (-a1) * 6;
+ gPokemonStorageSystemPtr->unk_0cf0[i]->data[1] = 1;
+ gPokemonStorageSystemPtr->unk_0cf0[i]->callback = sub_809A61C;
+ }
+}
+
+void sub_809A598(void)
+{
+ if (gPokemonStorageSystemPtr->unk_0cca == 0)
+ FreeSpriteTilesByTag(4);
+ else
+ FreeSpriteTilesByTag(3);
+ gPokemonStorageSystemPtr->unk_0cf0[0] = gPokemonStorageSystemPtr->unk_0cf8[0];
+ gPokemonStorageSystemPtr->unk_0cf0[1] = gPokemonStorageSystemPtr->unk_0cf8[1];
+}
+
+void sub_809A5E8(struct Sprite *sprite)
+{
+ if (sprite->data[2])
+ sprite->data[2]--;
+ else if ((sprite->pos1.x += sprite->data[0]) == sprite->data[1])
+ sprite->callback = SpriteCallbackDummy;
+}
+
+void sub_809A61C(struct Sprite *sprite)
+{
+ if (sprite->data[1])
+ sprite->data[1]--;
+ else
+ {
+ sprite->pos1.x += sprite->data[0];
+ sprite->data[2] = sprite->pos1.x + sprite->pos2.x;
+ if (sprite->data[2] < 0x40 || sprite->data[2] > 0x100)
+ DestroySprite(sprite);
+ }
+}
+
+void sub_809A654(void)
+{
+ u8 boxId = get_preferred_box();
+ u8 wallpaperId = gPokemonStorage.wallpaper[boxId];
+ if (gPokemonStorageSystemPtr->unk_0cca == 0)
+ CpuCopy16(gUnknown_083BB0A8[wallpaperId], gPlttBufferUnfaded + gPokemonStorageSystemPtr->unk_0cec, 4);
+ else
+ CpuCopy16(gUnknown_083BB0A8[wallpaperId], gPlttBufferUnfaded + gPokemonStorageSystemPtr->unk_0cee, 4);
+}
+
+s16 sub_809A6D0(u8 width)
+{
+ return 0xb0 - width / 2;
+}
+
+void sub_809A6DC(void)
+{
+ u16 i;
+
+ LoadSpriteSheet(&gUnknown_083BB288);
+ LoadSpritePalette(&gUnknown_083BB290);
+ for (i = 0; i < 2; i++)
+ {
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83BB2F0, 0x5c + i * 0x88, 0x1c, 21);
+ if (spriteId != MAX_SPRITES)
+ {
+ struct Sprite *sprite = gSprites + spriteId;
+ StartSpriteAnim(sprite, i);
+ sprite->data[3] = (i == 0) ? -1 : 1;
+ gPokemonStorageSystemPtr->unk_0d00[i] = sprite;
+ }
+ }
+ if (sub_809BF2C())
+ sub_809A860(TRUE);
+}
+
+void sub_809A774(s8 a0)
+{
+ u16 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ gPokemonStorageSystemPtr->unk_0d00[i]->pos2.x = 0;
+ gPokemonStorageSystemPtr->unk_0d00[i]->data[0] = 2;
+ }
+ if (a0 < 0)
+ {
+ gPokemonStorageSystemPtr->unk_0d00[0]->data[1] = 29;
+ gPokemonStorageSystemPtr->unk_0d00[1]->data[1] = 5;
+ gPokemonStorageSystemPtr->unk_0d00[0]->data[2] = 0x48;
+ gPokemonStorageSystemPtr->unk_0d00[1]->data[2] = 0x48;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_0d00[0]->data[1] = 5;
+ gPokemonStorageSystemPtr->unk_0d00[1]->data[1] = 29;
+ gPokemonStorageSystemPtr->unk_0d00[0]->data[2] = 0xF8;
+ gPokemonStorageSystemPtr->unk_0d00[1]->data[2] = 0xF8;
+ }
+ gPokemonStorageSystemPtr->unk_0d00[0]->data[7] = 0;
+ gPokemonStorageSystemPtr->unk_0d00[1]->data[7] = 1;
+}
+
+void sub_809A810(void)
+{
+ u16 i;
+
+ for (i = 0; i < 2; i++)
+ {
+ gPokemonStorageSystemPtr->unk_0d00[i]->pos1.x = 0x88 * i + 0x5c;
+ gPokemonStorageSystemPtr->unk_0d00[i]->pos2.x = 0;
+ gPokemonStorageSystemPtr->unk_0d00[i]->invisible = FALSE;
+ }
+ sub_809A860(TRUE);
+}
+
+void sub_809A860(bool8 a0)
+{
+ u16 i;
+ if (a0)
+ {
+ for (i = 0; i < 2; i++)
+ {
+ gPokemonStorageSystemPtr->unk_0d00[i]->data[0] = 1;
+ gPokemonStorageSystemPtr->unk_0d00[i]->data[1] = 0;
+ gPokemonStorageSystemPtr->unk_0d00[i]->data[2] = 0;
+ gPokemonStorageSystemPtr->unk_0d00[i]->data[4] = 0;
+ }
+ }
+ else
+ {
+ for (i = 0; i < 2; i++)
+ {
+ gPokemonStorageSystemPtr->unk_0d00[i]->data[0] = 0;
+ }
+ }
+}
+
+void sub_809A8C8(struct Sprite *sprite)
+{
+ switch (sprite->data[0])
+ {
+ case 0:
+ sprite->pos2.x = 0;
+ break;
+ case 1:
+ if (++sprite->data[1] > 3)
+ {
+ sprite->data[1] = 0;
+ sprite->pos2.x += sprite->data[3];
+ if (++sprite->data[2] > 5)
+ {
+ sprite->data[2] = 0;
+ sprite->pos2.x = 0;
+ }
+ }
+ break;
+ case 2:
+ sprite->data[0] = 3;
+ break;
+ case 3:
+ sprite->pos1.x -= gPokemonStorageSystemPtr->unk_08b6;
+ if (sprite->pos1.x < 0x49 || sprite->pos1.x > 0xf7)
+ sprite->invisible = TRUE;
+ if (--sprite->data[1] == 0)
+ {
+ sprite->pos1.x = sprite->data[2];
+ sprite->invisible = FALSE;
+ sprite->data[0] = 4;
+ }
+ break;
+ case 4:
+ sprite->pos1.x -= gPokemonStorageSystemPtr->unk_08b6;
+ break;
+ }
+}
+
+struct Sprite *sub_809A9A0(u16 x, u16 y, u8 animId, u8 priority, u8 subpriority)
+{
+ u8 spriteId = CreateSprite(&gSpriteTemplate_83BB2F0, x, y, subpriority);
+ if (spriteId == MAX_SPRITES)
+ return NULL;
+ animId %= 2;
+ StartSpriteAnim(gSprites + spriteId, animId);
+ gSprites[spriteId].oam.priority = priority;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ return gSprites + spriteId;
+}
+
+void sub_809AA24(void)
+{
+ if (gPokemonStorageSystemPtr->unk_0005 != 1)
+ gUnknown_020384E4 = 0;
+ else
+ gUnknown_020384E4 = 1;
+ gUnknown_020384E5 = 0;
+ gUnknown_020384E6 = FALSE;
+ gUnknown_020384E7 = 0;
+ gUnknown_020384E8 = 0;
+ gUnknown_020384E9 = 0;
+ sub_809B0D4();
+ sub_809CC04();
+ gPokemonStorageSystemPtr->unk_11e2 = 1;
+ sub_809BF74();
+}
+
+void sub_809AA98(void)
+{
+ sub_809CC04();
+ sub_809C028();
+ gPokemonStorageSystemPtr->unk_11e2 = 1;
+ if (gUnknown_020384E6)
+ sub_8098BF0();
+}
+
+void sub_809AACC(u8 a0, u8 a1, u16 *a2, u16 *a3)
+{
+ switch (a0)
+ {
+ case 0:
+ *a2 = (a1 % 6) * 24 + 100;
+ *a3 = (a1 / 6) * 24 + 32;
+ break;
+ case 1:
+ if (a1 == 0)
+ {
+ *a2 = 0x68;
+ *a3 = 0x34;
+ }
+ else if (a1 == 6)
+ {
+ *a2 = 0x98;
+ *a3 = 0x84;
+ }
+ else
+ {
+ *a2 = 0x98;
+ *a3 = (a1 - 1) * 24 + 4;
+ }
+ break;
+ case 2:
+ *a2 = 0xa2;
+ *a3 = 0x0c;
+ break;
+ case 3:
+ *a3 = gUnknown_020384E6 ? 8 : 14;
+ *a2 = a1 * 0x58 + 0x78;
+ break;
+ case 4:
+ *a2 = 0xa0;
+ *a3 = 0x60;
+ break;
+ }
+}
+
+u16 sub_809AB8C(void)
+{
+ switch (gUnknown_020384E4)
+ {
+ case 1:
+ return GetMonData(gPlayerParty + gUnknown_020384E5, MON_DATA_SPECIES);
+ case 0:
+ return GetBoxMonData(gPokemonStorage.boxes[get_preferred_box()] + gUnknown_020384E5, MON_DATA_SPECIES);
+ default:
+ return SPECIES_NONE;
+ }
+}
+
+bool8 sub_809AC00(void)
+{
+ s16 tmp;
+ if (gPokemonStorageSystemPtr->unk_11dc == 0)
+ return FALSE;
+ if (--gPokemonStorageSystemPtr->unk_11dc)
+ {
+ gPokemonStorageSystemPtr->unk_11c8 += gPokemonStorageSystemPtr->unk_11d0;
+ gPokemonStorageSystemPtr->unk_11cc += gPokemonStorageSystemPtr->unk_11d4;
+ gPokemonStorageSystemPtr->unk_11c0->pos1.x = gPokemonStorageSystemPtr->unk_11c8 >> 8;
+ gPokemonStorageSystemPtr->unk_11c0->pos1.y = gPokemonStorageSystemPtr->unk_11cc >> 8;
+ if (gPokemonStorageSystemPtr->unk_11c0->pos1.x > 0x100)
+ {
+ tmp = gPokemonStorageSystemPtr->unk_11c0->pos1.x - 0x100;
+ gPokemonStorageSystemPtr->unk_11c0->pos1.x = tmp + 0x40;
+ }
+ if (gPokemonStorageSystemPtr->unk_11c0->pos1.x < 0x40)
+ {
+ tmp = 0x40 - gPokemonStorageSystemPtr->unk_11c0->pos1.x;
+ gPokemonStorageSystemPtr->unk_11c0->pos1.x = 0x100 - tmp;
+ }
+ if (gPokemonStorageSystemPtr->unk_11c0->pos1.y > 0xb0)
+ {
+ tmp = gPokemonStorageSystemPtr->unk_11c0->pos1.y - 0xb0;
+ gPokemonStorageSystemPtr->unk_11c0->pos1.y = tmp - 0x10;
+ }
+ if (gPokemonStorageSystemPtr->unk_11c0->pos1.y < -0x10)
+ {
+ tmp = -0x10 - gPokemonStorageSystemPtr->unk_11c0->pos1.y;
+ gPokemonStorageSystemPtr->unk_11c0->pos1.y = 0xb0 - tmp;
+ }
+ if (gPokemonStorageSystemPtr->unk_11e3 && --gPokemonStorageSystemPtr->unk_11e3 == 0)
+ gPokemonStorageSystemPtr->unk_11c0->vFlip = gPokemonStorageSystemPtr->unk_11c0->vFlip ? FALSE : TRUE;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_11c0->pos1.x = gPokemonStorageSystemPtr->unk_11d8;
+ gPokemonStorageSystemPtr->unk_11c0->pos1.y = gPokemonStorageSystemPtr->unk_11da;
+ sub_809AFB8();
+ }
+ return TRUE;
+}
+
+void sub_809AD3C(u8 a0, u8 a1)
+{
+ u16 x;
+ u16 y;
+
+ sub_809AACC(a0, a1, &x, &y);
+ gPokemonStorageSystemPtr->unk_11e0 = a0;
+ gPokemonStorageSystemPtr->unk_11e1 = a1;
+ gPokemonStorageSystemPtr->unk_11d8 = x;
+ gPokemonStorageSystemPtr->unk_11da = y;
+}
+
+void sub_809AD94(void)
+{
+ int r7;
+ int r0;
+
+ if (gPokemonStorageSystemPtr->unk_11de || gPokemonStorageSystemPtr->unk_11df)
+ gPokemonStorageSystemPtr->unk_11dc = 12;
+ else
+ gPokemonStorageSystemPtr->unk_11dc = 6;
+ if (gPokemonStorageSystemPtr->unk_11e3)
+ gPokemonStorageSystemPtr->unk_11e3 = gPokemonStorageSystemPtr->unk_11dc >> 1;
+ switch (gPokemonStorageSystemPtr->unk_11de)
+ {
+ default:
+ r7 = gPokemonStorageSystemPtr->unk_11da - gPokemonStorageSystemPtr->unk_11c0->pos1.y;
+ break;
+ case -1:
+ r7 = gPokemonStorageSystemPtr->unk_11da - 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.y;
+ break;
+ case 1:
+ r7 = gPokemonStorageSystemPtr->unk_11da + 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.y;
+ break;
+ }
+ switch (gPokemonStorageSystemPtr->unk_11df)
+ {
+ default:
+ r0 = gPokemonStorageSystemPtr->unk_11d8 - gPokemonStorageSystemPtr->unk_11c0->pos1.x;
+ break;
+ case -1:
+ r0 = gPokemonStorageSystemPtr->unk_11d8 - 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.x;
+ break;
+ case 1:
+ r0 = gPokemonStorageSystemPtr->unk_11d8 + 0xc0 - gPokemonStorageSystemPtr->unk_11c0->pos1.x;
+ break;
+ }
+ r7 <<= 8;
+ r0 <<= 8;
+ gPokemonStorageSystemPtr->unk_11d0 = r0 / gPokemonStorageSystemPtr->unk_11dc;
+ gPokemonStorageSystemPtr->unk_11d4 = r7 / gPokemonStorageSystemPtr->unk_11dc;
+ gPokemonStorageSystemPtr->unk_11c8 = gPokemonStorageSystemPtr->unk_11c0->pos1.x << 8;
+ gPokemonStorageSystemPtr->unk_11cc = gPokemonStorageSystemPtr->unk_11c0->pos1.y << 8;
+}
+
+void sub_809AF18(u8 a0, u8 a1)
+{
+ sub_809AD3C(a0, a1);
+ sub_809AD94();
+ if (!gUnknown_020384E6)
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 1);
+ if (a0 == 1 && gUnknown_020384E4 != 1)
+ {
+ gPokemonStorageSystemPtr->unk_11e2 = a0;
+ gPokemonStorageSystemPtr->unk_11c4->invisible = TRUE;
+ }
+ switch (a0)
+ {
+ case 0:
+ break;
+ case 1 ... 3:
+ gPokemonStorageSystemPtr->unk_11c4->invisible = TRUE;
+ gPokemonStorageSystemPtr->unk_11c4->oam.priority = 1;
+ break;
+ }
+}
+
+void sub_809AFB8(void)
+{
+ gUnknown_020384E4 = gPokemonStorageSystemPtr->unk_11e0;
+ gUnknown_020384E5 = gPokemonStorageSystemPtr->unk_11e1;
+ if (!gUnknown_020384E6)
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 0);
+ sub_809BF74();
+ switch (gUnknown_020384E4)
+ {
+ case 2:
+ sub_809A860(TRUE);
+ break;
+ case 1:
+ gPokemonStorageSystemPtr->unk_11c4->subpriority = 12;
+ break;
+ case 0:
+ gPokemonStorageSystemPtr->unk_11c4->oam.priority = 2;
+ gPokemonStorageSystemPtr->unk_11c4->subpriority = 20;
+ gPokemonStorageSystemPtr->unk_11c4->invisible = FALSE;
+ break;
+ }
+}
+
+void sub_809B068(void)
+{
+ u8 partyCount;
+ if (!gUnknown_020384E6)
+ partyCount = 0;
+ else
+ {
+ partyCount = CalculatePlayerPartyCount();
+ if (partyCount > PARTY_SIZE - 1)
+ partyCount = PARTY_SIZE - 1;
+ }
+ if (gPokemonStorageSystemPtr->unk_11c0->vFlip)
+ gPokemonStorageSystemPtr->unk_11e3 = 1;
+ sub_809AF18(1, partyCount);
+}
+
+void sub_809B0C0(u8 a0)
+{
+ sub_809AF18(0, a0);
+}
+
+void sub_809B0D4(void)
+{
+ gUnknown_020384EA = 0;
+}
+
+void sub_809B0E0(void)
+{
+ gUnknown_020384EA = gUnknown_020384E5;
+}
+
+u8 sub_809B0F4(void)
+{
+ return gUnknown_020384EA;
+}
+
+void sub_809B100(u8 a0)
+{
+ gPokemonStorageSystemPtr->unk_12a4 = gUnknown_083BBBC8[a0];
+ gPokemonStorageSystemPtr->unk_12a8 = 0;
+}
+
+bool8 sub_809B130(void)
+{
+ return gPokemonStorageSystemPtr->unk_12a4();
+}
+
+bool8 sub_809B150(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_12a8)
+ {
+ case 0:
+ if (gUnknown_020384E6)
+ return FALSE;
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 2);
+ gPokemonStorageSystemPtr->unk_12a8++;
+ break;
+ case 1:
+ if (!sub_809B324())
+ {
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 3);
+ sub_809B384();
+ gPokemonStorageSystemPtr->unk_12a8++;
+ }
+ break;
+ case 2:
+ if (!sub_809B358())
+ gPokemonStorageSystemPtr->unk_12a8++;
+ break;
+ case 3:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_809B1D8(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_12a8)
+ {
+ case 0:
+ if (!sub_809B324())
+ {
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 2);
+ sub_809B3E0();
+ gPokemonStorageSystemPtr->unk_12a8++;
+ }
+ break;
+ case 1:
+ if (!sub_809B358())
+ {
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 0);
+ gPokemonStorageSystemPtr->unk_12a8++;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_809B24C(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_12a8)
+ {
+ case 0:
+ switch (gUnknown_020384E4)
+ {
+ case 1:
+ gPokemonStorageSystemPtr->unk_12a9 = 14;
+ break;
+ case 0:
+ gPokemonStorageSystemPtr->unk_12a9 = get_preferred_box();
+ break;
+ default:
+ return FALSE;
+ }
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 2);
+ sub_80996B0(gPokemonStorageSystemPtr->unk_12a9, gUnknown_020384E5);
+ gPokemonStorageSystemPtr->unk_12a8++;
+ break;
+ case 1:
+ if (!sub_809971C())
+ {
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 3);
+ diegohint1(gPokemonStorageSystemPtr->unk_12a9, gUnknown_020384E5);
+ gPokemonStorageSystemPtr->unk_12a8++;
+ }
+ break;
+ case 2:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_809B324(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_11c0->pos2.y)
+ {
+ default:
+ gPokemonStorageSystemPtr->unk_11c0->pos2.y++;
+ break;
+ case 0:
+ gPokemonStorageSystemPtr->unk_11c0->pos2.y++;
+ break;
+ case 8:
+ return FALSE;
+ }
+ return TRUE;
+}
+
+bool8 sub_809B358(void)
+{
+ switch (gPokemonStorageSystemPtr->unk_11c0->pos2.y)
+ {
+ case 0:
+ return FALSE;
+ default:
+ gPokemonStorageSystemPtr->unk_11c0->pos2.y--;
+ break;
+ }
+ return TRUE;
+}
+
+void sub_809B384(void)
+{
+ switch (gUnknown_020384E4)
+ {
+ case 1:
+ sub_809B44C(14, gUnknown_020384E5);
+ sub_8099584(0, gUnknown_020384E5);
+ break;
+ case 0:
+ sub_809B44C(get_preferred_box(), gUnknown_020384E5);
+ sub_8099584(1, gUnknown_020384E5);
+ break;
+ default:
+ return;
+ }
+ gUnknown_020384E6 = TRUE;
+}
+
+void sub_809B3E0(void)
+{
+ u8 boxId;
+ switch (gUnknown_020384E4)
+ {
+ case 1:
+ diegohint2(14, gUnknown_020384E5);
+ sub_809960C(14, gUnknown_020384E5);
+ break;
+ case 0:
+ boxId = get_preferred_box();
+ diegohint2(boxId, gUnknown_020384E5);
+ sub_809960C(boxId, gUnknown_020384E5);
+ break;
+ default:
+ return;
+ }
+ gUnknown_020384E6 = FALSE;
+}
+
+void sub_809B440(void)
+{
+ sub_809BF74();
+}
+
+void sub_809B44C(u8 a0, u8 a1)
+{
+ if (a0 == 14)
+ gPokemonStorageSystemPtr->unk_25b4 = gPlayerParty[gUnknown_020384E5];
+ else
+ ExpandBoxMon(gPokemonStorage.boxes[a0] + a1, &gPokemonStorageSystemPtr->unk_25b4);
+ sub_809B548(a0, a1);
+ gUnknown_020384E7 = a0;
+ gUnknown_020384E8 = a1;
+}
+
+void diegohint2(u8 a0, u8 a1)
+{
+ if (a0 == 14)
+ {
+ gPlayerParty[a1] = gPokemonStorageSystemPtr->unk_25b4;
+ }
+ else
+ {
+ BoxMonRestorePP(&gPokemonStorageSystemPtr->unk_25b4.box);
+ gPokemonStorage.boxes[a0][a1] = gPokemonStorageSystemPtr->unk_25b4.box;
+ }
+}
+
+void sub_809B548(u8 a0, u8 a1)
+{
+ if (a0 == 14)
+ ZeroMonData(gPlayerParty + a1);
+ else
+ ZeroBoxMonData(gPokemonStorage.boxes[a0] + a1);
+}
+
+void diegohint1(u8 a0, u8 a1)
+{
+ if (a0 == 14)
+ gPokemonStorageSystemPtr->unk_2618 = gPlayerParty[a1];
+ else
+ ExpandBoxMon(gPokemonStorage.boxes[a0] + a1, &gPokemonStorageSystemPtr->unk_2618);
+ diegohint2(a0, a1);
+ gPokemonStorageSystemPtr->unk_25b4 = gPokemonStorageSystemPtr->unk_2618;
+ sub_809C04C(&gPokemonStorageSystemPtr->unk_25b4, 0);
+ gUnknown_020384E7 = a0;
+ gUnknown_020384E8 = a1;
+}
+
+bool8 sub_809B62C(u8 boxId)
+{
+ s16 monIdx = GetIndexOfFirstEmptySpaceInBoxN(boxId);
+ if (monIdx == -1)
+ return FALSE;
+ if (gUnknown_020384E6)
+ {
+ diegohint2(boxId, monIdx);
+ sub_8099480();
+ gUnknown_020384E6 = FALSE;
+ }
+ else
+ {
+ sub_809B44C(14, gUnknown_020384E5);
+ diegohint2(boxId, monIdx);
+ sub_8099520(gUnknown_020384E5);
+ }
+ if (boxId == get_preferred_box())
+ sub_8098D20(monIdx);
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 1);
+ return TRUE;
+}
+
+void sub_809B6BC(void)
+{
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 0);
+ sub_809BF74();
+}
+
+void sub_809B6DC(void)
+{
+ u8 mode;
+
+ if (gUnknown_020384E6)
+ mode = 2;
+ else if (gUnknown_020384E4 == 1)
+ mode = 0;
+ else
+ mode = 1;
+ sub_809981C(mode, gUnknown_020384E5);
+ StringCopy(gPokemonStorageSystemPtr->unk_26e4, gPokemonStorageSystemPtr->unk_11fa);
+}
+
+bool8 sub_809B734(void)
+{
+ if (!sub_80998D8())
+ {
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 0);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+void sub_809B760(void)
+{
+ sub_8099920();
+ if (gUnknown_020384E6)
+ gUnknown_020384E6 = FALSE;
+ else
+ {
+ u8 boxId;
+ if (gUnknown_020384E4 == 1)
+ boxId = 14;
+ else
+ boxId = get_preferred_box();
+ sub_809B548(boxId, gUnknown_020384E5);
+ }
+ sub_809BF74();
+}
+
+void sub_809B7AC(void)
+{
+ if (gUnknown_020384E6)
+ StartSpriteAnim(gPokemonStorageSystemPtr->unk_11c0, 3);
+}
+
+void sub_809B7D4(void)
+{
+ u16 knownMoves;
+ if (gUnknown_020384E6)
+ {
+ gPokemonStorageSystemPtr->unk_2618 = gPokemonStorageSystemPtr->unk_25b4;
+ gPokemonStorageSystemPtr->unk_2682 = -1;
+ gPokemonStorageSystemPtr->unk_2683 = -1;
+ }
+ else
+ {
+ if (gUnknown_020384E4 == 1)
+ {
+ gPokemonStorageSystemPtr->unk_2618 = gPlayerParty[gUnknown_020384E5];
+ gPokemonStorageSystemPtr->unk_2682 = 14;
+ }
+ else
+ {
+ ExpandBoxMon(gPokemonStorage.boxes[gPokemonStorage.currentBox] + gUnknown_020384E5, &gPokemonStorageSystemPtr->unk_2618);
+ gPokemonStorageSystemPtr->unk_2682 = gPokemonStorage.currentBox;
+ }
+ gPokemonStorageSystemPtr->unk_2683 = gUnknown_020384E5;
+ }
+ gPokemonStorageSystemPtr->unk_267e = 0;
+ gPokemonStorageSystemPtr->unk_267f = 0;
+ gPokemonStorageSystemPtr->unk_2686[0] = MOVE_SURF;
+ gPokemonStorageSystemPtr->unk_2686[1] = MOVE_DIVE;
+ gPokemonStorageSystemPtr->unk_2686[2] = NUM_MOVES;
+ knownMoves = GetMonData(&gPokemonStorageSystemPtr->unk_2618, MON_DATA_KNOWN_MOVES, gPokemonStorageSystemPtr->unk_2686);
+ gPokemonStorageSystemPtr->unk_267e = knownMoves & 1;
+ gPokemonStorageSystemPtr->unk_267f = (knownMoves >> 1) & 1;
+ if (gPokemonStorageSystemPtr->unk_267e || gPokemonStorageSystemPtr->unk_267f)
+ gPokemonStorageSystemPtr->unk_267d = 0;
+ else
+ {
+ gPokemonStorageSystemPtr->unk_267d = 1;
+ gPokemonStorageSystemPtr->unk_267c = 1;
+ }
+ gPokemonStorageSystemPtr->unk_2684 = 0;
+}
+
+s8 sub_809B960(void)
+{
+ u16 i;
+ u16 knownMoves;
+
+ if (gPokemonStorageSystemPtr->unk_267d)
+ return gPokemonStorageSystemPtr->unk_267c;
+ switch (gPokemonStorageSystemPtr->unk_2684)
+ {
+ case 0:
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (gPokemonStorageSystemPtr->unk_2682 != 14 || gPokemonStorageSystemPtr->unk_2683 != i)
+ {
+ knownMoves = GetMonData(gPlayerParty + i, MON_DATA_KNOWN_MOVES, gPokemonStorageSystemPtr->unk_2686);
+ if (knownMoves & 1)
+ gPokemonStorageSystemPtr->unk_267e = 0;
+ if (knownMoves & 2)
+ gPokemonStorageSystemPtr->unk_267f = 0;
+ }
+ }
+ if (gPokemonStorageSystemPtr->unk_267e == 0 && gPokemonStorageSystemPtr->unk_267f == 0)
+ {
+ gPokemonStorageSystemPtr->unk_267d = 1;
+ gPokemonStorageSystemPtr->unk_267c = 1;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_2680 = 0;
+ gPokemonStorageSystemPtr->unk_2681 = 0;
+ gPokemonStorageSystemPtr->unk_2684++;
+ }
+ break;
+ case 1:
+ for (i = 0; i < 5; i++)
+ {
+ knownMoves = GetBoxMonData(gPokemonStorage.boxes[gPokemonStorageSystemPtr->unk_2680] + gPokemonStorageSystemPtr->unk_2681, MON_DATA_KNOWN_MOVES, gPokemonStorageSystemPtr->unk_2686);
+ if (knownMoves && (gPokemonStorageSystemPtr->unk_2682 != gPokemonStorageSystemPtr->unk_2680 || gPokemonStorageSystemPtr->unk_2683 != gPokemonStorageSystemPtr->unk_2681))
+ {
+ if (knownMoves & 1)
+ gPokemonStorageSystemPtr->unk_267e = 0;
+ if (knownMoves & 2)
+ gPokemonStorageSystemPtr->unk_267f = 0;
+ }
+ if (++gPokemonStorageSystemPtr->unk_2681 >= 30)
+ {
+ gPokemonStorageSystemPtr->unk_2681 = 0;
+ if (++gPokemonStorageSystemPtr->unk_2680 >= 14)
+ {
+ gPokemonStorageSystemPtr->unk_267d = 1;
+ gPokemonStorageSystemPtr->unk_267c = 0;
+ break;
+ }
+ }
+ }
+ if (gPokemonStorageSystemPtr->unk_267e == 0 && gPokemonStorageSystemPtr->unk_267f == 0)
+ {
+ gPokemonStorageSystemPtr->unk_267d = 1;
+ gPokemonStorageSystemPtr->unk_267c = 1;
+ }
+ break;
+ }
+ return -1;
+}
+
+void sub_809BB90(void)
+{
+ if (gUnknown_020384E6)
+ gUnknown_02038480 = gPokemonStorageSystemPtr->unk_25b4;
+}
+
+void sub_809BBC0(void)
+{
+ if (gUnknown_020384E6)
+ {
+ if (gUnknown_020384E7 == 14)
+ gPokemonStorageSystemPtr->unk_25b4 = gUnknown_02038480;
+ else
+ gPokemonStorageSystemPtr->unk_25b4.box = gUnknown_02038480.box;
+ }
+}
+
+void sub_809BC18(void)
+{
+ if (gUnknown_020384E6)
+ {
+ sub_809BB90();
+ gPokemonStorageSystemPtr->unk_2690.pokemon = &gUnknown_02038480;
+ gPokemonStorageSystemPtr->unk_268d = 0;
+ gPokemonStorageSystemPtr->unk_268c = 0;
+ gPokemonStorageSystemPtr->unk_268e = 0;
+ }
+ else if (gUnknown_020384E4 == 1)
+ {
+ gPokemonStorageSystemPtr->unk_2690.pokemon = gPlayerParty;
+ gPokemonStorageSystemPtr->unk_268d = gUnknown_020384E5;
+ gPokemonStorageSystemPtr->unk_268c = StorageSystemGetPartySize() - 1;
+ gPokemonStorageSystemPtr->unk_268e = 0;
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_2690.box = gPokemonStorage.boxes[gPokemonStorage.currentBox];
+ gPokemonStorageSystemPtr->unk_268d = gUnknown_020384E5;
+ gPokemonStorageSystemPtr->unk_268c = 30 - 1;
+ gPokemonStorageSystemPtr->unk_268e = 5;
+ }
+}
+
+void sub_809BD14(void)
+{
+ if (gUnknown_020384E6)
+ sub_809BBC0();
+ else
+ gUnknown_020384E5 = pssData.monIndex;
+}
+
+s16 party_compaction(void)
+{
+ s16 retVal = -1;
+ u16 i;
+ u16 last;
+
+ for (i = 0, last = 0; i < PARTY_SIZE; i++)
+ {
+ if ((u16)GetMonData(gPlayerParty + i, MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ if (i != last)
+ gPlayerParty[last] = gPlayerParty[i];
+ last++;
+ }
+ else if (retVal == -1)
+ retVal = i;
+ }
+ for (; last < PARTY_SIZE; last++)
+ ZeroMonData(gPlayerParty + last);
+ return retVal;
+}
+
+void sub_809BDD8(u8 markings)
+{
+ gPokemonStorageSystemPtr->unk_11f7 = markings;
+ if (gUnknown_020384E6)
+ SetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_MARKINGS, &markings);
+ else
+ {
+ if (gUnknown_020384E4 == 1)
+ SetMonData(gPlayerParty + gUnknown_020384E5, MON_DATA_MARKINGS, &markings);
+ if (gUnknown_020384E4 == 0)
+ SetBoxMonData(gPokemonStorage.boxes[get_preferred_box()] + gUnknown_020384E5, MON_DATA_MARKINGS, &markings);
+ }
+}
+
+bool8 sub_809BE80(void)
+{
+ if (gUnknown_020384E4 == 1 && !gUnknown_020384E6 && CountAlivePartyMonsExceptOne(gUnknown_020384E5) == 0)
+ return TRUE;
+ return FALSE;
+}
+
+bool8 sub_809BEBC(void)
+{
+ if (gUnknown_020384E6)
+ {
+ if (gUnknown_020384E4 == 1 && CountAlivePartyMonsExceptOne(gUnknown_020384E5) == 0)
+ {
+ if (gPokemonStorageSystemPtr->unk_11f9 || GetMonData(&gPokemonStorageSystemPtr->unk_25b4, MON_DATA_HP) == 0)
+ return FALSE;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 sub_809BF20(void)
+{
+ return gUnknown_020384E6;
+}
+
+bool8 sub_809BF2C(void)
+{
+ return gUnknown_020384E4 == 2 ? TRUE : FALSE;
+}
+
+bool8 sub_809BF48(void)
+{
+ return (gUnknown_020384E4 == 3 && gUnknown_020384E5 == 1) ? TRUE : FALSE;
+}
+
+void sub_809BF74(void)
+{
+ gPokemonStorageSystemPtr->unk_11f6 = gUnknown_020384E6 ? 0 : 1;
+ if (!gUnknown_020384E6)
+ {
+ switch (gUnknown_020384E4)
+ {
+ case 1:
+ if (gUnknown_020384E5 < PARTY_SIZE)
+ {
+ sub_809C04C(gPlayerParty + gUnknown_020384E5, 0);
+ break;
+ }
+ // fallthrough
+ case 2:
+ case 3:
+ sub_809C04C(NULL, 2);
+ break;
+ case 0:
+ sub_809C04C(gPokemonStorage.boxes[get_preferred_box()] + gUnknown_020384E5, 1);
+ break;
+ }
+ }
+}
+
+void sub_809C028(void)
+{
+ if (gUnknown_020384E6)
+ sub_809C04C(&gUnknown_02038480.box, 0);
+ else
+ sub_809BF74();
+}
+
+void sub_809C04C(void *pokemon, u8 a1)
+{
+ u8 *buf;
+ u16 gender = MON_MALE;
+ gPokemonStorageSystemPtr->unk_11f2 = 0;
+ if (a1 == 0)
+ {
+ struct Pokemon *pkmn = (struct Pokemon *)pokemon;
+ gPokemonStorageSystemPtr->unk_11f0 = GetMonData(pokemon, MON_DATA_SPECIES2);
+ if (gPokemonStorageSystemPtr->unk_11f0 != SPECIES_NONE)
+ {
+ gPokemonStorageSystemPtr->unk_11f9 = GetMonData(pkmn, MON_DATA_IS_EGG);
+ GetMonData(pkmn, MON_DATA_NICKNAME, gPokemonStorageSystemPtr->unk_11fa);
+ StringGetEnd10(gPokemonStorageSystemPtr->unk_11fa);
+ gPokemonStorageSystemPtr->unk_11f8 = GetMonData(pkmn, MON_DATA_LEVEL);
+ gPokemonStorageSystemPtr->unk_11f7 = GetMonData(pkmn, MON_DATA_MARKINGS);
+ gPokemonStorageSystemPtr->unk_11ec = GetMonData(pkmn, MON_DATA_PERSONALITY);
+ gPokemonStorageSystemPtr->unk_11e8 = GetMonSpritePal(pkmn);
+ gender = GetMonGender(pkmn);
+ gPokemonStorageSystemPtr->unk_11f2 = GetMonData(pkmn, MON_DATA_HELD_ITEM);
+ }
+ }
+ else if (a1 == 1)
+ {
+ struct BoxPokemon *boxmon = (struct BoxPokemon *)pokemon;
+ gPokemonStorageSystemPtr->unk_11f0 = GetBoxMonData(pokemon, MON_DATA_SPECIES2);
+ if (gPokemonStorageSystemPtr->unk_11f0 != SPECIES_NONE)
+ {
+ u32 otId = GetBoxMonData(boxmon, MON_DATA_OT_ID);
+ gPokemonStorageSystemPtr->unk_11f9 = GetBoxMonData(boxmon, MON_DATA_IS_EGG);
+ GetBoxMonData(boxmon, MON_DATA_NICKNAME, gPokemonStorageSystemPtr->unk_11fa);
+ StringGetEnd10(gPokemonStorageSystemPtr->unk_11fa);
+ gPokemonStorageSystemPtr->unk_11f8 = GetLevelFromBoxMonExp(boxmon);
+ gPokemonStorageSystemPtr->unk_11f7 = GetBoxMonData(boxmon, MON_DATA_MARKINGS);
+ gPokemonStorageSystemPtr->unk_11ec = GetBoxMonData(boxmon, MON_DATA_PERSONALITY);
+ gPokemonStorageSystemPtr->unk_11e8 = GetMonSpritePalFromOtIdPersonality(gPokemonStorageSystemPtr->unk_11f0, otId, gPokemonStorageSystemPtr->unk_11ec);
+ gender = GetGenderFromSpeciesAndPersonality(gPokemonStorageSystemPtr->unk_11f0, gPokemonStorageSystemPtr->unk_11ec);
+ gPokemonStorageSystemPtr->unk_11f2 = GetBoxMonData(boxmon, MON_DATA_HELD_ITEM);
+ }
+ }
+ else
+ {
+ gPokemonStorageSystemPtr->unk_11f0 = SPECIES_NONE;
+ }
+ if (gPokemonStorageSystemPtr->unk_11f0 == SPECIES_NONE)
+ {
+ gPokemonStorageSystemPtr->unk_11fa[0] = EOS;
+ gPokemonStorageSystemPtr->unk_120f[0] = EOS;
+ gPokemonStorageSystemPtr->unk_1234[0] = EOS;
+ gPokemonStorageSystemPtr->unk_1259[0] = EOS;
+ gPokemonStorageSystemPtr->unk_127a[0] = EOS;
+ }
+ else if (gPokemonStorageSystemPtr->unk_11f9)
+ {
+ buf = gPokemonStorageSystemPtr->unk_120f;
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW
+ buf[2] = 0x0F; // WHITE2
+ buf[3] = 0x00; // TRANSPARENT
+ buf[4] = 0x01; // DARK_GREY
+ buf = gPokemonStorageSystemPtr->unk_120f + 5;
+ buf = StringCopy(buf, gPokemonStorageSystemPtr->unk_11fa);
+ gPokemonStorageSystemPtr->unk_1234[0] = EOS;
+ gPokemonStorageSystemPtr->unk_1259[0] = EOS;
+ gPokemonStorageSystemPtr->unk_127a[0] = EOS;
+ }
+ else
+ {
+ if (gPokemonStorageSystemPtr->unk_11f0 == SPECIES_NIDORAN_M || gPokemonStorageSystemPtr->unk_11f0 == SPECIES_NIDORAN_F)
+ gender = MON_GENDERLESS;
+ buf = gPokemonStorageSystemPtr->unk_120f;
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW
+ buf[2] = 0x0F; // WHITE2
+ buf[3] = 0x00; // TRANSPARENT
+ buf[4] = 0x01; // DARK_GREY
+ buf = gPokemonStorageSystemPtr->unk_120f + 5;
+ buf = StringCopy(buf, gPokemonStorageSystemPtr->unk_11fa);
+ buf = gPokemonStorageSystemPtr->unk_1234;
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW
+ buf[2] = 0x0F; // WHITE2
+ buf[3] = 0x00; // TRANSPARENT
+ buf[4] = 0x01; // DARK_GREY
+ buf[5] = EXT_CTRL_CODE_BEGIN;
+ buf[6] = 0x13; // CLEAR_TO
+ buf[7] = 7;
+ buf[8] = CHAR_SLASH;
+ buf = gPokemonStorageSystemPtr->unk_1234 + 9;
+ buf = StringCopy(buf, gSpeciesNames[gPokemonStorageSystemPtr->unk_11f0]);
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x13; // CLEAR_TO
+ buf[2] = 0x50;
+ buf[3] = EOS;
+ buf = gPokemonStorageSystemPtr->unk_1259;
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW
+ buf[2] = 0x0F; // WHITE2
+ buf[3] = 0x00; // TRANSPARENT
+ buf[4] = 0x01; // DARK_GREY
+ buf[5] = EXT_CTRL_CODE_BEGIN;
+ buf[6] = 0x13; // CLEAR_TO
+ buf[7] = 8;
+ buf = gPokemonStorageSystemPtr->unk_1259 + 8;
+ buf[0] = 0x34; // LV
+ buf = gPokemonStorageSystemPtr->unk_1259 + 9;
+ buf = sub_8072C14(buf, gPokemonStorageSystemPtr->unk_11f8, 0x22, STR_CONV_MODE_RIGHT_ALIGN);
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x11; // CLEAR
+ buf[2] = 8;
+ buf += 3;
+ switch (gender)
+ {
+ case MON_MALE:
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW
+ buf[2] = 0x04; // BLUE
+ buf[3] = 0x00; // TRANSPARENT
+ buf[4] = 0x05; // YELLOW
+ buf[5] = CHAR_MALE;
+ buf += 6;
+ break;
+ case MON_FEMALE:
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW
+ buf[2] = 0x06; // CYAN
+ buf[3] = 0x00; // TRANSPARENT
+ buf[4] = 0x07; // MAGENTA
+ buf[5] = CHAR_FEMALE;
+ buf += 6;
+ break;
+ }
+ buf[0] = EOS;
+ buf = gPokemonStorageSystemPtr->unk_127a;
+ if (gPokemonStorageSystemPtr->unk_11f2)
+ {
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x04; // COLOR_HIGHLIGHT_SHADOW
+ buf[2] = 0x0F; // WHITE2
+ buf[3] = 0x00; // TRANSPARENT
+ buf[4] = 0x01; // DARK_GREY
+ buf = gPokemonStorageSystemPtr->unk_127a + 5;
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x06; // size
+ buf[2] = 0x04;
+ buf = gPokemonStorageSystemPtr->unk_127a + 8;
+ buf = StringCopy(buf, ItemId_GetName(gPokemonStorageSystemPtr->unk_11f2));
+ buf[0] = EXT_CTRL_CODE_BEGIN;
+ buf[1] = 0x07; // UNKNOWN_7;
+ buf += 2;
+ }
+ buf[0] = EOS;
+ }
+}
+
+#ifdef NONMATCHING
+u8 sub_809C464(void)
+{
+ u8 r9;
+ s8 r8 = gUnknown_020384E4;
+ s8 r4 = gUnknown_020384E5;
+ gPokemonStorageSystemPtr->unk_11de = 0;
+ gPokemonStorageSystemPtr->unk_11df = 0;
+ gPokemonStorageSystemPtr->unk_11e3 = 0;
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ r9 = 1;
+ if (gUnknown_020384E5 >= 6)
+ {
+ r4 -= 6;
+ }
+ else
+ {
+ r8 = 2;
+ r4 = 0;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ r9 = 1;
+ r4 += 6;
+ if (r4 >= 30)
+ {
+ r8 = 3;
+ r4 -= 30;
+ r4 /= 3;
+ gPokemonStorageSystemPtr->unk_11de = 1;
+ gPokemonStorageSystemPtr->unk_11e3 = 1;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ r9 = 1;
+ if (gUnknown_020384E5 % 6)
+ r4--;
+ else
+ {
+ gPokemonStorageSystemPtr->unk_11df = -1;
+ r4 += 5;
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ r9 = 1;
+ if ((gUnknown_020384E5 + 1) % 6)
+ r4++;
+ else
+ {
+ gPokemonStorageSystemPtr->unk_11df = 1;
+ r4 -= 5;
+ }
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ r9 = 1;
+ r8 = 2;
+ r4 = 0;
+ }
+ else
+ {
+ if ((gMain.newKeys & A_BUTTON) && sub_809CAB0())
+ {
+ if (gUnknown_020384E9 == 0)
+ return 8;
+ switch (sub_809CE4C(0))
+ {
+ case 1:
+ return 11;
+ case 2:
+ return 12;
+ case 3:
+ return 13;
+ case 4:
+ return 14;
+ case 5:
+ return 15;
+ }
+ }
+ if (gMain.newKeys & B_BUTTON)
+ return 16;
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
+ {
+ if (gMain.heldKeys & L_BUTTON)
+ return 10;
+ if (gMain.heldKeys & R_BUTTON)
+ return 9;
+ }
+ if (gMain.newKeys & SELECT_BUTTON)
+ {
+ sub_809CD88();
+ return 0;
+ }
+ r9 = 0;
+ }
+ if (r9)
+ sub_809AF18(r8, r4);
+ return r9;
+}
+#else
+__attribute__((naked)) u8 sub_809C464(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tldr r0, _0809C4D8 @ =gUnknown_020384E4\n"
+ "\tldrb r0, [r0]\n"
+ "\tmov r8, r0\n"
+ "\tldr r2, _0809C4DC @ =gUnknown_020384E5\n"
+ "\tldrb r4, [r2]\n"
+ "\tldr r0, _0809C4E0 @ =gPokemonStorageSystemPtr\n"
+ "\tldr r1, [r0]\n"
+ "\tldr r0, _0809C4E4 @ =0x000011de\n"
+ "\tadds r7, r1, r0\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r7]\n"
+ "\tldr r3, _0809C4E8 @ =0x000011df\n"
+ "\tadds r5, r1, r3\n"
+ "\tstrb r0, [r5]\n"
+ "\tadds r3, 0x4\n"
+ "\tadds r6, r1, r3\n"
+ "\tstrb r0, [r6]\n"
+ "\tldr r0, _0809C4EC @ =gMain\n"
+ "\tmov r12, r0\n"
+ "\tldrh r1, [r0, 0x30]\n"
+ "\tmovs r0, 0x40\n"
+ "\tands r0, r1\n"
+ "\tadds r3, r2, 0\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C4A0\n"
+ "\tb _0809C62A\n"
+ "_0809C4A0:\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C4F0\n"
+ "\tmovs r1, 0x1\n"
+ "\tmov r9, r1\n"
+ "\tlsls r0, r4, 24\n"
+ "\tmovs r3, 0xC0\n"
+ "\tlsls r3, 19\n"
+ "\tadds r0, r3\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tasrs r0, 24\n"
+ "\tcmp r0, 0x1D\n"
+ "\tbgt _0809C4BE\n"
+ "\tb _0809C648\n"
+ "_0809C4BE:\n"
+ "\tmovs r1, 0x3\n"
+ "\tmov r8, r1\n"
+ "\tsubs r0, 0x1E\n"
+ "\tlsls r0, 24\n"
+ "\tasrs r0, 24\n"
+ "\tbl __divsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tmov r3, r9\n"
+ "\tstrb r3, [r7]\n"
+ "\tstrb r3, [r6]\n"
+ "\tb _0809C648\n"
+ "\t.align 2, 0\n"
+ "_0809C4D8: .4byte gUnknown_020384E4\n"
+ "_0809C4DC: .4byte gUnknown_020384E5\n"
+ "_0809C4E0: .4byte gPokemonStorageSystemPtr\n"
+ "_0809C4E4: .4byte 0x000011de\n"
+ "_0809C4E8: .4byte 0x000011df\n"
+ "_0809C4EC: .4byte gMain\n"
+ "_0809C4F0:\n"
+ "\tmovs r0, 0x20\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C524\n"
+ "\tmovs r0, 0x1\n"
+ "\tmov r9, r0\n"
+ "\tmovs r0, 0\n"
+ "\tldrsb r0, [r3, r0]\n"
+ "\tmovs r1, 0x6\n"
+ "\tbl __modsi3\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C514\n"
+ "\tlsls r0, r4, 24\n"
+ "\tmovs r1, 0xFF\n"
+ "\tlsls r1, 24\n"
+ "\tb _0809C63C\n"
+ "_0809C514:\n"
+ "\tmovs r0, 0xFF\n"
+ "\tstrb r0, [r5]\n"
+ "\tlsls r0, r4, 24\n"
+ "\tmovs r3, 0xA0\n"
+ "\tlsls r3, 19\n"
+ "\tadds r0, r3\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tb _0809C648\n"
+ "_0809C524:\n"
+ "\tmovs r0, 0x10\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C554\n"
+ "\tmovs r0, 0x1\n"
+ "\tmov r9, r0\n"
+ "\tmovs r0, 0\n"
+ "\tldrsb r0, [r3, r0]\n"
+ "\tadds r0, 0x1\n"
+ "\tmovs r1, 0x6\n"
+ "\tbl __modsi3\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C548\n"
+ "\tlsls r0, r4, 24\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 17\n"
+ "\tb _0809C63C\n"
+ "_0809C548:\n"
+ "\tmov r3, r9\n"
+ "\tstrb r3, [r5]\n"
+ "\tlsls r0, r4, 24\n"
+ "\tmovs r1, 0xFB\n"
+ "\tlsls r1, 24\n"
+ "\tb _0809C63C\n"
+ "_0809C554:\n"
+ "\tmov r3, r12\n"
+ "\tldrh r1, [r3, 0x2E]\n"
+ "\tmovs r0, 0x8\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C56A\n"
+ "\tmovs r0, 0x1\n"
+ "\tmov r9, r0\n"
+ "\tmovs r1, 0x2\n"
+ "\tmov r8, r1\n"
+ "\tb _0809C646\n"
+ "_0809C56A:\n"
+ "\tmovs r0, 0x1\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C5D4\n"
+ "\tbl sub_809CAB0\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C5D4\n"
+ "\tldr r0, _0809C588 @ =gUnknown_020384E9\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0809C58C\n"
+ "\tmovs r0, 0x8\n"
+ "\tb _0809C658\n"
+ "\t.align 2, 0\n"
+ "_0809C588: .4byte gUnknown_020384E9\n"
+ "_0809C58C:\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_809CE4C\n"
+ "\tsubs r0, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tasrs r0, 24\n"
+ "\tcmp r0, 0x4\n"
+ "\tbhi _0809C5D4\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0809C5A8 @ =_0809C5AC\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_0809C5A8: .4byte _0809C5AC\n"
+ "\t.align 2, 0\n"
+ "_0809C5AC:\n"
+ "\t.4byte _0809C5C0\n"
+ "\t.4byte _0809C5C4\n"
+ "\t.4byte _0809C5C8\n"
+ "\t.4byte _0809C5CC\n"
+ "\t.4byte _0809C5D0\n"
+ "_0809C5C0:\n"
+ "\tmovs r0, 0xB\n"
+ "\tb _0809C658\n"
+ "_0809C5C4:\n"
+ "\tmovs r0, 0xC\n"
+ "\tb _0809C658\n"
+ "_0809C5C8:\n"
+ "\tmovs r0, 0xD\n"
+ "\tb _0809C658\n"
+ "_0809C5CC:\n"
+ "\tmovs r0, 0xE\n"
+ "\tb _0809C658\n"
+ "_0809C5D0:\n"
+ "\tmovs r0, 0xF\n"
+ "\tb _0809C658\n"
+ "_0809C5D4:\n"
+ "\tldr r2, _0809C5E4 @ =gMain\n"
+ "\tldrh r1, [r2, 0x2E]\n"
+ "\tmovs r0, 0x2\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C5E8\n"
+ "\tmovs r0, 0x10\n"
+ "\tb _0809C658\n"
+ "\t.align 2, 0\n"
+ "_0809C5E4: .4byte gMain\n"
+ "_0809C5E8:\n"
+ "\tldr r0, _0809C600 @ =gSaveBlock2\n"
+ "\tldrb r0, [r0, 0x13]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _0809C612\n"
+ "\tldrh r1, [r2, 0x2C]\n"
+ "\tmovs r0, 0x80\n"
+ "\tlsls r0, 2\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C604\n"
+ "\tmovs r0, 0xA\n"
+ "\tb _0809C658\n"
+ "\t.align 2, 0\n"
+ "_0809C600: .4byte gSaveBlock2\n"
+ "_0809C604:\n"
+ "\tmovs r0, 0x80\n"
+ "\tlsls r0, 1\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C612\n"
+ "\tmovs r0, 0x9\n"
+ "\tb _0809C658\n"
+ "_0809C612:\n"
+ "\tldrh r1, [r2, 0x2E]\n"
+ "\tmovs r0, 0x4\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C624\n"
+ "\tbl sub_809CD88\n"
+ "\tmovs r0, 0\n"
+ "\tb _0809C658\n"
+ "_0809C624:\n"
+ "\tmovs r3, 0\n"
+ "\tmov r9, r3\n"
+ "\tb _0809C656\n"
+ "_0809C62A:\n"
+ "\tmovs r0, 0x1\n"
+ "\tmov r9, r0\n"
+ "\tmovs r0, 0\n"
+ "\tldrsb r0, [r2, r0]\n"
+ "\tcmp r0, 0x5\n"
+ "\tble _0809C642\n"
+ "\tlsls r0, r4, 24\n"
+ "\tmovs r1, 0xFA\n"
+ "\tlsls r1, 24\n"
+ "_0809C63C:\n"
+ "\tadds r0, r1\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tb _0809C648\n"
+ "_0809C642:\n"
+ "\tmovs r3, 0x2\n"
+ "\tmov r8, r3\n"
+ "_0809C646:\n"
+ "\tmovs r4, 0\n"
+ "_0809C648:\n"
+ "\tmov r0, r9\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C656\n"
+ "\tmov r0, r8\n"
+ "\tadds r1, r4, 0\n"
+ "\tbl sub_809AF18\n"
+ "_0809C656:\n"
+ "\tmov r0, r9\n"
+ "_0809C658:\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif
+
+#ifdef NONMATCHING
+u8 sub_809C664(void)
+{
+ s8 r10 = gUnknown_020384E4;
+ s8 r4 = gUnknown_020384E5;
+ u8 r8;
+ u8 r9;
+
+ gPokemonStorageSystemPtr->unk_11df = 0;
+ gPokemonStorageSystemPtr->unk_11de = 0;
+ gPokemonStorageSystemPtr->unk_11e3 = 0;
+ r9 = FALSE;
+ r8 = 0;
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (--r4 < 0)
+ r4 = 6;
+ if (r4 != gUnknown_020384E5)
+ r8 = 1;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if (++r4 > 6)
+ r4 = 0;
+ if (r4 != gUnknown_020384E5)
+ r8 = 1;
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_LEFT) && gUnknown_020384E5)
+ {
+ r8 = 1;
+ gPokemonStorageSystemPtr->unk_11e2 = gUnknown_020384E5;
+ r4 = 0;
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ if (gUnknown_020384E5 == 0)
+ {
+ r8 = 1;
+ r4 = gPokemonStorageSystemPtr->unk_11e2;
+ }
+ else
+ {
+ r8 = 6;
+ r10 = 0;
+ r4 = 0;
+ }
+ }
+ else
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (gUnknown_020384E5 == 6)
+ {
+ if (gPokemonStorageSystemPtr->unk_0005 == 1)
+ return 4;
+ r9 = TRUE;
+ }
+ else if (sub_809CAB0())
+ {
+ if (gUnknown_020384E9 == 0)
+ return 8;
+ switch (sub_809CE4C(0))
+ {
+ case 1:
+ return 11;
+ case 2:
+ return 12;
+ case 3:
+ return 13;
+ case 4:
+ return 14;
+ case 5:
+ return 15;
+ }
+ }
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ if (gPokemonStorageSystemPtr->unk_0005 == 1)
+ return 16;
+ r9 = TRUE;
+ }
+ if (!r9)
+ {
+ r8 = 6;
+ r10 = 0;
+ r4 = 0;
+ }
+ else if (gMain.newKeys & SELECT_BUTTON)
+ {
+ sub_809CD88();
+ return 0;
+ }
+ }
+ if (r8)
+ sub_809AF18(r10, r4);
+ return r8;
+}
+#else
+__attribute__((naked)) u8 sub_809C664(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tldr r0, _0809C6D8 @ =gUnknown_020384E4\n"
+ "\tldrb r0, [r0]\n"
+ "\tmov r10, r0\n"
+ "\tldr r7, _0809C6DC @ =gUnknown_020384E5\n"
+ "\tldrb r4, [r7]\n"
+ "\tldr r2, _0809C6E0 @ =gPokemonStorageSystemPtr\n"
+ "\tldr r5, [r2]\n"
+ "\tldr r1, _0809C6E4 @ =0x000011df\n"
+ "\tadds r0, r5, r1\n"
+ "\tmovs r1, 0\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r3, _0809C6E8 @ =0x000011de\n"
+ "\tadds r0, r5, r3\n"
+ "\tstrb r1, [r0]\n"
+ "\tadds r3, 0x5\n"
+ "\tadds r0, r5, r3\n"
+ "\tstrb r1, [r0]\n"
+ "\tmov r9, r1\n"
+ "\tmov r8, r1\n"
+ "\tldr r1, _0809C6EC @ =gMain\n"
+ "\tldrh r3, [r1, 0x30]\n"
+ "\tmovs r0, 0x40\n"
+ "\tands r0, r3\n"
+ "\tadds r6, r7, 0\n"
+ "\tmov r12, r2\n"
+ "\tadds r2, r1, 0\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C6A8\n"
+ "\tb _0809C81C\n"
+ "_0809C6A8:\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r3\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C6F0\n"
+ "\tlsls r0, r4, 24\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 17\n"
+ "\tadds r0, r1\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tasrs r0, 24\n"
+ "\tcmp r0, 0x6\n"
+ "\tble _0809C6C2\n"
+ "\tmovs r4, 0\n"
+ "_0809C6C2:\n"
+ "\tlsls r0, r4, 24\n"
+ "\tasrs r0, 24\n"
+ "\tmovs r1, 0\n"
+ "\tldrsb r1, [r6, r1]\n"
+ "\tcmp r0, r1\n"
+ "\tbne _0809C6D0\n"
+ "\tb _0809C83C\n"
+ "_0809C6D0:\n"
+ "\tmovs r2, 0x1\n"
+ "\tmov r8, r2\n"
+ "\tb _0809C842\n"
+ "\t.align 2, 0\n"
+ "_0809C6D8: .4byte gUnknown_020384E4\n"
+ "_0809C6DC: .4byte gUnknown_020384E5\n"
+ "_0809C6E0: .4byte gPokemonStorageSystemPtr\n"
+ "_0809C6E4: .4byte 0x000011df\n"
+ "_0809C6E8: .4byte 0x000011de\n"
+ "_0809C6EC: .4byte gMain\n"
+ "_0809C6F0:\n"
+ "\tmovs r0, 0x20\n"
+ "\tands r0, r3\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C714\n"
+ "\tldrb r1, [r6]\n"
+ "\tmovs r0, 0\n"
+ "\tldrsb r0, [r6, r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C714\n"
+ "\tmovs r3, 0x1\n"
+ "\tmov r8, r3\n"
+ "\tldr r2, _0809C710 @ =0x000011e2\n"
+ "\tadds r0, r5, r2\n"
+ "\tstrb r1, [r0]\n"
+ "\tmovs r4, 0\n"
+ "\tb _0809C83C\n"
+ "\t.align 2, 0\n"
+ "_0809C710: .4byte 0x000011e2\n"
+ "_0809C714:\n"
+ "\tldrh r1, [r2, 0x30]\n"
+ "\tmovs r0, 0x10\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C748\n"
+ "\tmovs r0, 0\n"
+ "\tldrsb r0, [r6, r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0809C73C\n"
+ "\tmovs r3, 0x1\n"
+ "\tmov r8, r3\n"
+ "\tmov r1, r12\n"
+ "\tldr r0, [r1]\n"
+ "\tldr r2, _0809C738 @ =0x000011e2\n"
+ "\tadds r0, r2\n"
+ "\tldrb r4, [r0]\n"
+ "\tb _0809C83C\n"
+ "\t.align 2, 0\n"
+ "_0809C738: .4byte 0x000011e2\n"
+ "_0809C73C:\n"
+ "\tmovs r3, 0x6\n"
+ "\tmov r8, r3\n"
+ "\tmovs r0, 0\n"
+ "\tmov r10, r0\n"
+ "\tmovs r4, 0\n"
+ "\tb _0809C83C\n"
+ "_0809C748:\n"
+ "\tldrh r1, [r2, 0x2E]\n"
+ "\tmovs r0, 0x1\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C7D0\n"
+ "\tmovs r0, 0\n"
+ "\tldrsb r0, [r6, r0]\n"
+ "\tcmp r0, 0x6\n"
+ "\tbne _0809C76E\n"
+ "\tmov r1, r12\n"
+ "\tldr r0, [r1]\n"
+ "\tldrb r0, [r0, 0x5]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _0809C768\n"
+ "\tmovs r0, 0x4\n"
+ "\tb _0809C84C\n"
+ "_0809C768:\n"
+ "\tmovs r2, 0x1\n"
+ "\tmov r9, r2\n"
+ "\tb _0809C7D0\n"
+ "_0809C76E:\n"
+ "\tbl sub_809CAB0\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C7D0\n"
+ "\tldr r0, _0809C784 @ =gUnknown_020384E9\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0809C788\n"
+ "\tmovs r0, 0x8\n"
+ "\tb _0809C84C\n"
+ "\t.align 2, 0\n"
+ "_0809C784: .4byte gUnknown_020384E9\n"
+ "_0809C788:\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_809CE4C\n"
+ "\tsubs r0, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tasrs r0, 24\n"
+ "\tcmp r0, 0x4\n"
+ "\tbhi _0809C7D0\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0809C7A4 @ =_0809C7A8\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_0809C7A4: .4byte _0809C7A8\n"
+ "\t.align 2, 0\n"
+ "_0809C7A8:\n"
+ "\t.4byte _0809C7BC\n"
+ "\t.4byte _0809C7C0\n"
+ "\t.4byte _0809C7C4\n"
+ "\t.4byte _0809C7C8\n"
+ "\t.4byte _0809C7CC\n"
+ "_0809C7BC:\n"
+ "\tmovs r0, 0xB\n"
+ "\tb _0809C84C\n"
+ "_0809C7C0:\n"
+ "\tmovs r0, 0xC\n"
+ "\tb _0809C84C\n"
+ "_0809C7C4:\n"
+ "\tmovs r0, 0xD\n"
+ "\tb _0809C84C\n"
+ "_0809C7C8:\n"
+ "\tmovs r0, 0xE\n"
+ "\tb _0809C84C\n"
+ "_0809C7CC:\n"
+ "\tmovs r0, 0xF\n"
+ "\tb _0809C84C\n"
+ "_0809C7D0:\n"
+ "\tldr r2, _0809C7EC @ =gMain\n"
+ "\tldrh r1, [r2, 0x2E]\n"
+ "\tmovs r0, 0x2\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C7F8\n"
+ "\tldr r0, _0809C7F0 @ =gPokemonStorageSystemPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tldrb r0, [r0, 0x5]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _0809C7F4\n"
+ "\tmovs r0, 0x10\n"
+ "\tb _0809C84C\n"
+ "\t.align 2, 0\n"
+ "_0809C7EC: .4byte gMain\n"
+ "_0809C7F0: .4byte gPokemonStorageSystemPtr\n"
+ "_0809C7F4:\n"
+ "\tmovs r3, 0x1\n"
+ "\tmov r9, r3\n"
+ "_0809C7F8:\n"
+ "\tmov r0, r9\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C80A\n"
+ "\tmovs r1, 0x6\n"
+ "\tmov r8, r1\n"
+ "\tmovs r2, 0\n"
+ "\tmov r10, r2\n"
+ "\tmovs r4, 0\n"
+ "\tb _0809C83C\n"
+ "_0809C80A:\n"
+ "\tldrh r1, [r2, 0x2E]\n"
+ "\tmovs r0, 0x4\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0809C83C\n"
+ "\tbl sub_809CD88\n"
+ "\tmovs r0, 0\n"
+ "\tb _0809C84C\n"
+ "_0809C81C:\n"
+ "\tlsls r0, r4, 24\n"
+ "\tmovs r3, 0xFF\n"
+ "\tlsls r3, 24\n"
+ "\tadds r0, r3\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbge _0809C82C\n"
+ "\tmovs r4, 0x6\n"
+ "_0809C82C:\n"
+ "\tlsls r0, r4, 24\n"
+ "\tasrs r0, 24\n"
+ "\tmovs r1, 0\n"
+ "\tldrsb r1, [r7, r1]\n"
+ "\tcmp r0, r1\n"
+ "\tbeq _0809C83C\n"
+ "\tmovs r0, 0x1\n"
+ "\tmov r8, r0\n"
+ "_0809C83C:\n"
+ "\tmov r1, r8\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _0809C84A\n"
+ "_0809C842:\n"
+ "\tmov r0, r10\n"
+ "\tadds r1, r4, 0\n"
+ "\tbl sub_809AF18\n"
+ "_0809C84A:\n"
+ "\tmov r0, r8\n"
+ "_0809C84C:\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif
diff --git a/src/pokemon_storage_system_5.c b/src/pokemon_storage_system_5.c
new file mode 100644
index 000000000..b7c3d42f5
--- /dev/null
+++ b/src/pokemon_storage_system_5.c
@@ -0,0 +1,16 @@
+
+// Includes
+#include "global.h"
+#include "pokemon_storage_system.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+EWRAM_DATA struct UnkStruct_2000020 *gUnknown_020384EC = NULL;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/pokemon/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index c85bed0fb..d4c93b93e 100644
--- a/src/pokemon/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -138,7 +138,6 @@ extern const u8 gUnknown_08E74E88[];
extern const u8 gUnknown_08E73508[];
extern const u8 gStatusScreen_Gfx[];
extern const u8 gFontDefaultPalette[];
-extern const u8 gUnknownPalette_81E6692[];
extern const u8 gAbilityNames[][13];
extern const u8 * const gAbilityDescriptions[];
extern const u8 * const gContestEffectStrings[];
@@ -153,11 +152,11 @@ EWRAM_DATA u8 gUnknown_020384F0 = 0;
EWRAM_DATA struct Sprite *gUnknown_020384F4 = NULL;
#if ENGLISH
-#include "../data/text/move_descriptions_en.h"
-#include "../data/text/nature_names_en.h"
+#include "data/text/move_descriptions_en.h"
+#include "data/text/nature_names_en.h"
#elif GERMAN
-#include "../data/text/move_descriptions_de.h"
-#include "../data/text/nature_names_de.h"
+#include "data/text/move_descriptions_de.h"
+#include "data/text/nature_names_de.h"
#endif
static const u8 * const sPageHeaderTexts[] = {
@@ -566,13 +565,16 @@ static const u8 sUnknown_083C15BC[] = {
-1, 15, 0, 10,
};
-
void sub_809D844(void)
{
RunTasks();
AnimateSprites();
BuildOamBuffer();
UpdatePaletteFade();
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 20, 1, 2, 3);
+#endif
}
void sub_809D85C(void)
@@ -605,13 +607,9 @@ void ShowPokemonSummaryScreen(struct Pokemon *party, u8 monIndex, u8 maxMonIndex
pssData.disableMoveOrderEditing = FALSE;
if (mode >= PSS_MODE_PC_NORMAL)
- {
pssData.usingPC = TRUE;
- }
else
- {
pssData.usingPC = FALSE;
- }
switch (mode)
{
@@ -718,9 +716,7 @@ bool8 sub_809DA84(void)
break;
case 7:
if (MultistepInitMenuWindowContinue())
- {
gMain.state++;
- }
break;
case 8:
sub_809DA1C();
@@ -746,14 +742,9 @@ bool8 sub_809DA84(void)
case 12:
sub_809F678(&pssData.loadedMon);
if (!GetMonStatusAndPokerus(&pssData.loadedMon))
- {
sub_80A12D0(0);
- }
else
- {
sub_80A12D0(10);
- }
-
DrawPokerusSurvivorDot(&pssData.loadedMon);
gMain.state++;
break;
@@ -781,10 +772,7 @@ bool8 sub_809DA84(void)
break;
case 17:
if (pssData.page <= PSS_PAGE_SKILLS)
- {
sUnknown_083C1580[pssData.page]();
- }
-
gMain.state++;
break;
case 18:
@@ -797,14 +785,9 @@ bool8 sub_809DA84(void)
break;
case 20:
if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG))
- {
gBattle_BG3_X = 256;
- }
else
- {
gBattle_BG3_X = 0;
- }
-
gMain.state++;
break;
case 21:
@@ -819,23 +802,23 @@ bool8 sub_809DA84(void)
sub_80A1488(10, 0);
sub_80A1654(10, 0);
}
-
PrintSummaryWindowHeaderText();
gMain.state++;
break;
case 22:
if (sub_8055870() != TRUE)
- {
gMain.state++;
- }
break;
default:
SetVBlankCallback(sub_809D85C);
BeginHardwarePaletteFade(0xFF, 0, 16, 0, 1);
SetMainCallback2(sub_809D844);
gPaletteFade.bufferTransferDisabled = 0;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0xDDE0), 0x8000, (void *)(VRAM + 0xF000), 3);
+#endif
return TRUE;
- break;
}
return FALSE;
@@ -843,7 +826,8 @@ bool8 sub_809DA84(void)
static void sub_809DE44(void)
{
- while (sub_809DA84() != TRUE && sub_80F9344() != TRUE);
+ while (sub_809DA84() != TRUE && sub_80F9344() != TRUE)
+ ;
}
static void sub_809DE64(void)
@@ -925,21 +909,21 @@ static bool8 LoadPokemonSummaryScreenGraphics(void)
static void sub_809E044(void)
{
- LoadPalette(&gUnknownPalette_81E6692[28], 129, 2);
- LoadPalette(&gUnknownPalette_81E6692[30], 136, 2);
- LoadPalette(&gUnknownPalette_81E6692[28], 143, 2);
- LoadPalette(&gUnknownPalette_81E6692[30], 137, 2);
- LoadPalette(&gUnknownPalette_81E6692[12], 209, 4);
- LoadPalette(&gUnknownPalette_81E6692[20], 211, 4);
- LoadPalette(&gUnknownPalette_81E6692[28], 213, 4);
- LoadPalette(&gUnknownPalette_81E6692[12], 215, 4);
- LoadPalette(&gUnknownPalette_81E6692[8], 217, 4);
- LoadPalette(&gUnknownPalette_81E6692[16], 219, 4);
- LoadPalette(&gUnknownPalette_81E6692[4], 221, 2);
- LoadPalette(&gUnknownPalette_81E6692[6], 222, 2);
- LoadPalette(&gUnknownPalette_81E6692[2], 223, 2);
+ LoadPalette(gUnknownPalette_81E6692 + 14, 129, 2);
+ LoadPalette(gUnknownPalette_81E6692 + 15, 136, 2);
+ LoadPalette(gUnknownPalette_81E6692 + 14, 143, 2);
+ LoadPalette(gUnknownPalette_81E6692 + 15, 137, 2);
+ LoadPalette(gUnknownPalette_81E6692 + 6, 209, 4);
+ LoadPalette(gUnknownPalette_81E6692 + 10, 211, 4);
+ LoadPalette(gUnknownPalette_81E6692 + 14, 213, 4);
+ LoadPalette(gUnknownPalette_81E6692 + 6, 215, 4);
+ LoadPalette(gUnknownPalette_81E6692 + 4, 217, 4);
+ LoadPalette(gUnknownPalette_81E6692 + 8, 219, 4);
+ LoadPalette(gUnknownPalette_81E6692 + 2, 221, 2);
+ LoadPalette(gUnknownPalette_81E6692 + 3, 222, 2);
+ LoadPalette(gUnknownPalette_81E6692 + 1, 223, 2);
LoadPalette(gFontDefaultPalette, 240, 32);
- LoadPalette(&gUnknownPalette_81E6692[6], 249, 2);
+ LoadPalette(gUnknownPalette_81E6692 + 3, 249, 2);
}
static void SummaryScreenExit(u8 taskId)
@@ -988,14 +972,9 @@ static void SummaryScreenHandleKeyInput(u8 taskId)
else if (gMain.newKeys & A_BUTTON)
{
if (pssData.page >= PSS_PAGE_BATTLE_MOVES)
- {
SummaryScreenHandleAButton(taskId);
- }
-
if (pssData.page == PSS_PAGE_INFO)
- {
SummaryScreenExit(taskId);
- }
}
else if (gMain.newKeys & B_BUTTON)
{
@@ -1021,10 +1000,7 @@ static void sub_809E260(u8 taskId)
else if ((gMain.newKeys & DPAD_LEFT) || sub_80F9284() == 1)
{
if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0))
- {
Menu_EraseWindowRect(0, 14, 9, 18);
- }
-
SummaryScreenHandleLeftRightInput(taskId, -1);
}
else if ((gMain.newKeys & DPAD_RIGHT) || sub_80F9284() == 2)
@@ -1032,10 +1008,7 @@ static void sub_809E260(u8 taskId)
if (pssData.page != pssData.lastPage)
{
if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0))
- {
Menu_EraseWindowRect(0, 14, 9, 18);
- }
-
SummaryScreenHandleLeftRightInput(taskId, 1);
}
}
@@ -1116,9 +1089,7 @@ static bool8 MonKnowsMultipleMoves(struct Pokemon *mon)
for (i = 1; i < 4; i++)
{
if (GetMonMove(mon, i))
- {
return TRUE;
- }
}
return FALSE;
@@ -1229,13 +1200,9 @@ static void sub_809E83C(u8 taskId, s8 b)
if (pssData.selectedMoveIndex != pssData.switchMoveIndex)
{
if (pssData.usingPC == FALSE)
- {
sub_809E5C4();
- }
else
- {
sub_809E6D8();
- }
pssData.selectedMoveIndex = pssData.switchMoveIndex;
sub_809F678(&pssData.loadedMon);
@@ -1531,36 +1498,24 @@ void sub_809EC38(u8 taskId)
if (pssData.bgToggle == 0)
{
if (pssData.page != PSS_PAGE_INFO)
- {
gBattle_BG2_X = 0x100;
- }
if (pssData.page == PSS_PAGE_SKILLS)
- {
REG_BG2CNT = (REG_BG2CNT & 0xE0FF) + 0x800;
- }
if (pssData.page == PSS_PAGE_BATTLE_MOVES)
- {
REG_BG2CNT = (REG_BG2CNT & 0xE0FF) + 0xA00;
- }
}
else
{
if (pssData.page != PSS_PAGE_INFO)
- {
gBattle_BG1_X = 0x100;
- }
if (pssData.page == PSS_PAGE_SKILLS)
- {
REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0x800;
- }
if (pssData.page == PSS_PAGE_BATTLE_MOVES)
- {
REG_BG1CNT = (REG_BG1CNT & 0xE0FF) + 0xA00;
- }
}
taskData[0]++;
@@ -1602,19 +1557,12 @@ void sub_809EC38(u8 taskId)
else
{
if (pssData.page >= PSS_PAGE_BATTLE_MOVES && (!pssData.disableMoveOrderEditing || pssData.mode == PSS_MODE_NO_MOVE_ORDER_EDIT))
- {
pssData.headerActionTextId = 6;
- }
else if (pssData.page == PSS_PAGE_INFO)
- {
pssData.headerActionTextId = 7;
- }
else
- {
pssData.headerActionTextId = 0;
- }
}
-
taskData[0]++;
break;
case 3:
@@ -1629,26 +1577,21 @@ void sub_809EC38(u8 taskId)
break;
case 5:
if (sub_8055870() != TRUE)
- {
gTasks[taskId].func = gUnknown_03005CF0;
- }
break;
}
}
void sub_809EE74(u8 taskId)
{
- int var1;
- u8 minus2;
s16 *taskData = gTasks[taskId].data;
switch (taskData[0])
{
case 0:
- var1 = pssData.bgToggle;
- if (var1 == 0)
+ if (pssData.bgToggle == 0)
{
- gBattle_BG2_X = pssData.bgToggle;
+ gBattle_BG2_X = 0;
taskData[0]++;
}
else
@@ -1690,27 +1633,20 @@ void sub_809EE74(u8 taskId)
case 2:
if (pssData.bgToggle == 0)
{
- int var2 = gBattle_BG2_X + 0x20;
- gBattle_BG2_X = var2;
- if ((var2 << 16) == 0x1000000)
- {
+ gBattle_BG2_X += 32;
+ if (gBattle_BG2_X == 0x100)
taskData[0]++;
- }
}
else
{
- int var2 = gBattle_BG1_X + 0x20;
- gBattle_BG1_X = var2;
- if ((var2 << 16) == 0x1000000)
- {
+ gBattle_BG1_X += 32;
+ if (gBattle_BG1_X == 0x100)
taskData[0]++;
- }
}
break;
case 3:
pssData.headerTextId = pssData.page + 1;
- minus2 = pssData.mode - 2;
- if (minus2 < 2)
+ if (pssData.mode == 2 || pssData.mode == 3)
{
pssData.headerActionTextId = 0;
sub_80A029C(&pssData.loadedMon);
@@ -1720,19 +1656,12 @@ void sub_809EE74(u8 taskId)
else
{
if (pssData.page >= PSS_PAGE_BATTLE_MOVES && (!pssData.disableMoveOrderEditing || pssData.mode == PSS_MODE_NO_MOVE_ORDER_EDIT))
- {
pssData.headerActionTextId = 6;
- }
else if (pssData.page == PSS_PAGE_INFO)
- {
pssData.headerActionTextId = 7;
- }
else
- {
pssData.headerActionTextId = 0;
- }
}
-
taskData[0]++;
break;
case 4:
@@ -1747,9 +1676,7 @@ void sub_809EE74(u8 taskId)
break;
case 6:
if (sub_8055870() != TRUE)
- {
gTasks[taskId].func = gUnknown_03005CF0;
- }
break;
}
}
@@ -1776,9 +1703,10 @@ static void SummaryScreenHandleLeftRightInput(u8 taskId, s8 direction)
{
if (!GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG))
{
- if (direction == -1 && pssData.page == pssData.firstPage) return;
- if (direction == 1 && pssData.page == pssData.lastPage) return;
-
+ if (direction == -1 && pssData.page == pssData.firstPage)
+ return;
+ if (direction == 1 && pssData.page == pssData.lastPage)
+ return;
if (FindTaskIdByFunc(sub_80A1334) == 0xFF && FindTaskIdByFunc(sub_80A1500) == 0xFF)
{
PlaySE(SE_SELECT);
@@ -2051,11 +1979,8 @@ bool8 sub_809F310(struct Pokemon *mon)
if (GetMonData(mon, MON_DATA_SPECIES))
{
if (pssData.page != PSS_PAGE_INFO || !GetMonData(mon, MON_DATA_IS_EGG))
- {
return TRUE;
- }
}
-
return FALSE;
}
@@ -2065,14 +1990,9 @@ s8 sub_809F344(u8 partyIndex)
{
partyIndex++;
if (partyIndex == PARTY_SIZE)
- {
return -1;
- }
-
if (sub_809F310(&gPlayerParty[sDoubleBattlePartyOrder[partyIndex]]) == TRUE)
- {
return sDoubleBattlePartyOrder[partyIndex];
- }
}
}
@@ -2081,15 +2001,10 @@ s8 sub_809F388(u8 partyIndex)
while (1)
{
if (partyIndex == 0)
- {
return -1;
- }
-
partyIndex--;
if (sub_809F310(&gPlayerParty[sDoubleBattlePartyOrder[partyIndex]]) == TRUE)
- {
return sDoubleBattlePartyOrder[partyIndex];
- }
}
}
@@ -2108,18 +2023,11 @@ s8 sub_809F3CC(s8 direction)
}
if ((direction == -1 && monIndex == 0) || (direction == 1 && monIndex == 5))
- {
return -1;
- }
-
if (direction != 1)
- {
return sub_809F388(monIndex);
- }
else if (monIndex != 5)
- {
return sub_809F344(monIndex);
- }
return -1;
}
@@ -2148,10 +2056,7 @@ void sub_809F43C(u8 taskId)
case 4:
sub_809F678(&pssData.loadedMon);
if (GetMonStatusAndPokerus(&pssData.loadedMon))
- {
sub_80A12D0(2);
- }
-
DrawPokerusSurvivorDot(&pssData.loadedMon);
gMain.state++;
break;
@@ -2160,14 +2065,9 @@ void sub_809F43C(u8 taskId)
{
pssData.loadGfxState = 0;
if (GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG))
- {
gBattle_BG3_X = 256;
- }
else
- {
gBattle_BG3_X = 0;
- }
-
gMain.state++;
}
break;
@@ -2239,7 +2139,7 @@ static void sub_809F678(struct Pokemon *mon)
else
{
struct BoxPokemon *mons = pssData.monList.boxMons;
- sub_803B4B4(&mons[pssData.monIndex], mon);
+ ExpandBoxMon(&mons[pssData.monIndex], mon);
}
}
@@ -2319,10 +2219,7 @@ static bool8 sub_809F7D0(u8 taskId)
sub_809F678(&mon);
move = GetMonMove(&mon, pssData.selectedMoveIndex);
if (IsHMMove(move) == TRUE && pssData.mode != PSS_MODE_UNKNOWN)
- {
return FALSE;
- }
-
return TRUE;
}
@@ -2355,9 +2252,7 @@ void sub_809F814(u8 taskId)
if (pssData.page != PSS_PAGE_BATTLE_MOVES)
{
if (pssData.page == PSS_PAGE_CONTEST_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0))
- {
Menu_EraseWindowRect(0, 14, 9, 18);
- }
gTasks[taskId].func = sub_809E260;
@@ -2371,9 +2266,7 @@ void sub_809F814(u8 taskId)
if (pssData.page != pssData.lastPage)
{
if (pssData.page == PSS_PAGE_BATTLE_MOVES && (pssData.selectedMoveIndex != 4 || pssData.moveToLearn != 0))
- {
Menu_EraseWindowRect(0, 14, 9, 18);
- }
gTasks[taskId].func = sub_809E260;
@@ -2526,9 +2419,7 @@ static void sub_809FBE4(void)
u8 i;
for (i = 0; i < 28; i++)
- {
sub_80A1918(i, 1);
- }
Menu_EraseWindowRect(11, 4, 29, 18);
}
@@ -2550,9 +2441,7 @@ static void sub_809FC34(struct Pokemon *mon)
u8 ability;
for (i = 0; i < 5; i++)
- {
sub_80A1918(i, 1);
- }
Menu_EraseWindowRect(11, 9, 28, 12);
if (GetMonData(mon, MON_DATA_IS_EGG))
@@ -2560,33 +2449,25 @@ static void sub_809FC34(struct Pokemon *mon)
buffer = gStringVar1;
buffer = sub_80A1E58(buffer, 13);
buffer = StringCopy(buffer, gOtherText_OriginalTrainer);
- buffer = StringCopy(buffer, gOtherText_FiveQuestionsAndSlash);
+ buffer = StringCopy(buffer, gOtherText_FiveQuestions);
buffer[0] = EXT_CTRL_CODE_BEGIN;
buffer[1] = 0x13;
buffer[2] = 0x4E;
buffer[3] = EOS;
Menu_PrintText(gStringVar1, 11, 4);
- sub_80A1EF8(gOtherText_FiveQuestionsAndSlash, 13, 193, 32, 1);
+ sub_80A1EF8(gOtherText_FiveQuestions, 13, 193, 32, 1);
sub_80A198C(9, 120, 48, 0);
friendship = GetMonData(mon, MON_DATA_FRIENDSHIP);
if (friendship < 6)
- {
Menu_PrintText(gOtherText_EggAbout, 11, 9);
- }
else if (friendship < 11)
- {
Menu_PrintText(gOtherText_EggSoon, 11, 9);
- }
else if (friendship < 41)
- {
Menu_PrintText(gOtherText_EggSomeTime, 11, 9);
- }
else
- {
Menu_PrintText(gOtherText_EggLongTime, 11, 9);
- }
PokemonSummaryScreen_PrintEggTrainerMemo(mon, 11, 14);
}
@@ -2601,13 +2482,9 @@ static void sub_809FC34(struct Pokemon *mon)
buffer = StringCopy(buffer, gOtherText_OriginalTrainer);
if (GetMonData(mon, MON_DATA_OT_GENDER) == MALE)
- {
buffer = sub_80A1E58(buffer, 9);
- }
else
- {
buffer = sub_80A1E58(buffer, 10);
- }
buffer = StringCopy(buffer, gStringVar2);
buffer[0] = EXT_CTRL_CODE_BEGIN;
@@ -2621,9 +2498,7 @@ static void sub_809FC34(struct Pokemon *mon)
species = GetMonData(mon, MON_DATA_SPECIES);
sub_80A198C(gBaseStats[species].type1, 120, 48, 0);
if (gBaseStats[species].type1 != gBaseStats[species].type2)
- {
sub_80A198C(gBaseStats[species].type2, 160, 48, 1);
- }
ability = GetAbilityBySpecies(GetMonData(mon, MON_DATA_SPECIES), GetMonData(mon, MON_DATA_ALT_ABILITY));
sub_80A1FF8(gAbilityNames[ability], 13, 11, 9);
@@ -2668,9 +2543,7 @@ static void sub_809FF64(struct Pokemon *mon)
u8 *buffer;
for (i = 0; i < 5; i++)
- {
sub_80A1918(i, 1);
- }
heldItem = GetMonData(mon, MON_DATA_HELD_ITEM);
PrintHeldItemName(heldItem, 11, 4);
@@ -2760,13 +2633,9 @@ static void sub_80A015C(struct Pokemon *mon)
else
{
if (pssData.page == PSS_PAGE_BATTLE_MOVES)
- {
sub_80A198C(gBattleMoves[move].type, 87, ((2 * i) + 4) * 8, i);
- }
else
- {
sub_80A198C(gContestMoves[move].contestCategory + 18, 87, ((2 * i) + 4) * 8, i);
- }
sub_80A1FF8(gMoveNames[move], 13, 15, (2 * i) + 4);
GetStringCenterAlignXOffset(1, 24, (2 * i) + 4);
@@ -2822,9 +2691,7 @@ static void sub_80A0390(void)
u8 i;
for (i = 0; i < MAX_MON_MOVES; i++)
- {
Menu_EraseWindowRect(15, (i * 2) + 4, 28, (i * 2) + 5);
- }
}
u16 sub_80A03BC(struct Pokemon *mon, u8 selectedMoveIndex)
@@ -2838,13 +2705,9 @@ u16 sub_80A03BC(struct Pokemon *mon, u8 selectedMoveIndex)
else
{
if (pssData.moveToLearn != 0)
- {
move = pssData.moveToLearn;
- }
else
- {
move = 0xFFFF;
- }
}
return move;
@@ -2871,61 +2734,56 @@ static void sub_80A0428(struct Pokemon *mon, u8 *selectedMoveIndex)
Menu_EraseWindowRect(11, 15, 28, 18);
if (pssData.page == PSS_PAGE_BATTLE_MOVES)
- {
sub_80A046C(move);
- }
else
- {
sub_80A0498(move);
- }
sub_80A03F0(mon, selectedMoveIndex);
}
static void sub_80A046C(u16 move)
{
- if (move == 0xFFFF) return;
-
- Menu_PrintText(gMoveDescriptions[move - 1], 11, 15);
+ if (move != 0xFFFF)
+ Menu_PrintText(gMoveDescriptions[move - 1], 11, 15);
}
static void sub_80A0498(u16 move)
{
- if (move == 0xFFFF) return;
-
- Menu_PrintText(gContestEffectStrings[gContestMoves[move].effect], 11, 15);
+ if (move != 0xFFFF)
+ Menu_PrintText(gContestEffectStrings[gContestMoves[move].effect], 11, 15);
}
static void sub_80A04CC(u16 move)
{
u8 *buffer;
- if (move == 0xFFFF) return;
-
- if (gBattleMoves[move].power <= 1)
- {
- buffer = gStringVar1;
- buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1);
- Menu_PrintText(gStringVar1, 7, 15);
- }
- else
+ if (move != 0xFFFF)
{
- buffer = gStringVar1;
- buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1);
- Menu_PrintText(gStringVar1, 7, 15);
- }
+ if (gBattleMoves[move].power <= 1)
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1);
+ Menu_PrintText(gStringVar1, 7, 15);
+ }
+ else
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C14(buffer, gBattleMoves[move].power, 21, 1);
+ Menu_PrintText(gStringVar1, 7, 15);
+ }
- if (gBattleMoves[move].accuracy == 0)
- {
- buffer = gStringVar1;
- buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1);
- Menu_PrintText(gStringVar1, 7, 17);
- }
- else
- {
- buffer = gStringVar1;
- buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1);
- Menu_PrintText(gStringVar1, 7, 17);
+ if (gBattleMoves[move].accuracy == 0)
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C74(buffer, gOtherText_ThreeDashes2, 21, 1);
+ Menu_PrintText(gStringVar1, 7, 17);
+ }
+ else
+ {
+ buffer = gStringVar1;
+ buffer = sub_8072C14(buffer, gBattleMoves[move].accuracy, 21, 1);
+ Menu_PrintText(gStringVar1, 7, 17);
+ }
}
}
@@ -2941,9 +2799,7 @@ static void sub_80A057C(u16 move)
appeal = gContestEffects[gContestMoves[move].effect].appeal;
if (appeal != 0xFF)
- {
appeal = appeal / 10;
- }
for (i = 0; i < 8; i++)
{
@@ -2951,9 +2807,7 @@ static void sub_80A057C(u16 move)
int and = 3;
int offset = 0x3CC / 2;
if (appeal != 0xFF && i < appeal)
- {
tile = 0x103A;
- }
*(&vramAddr[(i >> 2 << 5) + (i & and)] + offset) = tile;
}
@@ -3177,12 +3031,8 @@ static void PokemonSummaryScreen_PrintTrainerMemo(struct Pokemon *mon, u8 left,
#if ENGLISH
ptr = sub_80A1E9C(ptr, gNatureNames[nature], 14);
-
if (nature != NATURE_BOLD && nature != NATURE_GENTLE)
- {
ptr = StringCopy(ptr, gOtherText_Terminator4);
- }
-
ptr = StringCopy(ptr, gOtherText_Nature);
#elif GERMAN
ptr = StringCopy(gStringVar4, gOtherText_Nature);
@@ -3397,20 +3247,14 @@ static void PrintNumRibbons(struct Pokemon *mon)
static void PrintHeldItemName(u16 itemId, u8 left, u8 top)
{
if (itemId == ITEM_ENIGMA_BERRY
- && sub_80F9344() == TRUE
- && IsLinkDoubleBattle() == TRUE
- && (pssData.monIndex == 1 || pssData.monIndex == 4 || pssData.monIndex == 5))
- {
- StringCopy(gStringVar1, ItemId_GetItem(itemId)->name);
- }
+ && sub_80F9344() == TRUE
+ && IsLinkDoubleBattle() == TRUE
+ && (pssData.monIndex == 1 || pssData.monIndex == 4 || pssData.monIndex == 5))
+ StringCopy(gStringVar1, ItemId_GetName(itemId));
else if (itemId == 0)
- {
StringCopy(gStringVar1, gOtherText_None);
- }
else
- {
CopyItemName(itemId, gStringVar1);
- }
Menu_PrintText(sUnknown_083C15B4, left, top);
}
@@ -3466,13 +3310,9 @@ static void DrawExperienceProgressBar(struct Pokemon *mon, u8 left, u8 top)
u16 baseTile = 0x2062;
if (numExpProgressBarTicks > 7)
- {
tile = 0x206A; // full exp. bar block
- }
else
- {
tile = (numExpProgressBarTicks % 8) + baseTile;
- }
vramAddr[i] = tile;
@@ -4128,13 +3968,9 @@ static void sub_80A12D0(s8 a)
gTasks[newTaskId].data[0] = a;
if (a < 0)
- {
gTasks[newTaskId].data[1] = 10;
- }
else
- {
gTasks[newTaskId].data[1] = 0;
- }
gTasks[newTaskId].data[2] = 1;
}
@@ -4386,26 +4222,18 @@ static void sub_80A1488(s8 a, u8 b)
u8 taskId;
if (pssData.page == PSS_PAGE_BATTLE_MOVES)
- {
Menu_EraseWindowRect(0, 14, 9, 19);
- }
taskId = FindTaskIdByFunc(sub_80A1334);
if (taskId == 0xFF)
- {
taskId = CreateTask(sub_80A1334, 0);
- }
- gTasks[taskId].data[0] = (s8)a;
+ gTasks[taskId].data[0] = a;
- if ((s8)a < 0)
- {
+ if (a < 0)
gTasks[taskId].data[1] = 10;
- }
else
- {
gTasks[taskId].data[1] = 0;
- }
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[3] = b;
@@ -4588,26 +4416,18 @@ static void sub_80A1654(s8 a, u8 b)
u8 taskId;
if (pssData.page == PSS_PAGE_CONTEST_MOVES)
- {
Menu_EraseWindowRect(0, 14, 9, 19);
- }
taskId = FindTaskIdByFunc(sub_80A1500);
if (taskId == 0xFF)
- {
taskId = CreateTask(sub_80A1500, 0);
- }
- gTasks[taskId].data[0] = (s8)a;
+ gTasks[taskId].data[0] = a;
- if ((s8)a < 0)
- {
+ if (a < 0)
gTasks[taskId].data[1] = 10;
- }
else
- {
gTasks[taskId].data[1] = 0;
- }
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[3] = b;
@@ -4845,13 +4665,9 @@ u8 sub_80A1808(struct Pokemon *mon)
gSprites[spriteId].callback = sub_80A1888;
if (!IsPokeSpriteNotFlipped(species))
- {
- gSprites[spriteId].hFlip = 1;
- }
+ gSprites[spriteId].hFlip = TRUE;
else
- {
- gSprites[spriteId].hFlip = 0;
- }
+ gSprites[spriteId].hFlip = FALSE;
return spriteId;
}
@@ -4863,9 +4679,7 @@ static void sub_80A1888(struct Sprite *sprite)
sprite->callback = SpriteCallbackDummy;
if (!GetMonData(&pssData.loadedMon, MON_DATA_IS_EGG))
- {
PlayCry1(sprite->data[0], 0);
- }
}
}
@@ -4874,9 +4688,7 @@ static void sub_80A18C4(void)
u8 i;
for (i = 0; i < 30; i++)
- {
ewram1A000[i] = 0xFF;
- }
}
static void sub_80A18E4(u8 a)
@@ -4900,9 +4712,7 @@ static void sub_80A1950(void)
for (i = 0; i < 5; i++)
{
if (ewram1A000[i] == 0xFF)
- {
ewram1A000[i] = CreateSprite(&sSpriteTemplate_83C11C0, 0, 0, 2);
- }
sub_80A1918(i, 1);
}
@@ -4928,9 +4738,7 @@ static void sub_80A1A30(u8 a)
if (pssData.page >= PSS_PAGE_BATTLE_MOVES)
{
if (a == 9)
- {
subPriority = 1;
- }
for (i = 0; i < 10; i++)
{
@@ -4938,17 +4746,11 @@ static void sub_80A1A30(u8 a)
ewram1A000[a + i] = CreateSprite(&sSpriteTemplate_83C1280, x, 40, subPriority);
if (i == 0)
- {
StartSpriteAnim(&gSprites[ewram1A000[a]], 4);
- }
else if (i == 9)
- {
StartSpriteAnim(&gSprites[ewram1A000[a + i]], 5);
- }
else
- {
StartSpriteAnim(&gSprites[ewram1A000[a + i]], 6);
- }
gSprites[ewram1A000[a + i]].callback = sub_80A1BC0;
gSprites[ewram1A000[a + i]].data[0] = a;
@@ -4962,9 +4764,7 @@ static void sub_80A1B1C(u8 a)
u8 i;
for (i = 0; i < 10; i++)
- {
sub_80A18E4(a + i);
- }
}
static void sub_80A1B40(u8 a)
@@ -4975,28 +4775,21 @@ static void sub_80A1B40(u8 a)
StartSpriteAnim(&gSprites[ewram1A000[9]], a + 4);
for (i = 0; i < 8; i++)
- {
StartSpriteAnim(&gSprites[ewram1A000[10 + i]], a + 6);
- }
StartSpriteAnim(&gSprites[ewram1A000[18]], a + 5);
}
static void sub_80A1BC0(struct Sprite *sprite)
{
- u8 animNum = sprite->animNum - 4;
- if (animNum < 3)
+ if (sprite->animNum == 4 || sprite->animNum == 5 || sprite->animNum == 6)
{
sprite->data[1] = (sprite->data[1] + 1) & 0x1F;
if (sprite->data[1] > 24)
- {
- sprite->invisible = 1;
- }
+ sprite->invisible = TRUE;
else
- {
- sprite->invisible = 0;
- }
+ sprite->invisible = FALSE;
}
else
{
@@ -5005,69 +4798,23 @@ static void sub_80A1BC0(struct Sprite *sprite)
}
if (sprite->data[0] == 9)
- {
sprite->pos2.y = pssData.selectedMoveIndex * 16;
- }
else
- {
sprite->pos2.y = pssData.switchMoveIndex * 16;
- }
}
-__attribute__((naked))
+#define shared1A009 ((u8 *)(gSharedMem + 0x1A009))
+
void sub_80A1C30(u8 a)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- lsls r0, r4, 2\n\
- adds r0, r4\n\
- lsls r0, 25\n\
- lsrs r3, r0, 24\n\
- adds r4, r3, 0\n\
- adds r0, r3, 0\n\
- adds r0, 0xA\n\
- cmp r3, r0\n\
- bge _080A1C82\n\
- ldr r5, _080A1C88 @ =gSprites\n\
- movs r7, 0x5\n\
- negs r7, r7\n\
- ldr r6, _080A1C8C @ =gSharedMem + 0x1A009\n\
-_080A1C50:\n\
- adds r2, r3, r6\n\
- ldrb r1, [r2]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r5\n\
- movs r1, 0\n\
- strh r1, [r0, 0x30]\n\
- ldrb r0, [r2]\n\
- lsls r1, r0, 4\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r5\n\
- adds r1, 0x3E\n\
- ldrb r2, [r1]\n\
- adds r0, r7, 0\n\
- ands r0, r2\n\
- strb r0, [r1]\n\
- adds r0, r3, 0x1\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- adds r0, r4, 0\n\
- adds r0, 0xA\n\
- cmp r3, r0\n\
- blt _080A1C50\n\
-_080A1C82:\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080A1C88: .4byte gSprites\n\
-_080A1C8C: .4byte gSharedMem + 0x1A009\n\
- .syntax divided\n");
+ u8 r3;
+
+ a *= 10;
+ for (r3 = a; r3 < a + 10; r3++)
+ {
+ gSprites[shared1A009[r3]].data[1] = 0;
+ gSprites[shared1A009[r3]].invisible = FALSE;
+ }
}
u8 pokemon_ailments_get_primary(u32 status)
@@ -5091,21 +4838,15 @@ u8 GetMonStatusAndPokerus(struct Pokemon *mon)
u8 statusAilment;
if (GetMonData(mon, MON_DATA_HP) == 0)
- {
return 7;
- }
statusAilment = pokemon_ailments_get_primary(GetMonData(mon, MON_DATA_STATUS));
if (statusAilment == 0)
{
if (!CheckPartyPokerus(mon, 0))
- {
return 0;
- }
else
- {
return 6;
- }
}
return statusAilment;
@@ -5126,9 +4867,7 @@ void sub_80A1D18(void)
statusAndPkrs2 = statusAndPkrs - 1;
if (ewram1A000[29] == 0xFF)
- {
ewram1A000[29] = CreateSprite(&sSpriteTemplate_83C1304, 64, 152, 0);
- }
}
else
{
@@ -5234,10 +4973,9 @@ static u8 *sub_80A1E58(u8 *text, u8 id)
if (id != 0xFF)
{
const u8 *ptr = sUnknown_083C15BC;
+
while (*ptr != 0xFF && *ptr != id)
- {
ptr += 4;
- }
text[0] = EXT_CTRL_CODE_BEGIN;
text[1] = 4;
@@ -5307,9 +5045,7 @@ u8 *PokemonSummaryScreen_CopyPokemonLevel(u8 *dest, u8 level)
dest++;
if (level == 0)
- {
level = 5;
- }
ConvertIntToDecimalString(buffer, level);
dest = sub_80A1E9C(dest, buffer, 14);
@@ -5328,7 +5064,5 @@ static void sub_80A2078(int taskId)
static void sub_80A20A8(u8 taskId)
{
if (sub_8055870() != TRUE)
- {
gTasks[taskId].func = gUnknown_03005CF0;
- }
}
diff --git a/src/pokenav.c b/src/pokenav.c
new file mode 100644
index 000000000..f57a98df6
--- /dev/null
+++ b/src/pokenav.c
@@ -0,0 +1,16 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+EWRAM_DATA u8 gUnknown_020388B0[4] = {};
+EWRAM_DATA u16 gUnknown_020388B4 = 0;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/pokenav_before.c b/src/pokenav_before.c
index b31be2ce1..4f7eb66b4 100644
--- a/src/pokenav_before.c
+++ b/src/pokenav_before.c
@@ -20,8 +20,6 @@
#include "text.h"
#include "scanline_effect.h"
-extern u8 ewram[];
-
struct UnknownPokenav0
{
/* 0x0000 */ u8 var0[0x0300];
@@ -102,7 +100,6 @@ extern const u16 gPokenavConditionSearch2_Pal[];
extern const u8 gUnknown_083E0334[];
extern const u16 gUnknown_083E02B4[];
extern const u8 gPokenavConditionSearch2_Gfx[];
-extern const u8 gUnknownPalette_81E6692[];
extern const u8 gUnknown_083E0254[];
extern const u8 gUnknown_08E9FEB4[];
extern const u8 gUnknown_083E01AC[];
@@ -132,6 +129,10 @@ extern const u8 gUnknown_08E99FB0[];
extern const u8 gUnknown_08E9A100[];
extern const u16 gPokenavHoennMap1_Pal[];
+// TODO: decompile the debug code so the compiler doesn't complain about
+// unused static functions
+#define static
+
static void sub_80EBCA8();
static void sub_80EEE20();
static bool8 sub_80EEE54();
@@ -297,7 +298,6 @@ extern void sub_80F19FC();
extern u16 gKeyRepeatStartDelay;
-
void sub_80EBA5C()
{
switch (gMain.state)
@@ -552,6 +552,10 @@ void sub_80EBDD8()
{
sub_80EF428(0, 0);
sub_80EBDBC(&sub_80EC268);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
}
break;
}
@@ -626,6 +630,10 @@ void sub_80EC00C()
{
sub_80EF428(0, ewram0_10.var6dad);
sub_80EBDBC(&sub_80EC268);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
}
break;
}
@@ -827,6 +835,10 @@ void sub_80EC4A0()
break;
case 0xD:
sub_80EED2C(0x1);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x75E0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
ewram0_10.var304++;
break;
case 0xE:
@@ -906,6 +918,10 @@ void sub_80EC67C()
}
break;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 1, 2, 4);
+#endif
}
void sub_80EC81C()
@@ -1011,23 +1027,23 @@ void sub_80ECA10()
SetVBlankCallback(&sub_80EBD80);
sub_80EED1C();
ewram0_10.var6dad = ewram0_10.var6df0;
- ewram0_10.var6dae = 0x3;
+ ewram0_10.var6dae = 3;
sub_80EEE08();
ewram0_10.var304++;
}
break;
case 1:
- sub_80EF248(0x1);
+ sub_80EF248(1);
ewram0_10.var304++;
case 2:
- if (!sub_80EF284(0x1))
+ if (!sub_80EF284(1))
ewram0_10.var304++;
break;
case 3:
- sub_80F1B8C(0x1);
+ sub_80F1B8C(1);
ewram0_10.var304++;
case 4:
- if (!sub_80F1BC8(0x1))
+ if (!sub_80F1BC8(1))
ewram0_10.var304++;
break;
case 5:
@@ -1051,23 +1067,27 @@ void sub_80ECA10()
if (!gPaletteFade.active)
ewram0_10.var304++;
break;
- case 0xA:
- sub_80F2C80(0x1);
+ case 10:
+ sub_80F2C80(1);
ewram0_10.var304++;
// fall through
- case 0xB:
- if (!sub_80F2CBC(0x1))
+ case 11:
+ if (!sub_80F2CBC(1))
ewram0_10.var304++;
break;
- case 0xC:
+ case 12:
sub_80F1DF0();
ewram0_10.var304++;
break;
- case 0xD:
+ case 13:
if (!sub_80F1E50())
{
sub_80EF428(1, ewram0_10.var6dad);
sub_80EBDBC(&sub_80EC86C);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
}
break;
}
@@ -1229,6 +1249,10 @@ void sub_80ECD80()
{
sub_80EF428(2, ewram0_10.var6dad);
sub_80EBDBC(&sub_80ECC08);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
}
break;
}
@@ -1338,7 +1362,13 @@ void sub_80ED01C()
// fall through
case 19:
if (!sub_80F2CBC(ewram0_10.var6dfc + 7))
+ {
sub_80EBDBC(&sub_80ED31C);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
+ }
break;
}
}
@@ -1353,21 +1383,23 @@ void sub_80ED31C()
case 1:
PlaySE(SE_SELECT);
ShowMapNamePopUpWindow();
- break;
+ return;
case 2:
PlaySE(SE_SELECT);
ewram0_10.var304++;
- break;
+ return;
default:
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80ED4D8);
+ return;
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80ECD80);
+ return;
}
break;
}
@@ -1385,6 +1417,10 @@ void sub_80ED31C()
ewram0_10.var304 = 0;
break;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 8, 2, 4);
+#endif
}
void sub_80ED3D0()
@@ -1425,6 +1461,10 @@ void sub_80ED3D0()
case 7:
sub_80EED2C(0x4);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
break;
case 8:
if (!gPaletteFade.active)
@@ -1476,6 +1516,10 @@ void sub_80ED4D8()
case 7:
sub_80EED2C(0x2);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4);
+#endif
break;
case 8:
if (!gPaletteFade.active)
@@ -1569,7 +1613,13 @@ void sub_80ED620()
// fall through
case 16:
if (!sub_80F2CBC(0x6))
+ {
sub_80EBDBC(&sub_80ED858);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4);
+#endif
+ }
break;
}
}
@@ -1742,8 +1792,433 @@ label2:
}
#else
+#if DEBUG
__attribute__((naked))
-void sub_80ED858() {
+void sub_80ED858()
+{
+ asm("\
+ push {r4, r5, lr}\n\
+ add sp, sp, #0xfffffffc\n\
+ ldr r1, ._917 @ gSharedMem\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ add r5, r1, #0\n\
+ cmp r0, #0xb\n\
+ bls ._915 @cond_branch\n\
+ b ._999\n\
+._915:\n\
+ lsl r0, r0, #0x2\n\
+ ldr r1, ._917 + 4 @ \n\
+ add r0, r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+._918:\n\
+ .align 2, 0\n\
+._917:\n\
+ .word gSharedMem\n\
+ .word ._919\n\
+._919:\n\
+ .word ._920\n\
+ .word ._921\n\
+ .word ._922\n\
+ .word ._923\n\
+ .word ._924\n\
+ .word ._925\n\
+ .word ._926\n\
+ .word ._927\n\
+ .word ._928\n\
+ .word ._929\n\
+ .word ._999\n\
+ .word ._931\n\
+._920:\n\
+ bl sub_80F4F78\n\
+ bl sub_80F5B38\n\
+ ldr r0, ._933 @ gSharedMem\n\
+ mov r4, #0xc1\n\
+ lsl r4, r4, #0x2\n\
+ add r0, r0, r4\n\
+ mov r1, #0x1\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._934:\n\
+ .align 2, 0\n\
+._933:\n\
+ .word gSharedMem\n\
+._921:\n\
+ bl sub_80F5B50\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._935 @cond_branch\n\
+ b ._999\n\
+._935:\n\
+ ldr r0, ._938 @ gSharedMem\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ mov r1, #0x2\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._939:\n\
+ .align 2, 0\n\
+._938:\n\
+ .word gSharedMem\n\
+._922:\n\
+ mov r0, #0x1\n\
+ bl sub_80F0174\n\
+ ldr r0, ._941 @ gSharedMem\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r0, r2\n\
+ mov r1, #0x3\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._942:\n\
+ .align 2, 0\n\
+._941:\n\
+ .word gSharedMem\n\
+._923:\n\
+ bl sub_80F4FB4\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._943 @cond_branch\n\
+ b ._999\n\
+._943:\n\
+ bl sub_80F3C94\n\
+ bl sub_80F3D00\n\
+ b ._945\n\
+._924:\n\
+ ldr r2, ._951 @ gMain\n\
+ ldrh r1, [r2, #0x2c]\n\
+ mov r0, #0x40\n\
+ and r0, r0, r1\n\
+ add r3, r2, #0\n\
+ cmp r0, #0\n\
+ beq ._949 @cond_branch\n\
+ ldr r1, ._951 + 4 @ 0x87cb\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._949 @cond_branch\n\
+ ldr r2, ._951 + 8 @ 0x76aa\n\
+ add r0, r5, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._948 @cond_branch\n\
+ ldr r4, ._951 + 12 @ 0x87dc\n\
+ add r0, r5, r4\n\
+ mov r1, #0x0\n\
+ ldsh r0, [r0, r1]\n\
+ cmp r0, #0\n\
+ beq ._949 @cond_branch\n\
+._948:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0x1\n\
+ bl sub_80F5060\n\
+ bl move_anim_execute\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r5, r2\n\
+ b ._950\n\
+._952:\n\
+ .align 2, 0\n\
+._951:\n\
+ .word gMain\n\
+ .word 0x87cb\n\
+ .word 0x76aa\n\
+ .word 0x87dc\n\
+._949:\n\
+ ldrh r1, [r3, #0x2c]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ beq ._956 @cond_branch\n\
+ ldr r4, ._958 @ 0x87cb\n\
+ add r0, r5, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._956 @cond_branch\n\
+ ldr r1, ._958 + 4 @ 0x76aa\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._955 @cond_branch\n\
+ ldr r2, ._958 + 8 @ 0x87dc\n\
+ add r0, r5, r2\n\
+ sub r4, r4, #0x57\n\
+ add r1, r5, r4\n\
+ mov r4, #0x0\n\
+ ldsh r2, [r0, r4]\n\
+ mov r4, #0x0\n\
+ ldsh r0, [r1, r4]\n\
+ cmp r2, r0\n\
+ bge ._956 @cond_branch\n\
+._955:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0x0\n\
+ bl sub_80F5060\n\
+ bl move_anim_execute\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r5, r0\n\
+._950:\n\
+ mov r0, #0x5\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._959:\n\
+ .align 2, 0\n\
+._958:\n\
+ .word 0x87cb\n\
+ .word 0x76aa\n\
+ .word 0x87dc\n\
+._956:\n\
+ ldrh r2, [r3, #0x2e]\n\
+ mov r0, #0x2\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ beq ._960 @cond_branch\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ bl sub_80F4FDC\n\
+ bl move_anim_execute\n\
+ ldr r0, ._962 @ gSharedMem\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ mov r1, #0x9\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._963:\n\
+ .align 2, 0\n\
+._962:\n\
+ .word gSharedMem\n\
+._960:\n\
+ mov r0, #0x1\n\
+ and r0, r0, r2\n\
+ cmp r0, #0\n\
+ bne ._964 @cond_branch\n\
+ b ._999\n\
+._964:\n\
+ add r4, r5, #0\n\
+ ldr r2, ._970 @ 0x76aa\n\
+ add r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._966 @cond_branch\n\
+ ldr r1, ._970 + 4 @ 0x87dc\n\
+ add r0, r4, r1\n\
+ mov r2, #0x0\n\
+ ldsh r1, [r0, r2]\n\
+ ldr r2, ._970 + 8 @ 0x87da\n\
+ add r0, r4, r2\n\
+ mov r2, #0x0\n\
+ ldsh r0, [r0, r2]\n\
+ sub r0, r0, #0x1\n\
+ cmp r1, r0\n\
+ beq ._967 @cond_branch\n\
+ b ._999\n\
+._967:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r0, #0xc1\n\
+ lsl r0, r0, #0x2\n\
+ add r1, r4, r0\n\
+ mov r0, #0x9\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._971:\n\
+ .align 2, 0\n\
+._970:\n\
+ .word 0x76aa\n\
+ .word 0x87dc\n\
+ .word 0x87da\n\
+._966:\n\
+ ldr r1, ._975 @ 0x6dac\n\
+ add r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ beq ._972 @cond_branch\n\
+ b ._999\n\
+._972:\n\
+ mov r0, #0x5\n\
+ bl PlaySE\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r5, r2\n\
+ mov r0, #0x7\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._976:\n\
+ .align 2, 0\n\
+._975:\n\
+ .word 0x6dac\n\
+._925:\n\
+ bl gpu_sync_bg_show\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ beq ._977 @cond_branch\n\
+ b ._999\n\
+._977:\n\
+ bl sub_80F3D00\n\
+ ldr r0, ._980 @ gSharedMem\n\
+ mov r4, #0xc1\n\
+ lsl r4, r4, #0x2\n\
+ add r0, r0, r4\n\
+ mov r1, #0x6\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._981:\n\
+ .align 2, 0\n\
+._980:\n\
+ .word gSharedMem\n\
+._926:\n\
+ bl sub_8055870\n\
+ cmp r0, #0\n\
+ bne ._999 @cond_branch\n\
+ ldr r0, ._984 @ gSharedMem\n\
+ mov r1, #0xc1\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r0, r1\n\
+ b ._983\n\
+._985:\n\
+ .align 2, 0\n\
+._984:\n\
+ .word gSharedMem\n\
+._927:\n\
+ mov r0, #0x3\n\
+ bl sub_80EEFBC\n\
+ bl sub_80F3668\n\
+ ldr r0, ._987 @ gSharedMem\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r0, r0, r2\n\
+ mov r1, #0x8\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._988:\n\
+ .align 2, 0\n\
+._987:\n\
+ .word gSharedMem\n\
+._928:\n\
+ bl sub_80F7500\n\
+ lsl r0, r0, #0x18\n\
+ cmp r0, #0\n\
+ bne ._999 @cond_branch\n\
+ mov r0, #0x2\n\
+ bl sub_80EEFBC\n\
+ bl sub_80F3698\n\
+._945:\n\
+ ldr r0, ._991 @ gSharedMem\n\
+ mov r4, #0xc1\n\
+ lsl r4, r4, #0x2\n\
+ add r0, r0, r4\n\
+._983:\n\
+ mov r1, #0x4\n\
+ strh r1, [r0]\n\
+ b ._999\n\
+._992:\n\
+ .align 2, 0\n\
+._991:\n\
+ .word gSharedMem\n\
+._929:\n\
+ bl sub_80F5038\n\
+ lsl r0, r0, #0x18\n\
+ lsr r4, r0, #0x18\n\
+ cmp r4, #0\n\
+ bne ._999 @cond_branch\n\
+ mov r0, #0x0\n\
+ bl sub_80F0174\n\
+ bl sub_80F2F48\n\
+ ldr r5, ._995 @ gSharedMem\n\
+ mov r1, #0xc2\n\
+ lsl r1, r1, #0x2\n\
+ add r0, r5, r1\n\
+ ldr r0, [r0]\n\
+ mov r1, #0x1\n\
+ neg r1, r1\n\
+ str r4, [sp]\n\
+ mov r2, #0x0\n\
+ mov r3, #0x10\n\
+ bl BeginNormalPaletteFade\n\
+ mov r2, #0xc1\n\
+ lsl r2, r2, #0x2\n\
+ add r1, r5, r2\n\
+ mov r0, #0xb\n\
+ strh r0, [r1]\n\
+ b ._999\n\
+._996:\n\
+ .align 2, 0\n\
+._995:\n\
+ .word gSharedMem\n\
+._931:\n\
+ ldr r0, ._1000 @ gPaletteFade\n\
+ ldrb r1, [r0, #0x7]\n\
+ mov r0, #0x80\n\
+ and r0, r0, r1\n\
+ cmp r0, #0\n\
+ bne ._999 @cond_branch\n\
+ bl sub_80F3CE8\n\
+ bl sub_80F5BDC\n\
+ ldr r0, ._1000 + 4 @ gSharedMem\n\
+ ldr r4, ._1000 + 8 @ 0x76aa\n\
+ add r0, r0, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0\n\
+ bne ._998 @cond_branch\n\
+ bl sub_80F357C\n\
+ mov r0, #0x1\n\
+ bl sub_80F2D6C\n\
+ mov r0, #0x6\n\
+ bl sub_80F2D6C\n\
+ ldr r0, ._1000 + 12 @ sub_80ECA10\n\
+ bl sub_80EBDBC\n\
+ b ._999\n\
+._1001:\n\
+ .align 2, 0\n\
+._1000:\n\
+ .word gPaletteFade\n\
+ .word gSharedMem\n\
+ .word 0x76aa\n\
+ .word sub_80ECA10+1\n\
+._998:\n\
+ bl sub_80F3614\n\
+ ldr r0, ._1003 @ sub_80ED3D0\n\
+ bl sub_80EBDBC\n\
+._999:\n\
+ ldr r0, ._1003 + 4 @ gLinkOpen\n\
+ ldrb r0, [r0]\n\
+ cmp r0, #0x1\n\
+ bne ._1002 @cond_branch\n\
+ ldr r0, ._1003 + 8 @ gLink\n\
+ ldr r1, ._1003 + 12 @ 0xfbd\n\
+ add r0, r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r1, #0x4\n\
+ str r1, [sp]\n\
+ mov r1, #0x9\n\
+ mov r2, #0x6\n\
+ mov r3, #0x2\n\
+ bl debug_sub_8008264\n\
+._1002:\n\
+ add sp, sp, #0x4\n\
+ pop {r4, r5}\n\
+ pop {r0}\n\
+ bx r0\n\
+._1004:\n\
+ .align 2, 0\n\
+._1003:\n\
+ .word sub_80ED3D0+1\n\
+ .word gLinkOpen\n\
+ .word gLink\n\
+ .word 0xfbd");
+}
+#else
+__attribute__((naked))
+void sub_80ED858()
+{
asm_unified("push {r4,r5,lr}\n\
sub sp, 0x4\n\
ldr r1, _080ED878 @ =gSharedMem\n\
@@ -2114,6 +2589,7 @@ _080EDB7A:\n\
_080EDB84: .4byte sub_80ED3D0\n");
}
#endif
+#endif
void sub_80EDB88()
{
@@ -2198,6 +2674,10 @@ void sub_80EDB88()
case 16:
sub_80EED2C(0x4);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
break;
case 17:
if (!gPaletteFade.active)
@@ -2216,21 +2696,23 @@ void sub_80EDDBC()
case 1:
PlaySE(SE_SELECT);
ShowMapNamePopUpWindow();
- break;
+ return;
case 2:
PlaySE(SE_SELECT);
ewram0_10.var304++;
- break;
+ return;
default:
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80EDEE4);
+ return;
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80EDE70);
+ return;
}
break;
}
@@ -2247,8 +2729,11 @@ void sub_80EDDBC()
if (!sub_8055870())
ewram0_10.var304 = 0;
break;
-
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 8, 2, 4);
+#endif
}
void sub_80EDE70()
@@ -2320,6 +2805,10 @@ void sub_80EDEE4()
case 8:
sub_80EED2C(0x3);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF000), 4);
+#endif
break;
case 9:
if (!gPaletteFade.active)
@@ -2392,7 +2881,7 @@ void sub_80EE06C()
PlaySE(SE_SELECT);
sub_80F3B94();
ewram0_10.var304 = 0x7;
- break;
+ return;
default:
case 0:
if (gMain.newKeys & B_BUTTON)
@@ -2416,6 +2905,10 @@ void sub_80EE06C()
}
break;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 4, 2, 4);
+#endif
}
void sub_80EE294()
@@ -2461,6 +2954,10 @@ void sub_80EE294()
case 7:
sub_80EED2C(0x4);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
break;
case 8:
if (!gPaletteFade.active)
@@ -2537,6 +3034,10 @@ void sub_80EE3D8()
case 12:
sub_80EED2C(0x5);
ewram0_10.var304++;
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0x7DE0), 0, (void *)(VRAM + 0xF800), 4);
+#endif
break;
case 13:
if (!gPaletteFade.active)
@@ -2555,21 +3056,23 @@ void sub_80EE58C()
case 1:
PlaySE(SE_SELECT);
sub_80F0FFC(ewram0_10.var876E);
- break;
+ return;
case 2:
PlaySE(SE_SELECT);
ewram0_10.var304++;
- break;
+ return;
default:
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80EE658);
+ return;
}
else if (gMain.newKeys & B_BUTTON)
{
PlaySE(SE_SELECT);
sub_80EBDBC(&sub_80EE8F4);
+ return;
}
break;
}
@@ -2587,6 +3090,10 @@ void sub_80EE58C()
ewram0_10.var304 = 0;
break;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 3, 2, 4);
+#endif
}
void sub_80EE658()
@@ -3038,6 +3545,10 @@ bool8 sub_80EEC10()
} while (!ewram0_10.var6db2[ewram0_11.var6dad]);
return TRUE;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 6, 10, 2, 4);
+#endif
return FALSE;
}
@@ -3055,6 +3566,10 @@ bool8 sub_80EEC90()
ewram0_11.var6dad = 0;
return TRUE;
}
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 6, 10, 2, 4);
+#endif
return FALSE;
}
diff --git a/src/engine/random.c b/src/random.c
index 8f82b722f..8f82b722f 100644
--- a/src/engine/random.c
+++ b/src/random.c
diff --git a/src/engine/record_mixing.c b/src/record_mixing.c
index a2660bf82..a2660bf82 100644
--- a/src/engine/record_mixing.c
+++ b/src/record_mixing.c
diff --git a/src/field/region_map.c b/src/region_map.c
index 1378820fe..e40fb7752 100644
--- a/src/field/region_map.c
+++ b/src/region_map.c
@@ -141,12 +141,12 @@ static const u16 sRegionMapBkgnd_Pal[] = INCBIN_U16("graphics/pokenav/region_map
static const u8 sRegionMapBkgnd_ImageLZ[] = INCBIN_U8("graphics/pokenav/region_map.8bpp.lz");
static const u8 sRegionMapBkgnd_TilemapLZ[] = INCBIN_U8("graphics/pokenav/region_map_map.bin.lz");
-#include "../data/region_map_layout.h"
+#include "data/region_map_layout.h"
#if ENGLISH
-#include "../data/region_map_names_en.h"
+#include "data/region_map_names_en.h"
#elif GERMAN
-#include "../data/region_map_names_de.h"
+#include "data/region_map_names_de.h"
#endif
struct RegionMapLocation
@@ -280,7 +280,7 @@ static u16 sub_80FB9C0(u16);
static void sub_80FBA18(void);
static bool8 sub_80FBAA0(u16);
void CreateRegionMapCursor(u16, u16);
-static void sub_80FBCA0(void);
+void sub_80FBCA0(void);
static void sub_80FBDF8(void);
static void sub_80FBE24(void);
static void SpriteCB_PlayerIconZoomedOut(struct Sprite *);
@@ -288,8 +288,8 @@ static void UpdateIconBlink(struct Sprite *);
static void SpriteCB_PlayerIconZoomedIn(struct Sprite *);
const u8 *GetMapSectionName(u8 *, u16, u16);
static void VBlankCB_FlyRegionMap(void);
-static void CB2_FlyRegionMap(void);
-static void sub_80FC244(void (*func)(void));
+void CB2_FlyRegionMap(void);
+void sub_80FC244(void (*func)(void));
static void PrintFlyTargetName(void);
static void CreateFlyTargetGraphics(void);
static void CreateCityTownFlyTargetIcons(void);
@@ -297,7 +297,7 @@ static void CreateSpecialAreaFlyTargetIcons(void);
static void SpriteCB_FlyTargetIcons(struct Sprite *);
static void sub_80FC5B4(void);
static void sub_80FC600(void);
-static void sub_80FC69C(void);
+void sub_80FC69C(void);
void InitRegionMap(struct RegionMap *regionMap, bool8 zoomed)
{
@@ -1127,7 +1127,7 @@ void CreateRegionMapCursor(u16 tileTag, u16 paletteTag)
}
}
-static void sub_80FBCA0(void)
+void sub_80FBCA0(void)
{
if (gRegionMap->cursorSprite != NULL)
{
@@ -1411,22 +1411,26 @@ static const u8 sUnknown_083E7920[][3] =
{0, 49, 0},
};
-struct UnknownStruct4
+static const u8 *const sEverGrandeCityAreaNames[] =
{
- const u8 *const *unk0;
- u16 mapSectionId;
- u16 flag;
+ OtherText_PokeLeague,
+ OtherText_PokeCenter,
};
-static const u8 *const sEverGrandeCityAreaNames[] = {OtherText_PokeLeague, OtherText_PokeCenter};
+struct MultiPartMapSection
+{
+ const u8 *const *partNames;
+ u16 mapSectionId;
+ u16 requiredFlag;
+};
-static const struct UnknownStruct4 sUnknown_083E79C0[1] =
+// Map sections that are divided into multiple parts. Ever Grande City is the only one.
+static const struct MultiPartMapSection sMultiPartMapSections[1] =
{
{sEverGrandeCityAreaNames, MAPSEC_EVER_GRANDE_CITY, FLAG_SYS_POKEMON_LEAGUE_FLY},
};
-// XXX: what is this?
-static u8 *const ewram_ = gSharedMem;
+static struct UnknownStruct3 *const sFlyDataPtr = (struct UnknownStruct3 *)gSharedMem;
static const struct SpritePalette sFlyTargetIconSpritePalette = {sFlyTargetIcons_Pal, 2};
@@ -1547,10 +1551,10 @@ void CB2_InitFlyRegionMap(void)
Menu_EraseScreen();
break;
case 3:
- InitRegionMap(&ewram0_3.regionMap, 0);
+ InitRegionMap(&sFlyDataPtr->regionMap, 0);
CreateRegionMapCursor(0, 0);
CreateRegionMapPlayerIcon(1, 1);
- ewram0_3.unk6 = ewram0_3.regionMap.mapSectionId;
+ sFlyDataPtr->unk6 = sFlyDataPtr->regionMap.mapSectionId;
StringFill(ewramBlankMapName, CHAR_SPACE, 12);
PrintFlyTargetName();
break;
@@ -1591,38 +1595,36 @@ static void VBlankCB_FlyRegionMap(void)
TransferPlttBuffer();
}
-static void CB2_FlyRegionMap(void)
+void CB2_FlyRegionMap(void)
{
- ewram0_3.unk0();
+ sFlyDataPtr->unk0();
AnimateSprites();
BuildOamBuffer();
}
-static void sub_80FC244(void (*func)(void))
+void sub_80FC244(void (*func)(void))
{
- ewram0_3.unk0 = func;
- ewram0_3.unk4 = 0;
+ sFlyDataPtr->unk0 = func;
+ sFlyDataPtr->unk4 = 0;
}
static void PrintFlyTargetName(void)
{
- if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4)
+ if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4)
{
+ bool8 drawFrameDisabled = FALSE;
u16 i;
- bool32 drawFrameDisabled = FALSE;
- for (i = 0; i < ARRAY_COUNT(sUnknown_083E79C0); i++)
+ for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++)
{
- const struct UnknownStruct4 *r4 = &sUnknown_083E79C0[i];
-
- if (ewram0_3.regionMap.mapSectionId == r4->mapSectionId)
+ if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId)
{
- if (FlagGet(r4->flag))
+ if (FlagGet(sMultiPartMapSections[i].requiredFlag))
{
Menu_DrawStdWindowFrame(16, 14, 29, 19);
- Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 15);
- MenuPrint_RightAligned(r4->unk0[ewram0_3.regionMap.everGrandeCityArea], 29, 17);
- return;
+ Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15);
+ MenuPrint_RightAligned(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 29, 17);
+ drawFrameDisabled = TRUE;
}
break;
}
@@ -1631,7 +1633,7 @@ static void PrintFlyTargetName(void)
if (!drawFrameDisabled)
{
Menu_DrawStdWindowFrame(16, 16, 29, 19);
- Menu_PrintText(ewram0_3.regionMap.mapSectionName, 17, 17);
+ Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17);
Menu_EraseWindowRect(16, 14, 29, 15);
}
}
@@ -1732,7 +1734,7 @@ static void CreateSpecialAreaFlyTargetIcons(void)
static void SpriteCB_FlyTargetIcons(struct Sprite *sprite)
{
// Blink if our mapSectionId is the one selected on the map
- if (ewram0_3.regionMap.mapSectionId == sprite->data[0])
+ if (sFlyDataPtr->regionMap.mapSectionId == sprite->data[0])
{
// Toggle visibility every 16 frames
sprite->data[1]++;
@@ -1751,11 +1753,11 @@ static void SpriteCB_FlyTargetIcons(struct Sprite *sprite)
static void sub_80FC5B4(void)
{
- switch (ewram0_3.unk4)
+ switch (sFlyDataPtr->unk4)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
- ewram0_3.unk4++;
+ sFlyDataPtr->unk4++;
break;
case 1:
if (UpdatePaletteFade() != 0)
@@ -1767,7 +1769,7 @@ static void sub_80FC5B4(void)
static void sub_80FC600(void)
{
- if (ewram0_3.unk4 == 0)
+ if (sFlyDataPtr->unk4 == 0)
{
switch (sub_80FAB60())
{
@@ -1779,7 +1781,7 @@ static void sub_80FC600(void)
PrintFlyTargetName();
break;
case INPUT_EVENT_A_BUTTON:
- if (ewram0_3.regionMap.unk16 == 2 || ewram0_3.regionMap.unk16 == 4)
+ if (sFlyDataPtr->regionMap.unk16 == 2 || sFlyDataPtr->regionMap.unk16 == 4)
{
m4aSongNumStart(SE_SELECT);
ewramA6E = 1;
@@ -1795,13 +1797,13 @@ static void sub_80FC600(void)
}
}
-static void sub_80FC69C(void)
+void sub_80FC69C(void)
{
- switch (ewram0_3.unk4)
+ switch (sFlyDataPtr->unk4)
{
case 0:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- ewram0_3.unk4++;
+ sFlyDataPtr->unk4++;
break;
case 1:
if (UpdatePaletteFade() != 0)
@@ -1809,7 +1811,7 @@ static void sub_80FC69C(void)
FreeRegionMapIconResources();
if (ewramA6E != 0)
{
- switch (ewram0_3.regionMap.mapSectionId)
+ switch (sFlyDataPtr->regionMap.mapSectionId)
{
case MAPSEC_SOUTHERN_ISLAND:
sub_8053538(22);
@@ -1821,13 +1823,13 @@ static void sub_80FC69C(void)
sub_8053538((gSaveBlock2.playerGender == MALE) ? 12 : 13);
break;
case MAPSEC_EVER_GRANDE_CITY:
- sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && ewram0_3.regionMap.everGrandeCityArea == 0) ? 20 : 11);
+ sub_8053538((FlagGet(FLAG_SYS_POKEMON_LEAGUE_FLY) && sFlyDataPtr->regionMap.everGrandeCityArea == 0) ? 20 : 11);
break;
default:
- if (sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][2] != 0)
- sub_8053538(sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][2]);
+ if (sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2] != 0)
+ sub_8053538(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][2]);
else
- warp1_set_2(sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][0], sUnknown_083E7920[ewram0_3.regionMap.mapSectionId][1], -1);
+ warp1_set_2(sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][0], sUnknown_083E7920[sFlyDataPtr->regionMap.mapSectionId][1], -1);
break;
}
sub_80865BC();
@@ -1839,3 +1841,131 @@ static void sub_80FC69C(void)
break;
}
}
+
+#if DEBUG
+
+void debug_sub_8110CCC(void)
+{
+ bool8 r7 = FALSE;
+ u16 i;
+ s16 indent;
+
+ for (i = 0; i < ARRAY_COUNT(sMultiPartMapSections); i++)
+ {
+ if (sFlyDataPtr->regionMap.mapSectionId == sMultiPartMapSections[i].mapSectionId)
+ {
+ if (FlagGet(sMultiPartMapSections[i].requiredFlag))
+ {
+ indent = 12 - StringLength(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea]);
+ if (indent < 0)
+ indent = 0;
+ r7 = TRUE;
+ Menu_DrawStdWindowFrame(16, 14, 29, 19);
+ Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 15);
+ Menu_PrintText(sMultiPartMapSections[i].partNames[sFlyDataPtr->regionMap.everGrandeCityArea], 17 + indent, 17);
+ }
+ break;
+ }
+ }
+ if (!r7)
+ {
+ Menu_DrawStdWindowFrame(16, 16, 29, 19);
+ Menu_PrintText(sFlyDataPtr->regionMap.mapSectionName, 17, 17);
+ Menu_EraseWindowRect(16, 14, 29, 15);
+ }
+}
+
+void debug_sub_8110D84(void)
+{
+ switch (sFlyDataPtr->unk4)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ sFlyDataPtr->unk4++;
+ break;
+ case 1:
+ if (!UpdatePaletteFade())
+ sFlyDataPtr->unk4++;
+ break;
+ case 2:
+ switch (sub_80FAB60())
+ {
+ case 0:
+ break;
+ case 3:
+ debug_sub_8110CCC();
+ break;
+ case 4:
+ if (sFlyDataPtr->regionMap.unk16 != 0)
+ {
+ m4aSongNumStart(SE_SELECT);
+ gSharedMem[0xA6E] = 1; // TODO: what is this?
+ sub_80FC244(sub_80FC69C);
+ }
+ break;
+ case 5:
+ m4aSongNumStart(SE_SELECT);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ sFlyDataPtr->unk4++;
+ break;
+ }
+ break;
+ case 3:
+ if (!UpdatePaletteFade())
+ SetMainCallback2(sub_805469C);
+ break;
+ case 4:
+ if (sub_80FAB60() != 0)
+ {
+ debug_sub_8110CCC();
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ sub_80FBCA0();
+ sub_80FAEC4();
+ sFlyDataPtr->unk4++;
+ }
+ break;
+ case 5:
+ if (sub_80FAFC0() == 0)
+ {
+ CreateRegionMapCursor(0, 0);
+ sFlyDataPtr->unk4++;
+ }
+ break;
+ case 6:
+ if (sub_80FAB60() != 0)
+ {
+ debug_sub_8110CCC();
+ }
+ if (gMain.newKeys & A_BUTTON) // no "else if" like above?
+ {
+ sub_80FBCA0();
+ sub_80FAEC4();
+ sFlyDataPtr->unk4++;
+ }
+ break;
+ case 7:
+ if (sub_80FAFC0() == 0)
+ {
+ CreateRegionMapCursor(0, 0);
+ sFlyDataPtr->unk4 = 3;
+ }
+ break;
+ }
+}
+
+void debug_sub_8110F28(void)
+{
+ CB2_InitFlyRegionMap();
+
+ if (gMain.callback2 == CB2_FlyRegionMap)
+ {
+ sub_80FBF94();
+ sub_80FC244(debug_sub_8110D84);
+ debug_sub_8110CCC();
+ }
+}
+
+#endif
+
diff --git a/src/engine/reset_rtc_screen.c b/src/reset_rtc_screen.c
index ce4afe922..8c2c23569 100644
--- a/src/engine/reset_rtc_screen.c
+++ b/src/reset_rtc_screen.c
@@ -5,6 +5,7 @@
#include "palette.h"
#include "rtc.h"
#include "save.h"
+#include "script.h"
#include "sprite.h"
#include "constants/songs.h"
#include "sound.h"
@@ -569,6 +570,7 @@ void Task_ResetRtcScreen(u8 taskId)
PlaySE(SE_BOO);
}
data[0] = 5;
+ // fall through
case 5:
if (gMain.newKeys & A_BUTTON)
{
@@ -579,6 +581,7 @@ void Task_ResetRtcScreen(u8 taskId)
{
break;
}
+ // fall through
case 6:
if (!gPaletteFade.active)
{
@@ -587,3 +590,103 @@ void Task_ResetRtcScreen(u8 taskId)
}
}
}
+
+#if DEBUG
+void debug_sub_806F8F8(void)
+{
+ SetMainCallback2(CB2_InitResetRtcScreen);
+}
+
+void debug_sub_806F908(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ data[1] = CreateTask(Task_ResetRtc_0, 80);
+ data[0]++;
+ break;
+ case 1:
+ if (gTasks[data[1]].data[0] != 0)
+ {
+ if (gTasks[data[1]].data[1] == 1)
+ RtcCalcLocalTimeOffset(gLocalTime.days, gLocalTime.hours, gLocalTime.minutes, gLocalTime.seconds);
+ DestroyTask(data[1]);
+ Menu_EraseScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void debug_sub_806F99C(void)
+{
+ RtcCalcLocalTime();
+ CreateTask(debug_sub_806F908, 80);
+ ScriptContext2_Enable();
+}
+
+void debug_sub_806F9B8(void)
+{
+ gLocalTime = gSaveBlock2.lastBerryTreeUpdate;
+ CreateTask(debug_sub_806F908, 80);
+ ScriptContext2_Enable();
+}
+
+static const u8 sDebugText_Days[] = _("にっすう"); // "days"
+static const u8 sDebugText_Time[] = _("じかん"); // "time"
+static const u8 sDebugText_GameTime[] = _("ゲームない じかん"); // "game time"
+static const u8 sDebugText_RTCTime[] = _("RTC じかん"); // "RTC time"
+
+void debug_sub_806F9E4(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u8 *str = gStringVar4;
+
+ switch (data[0])
+ {
+ case 0:
+ data[0]++;
+ break;
+ case 1:
+ Menu_DrawStdWindowFrame(0, 9, 29, 19);
+ ConvertIntToHexStringN(str + 80, RtcGetErrorStatus(), 2, 4);
+ Menu_PrintText(str + 80, 2, 10);
+ Menu_PrintText(sDebugText_Days, 12, 12);
+ Menu_PrintText(sDebugText_Time, 20, 12);
+ Menu_PrintText(sDebugText_RTCTime, 1, 14);
+ Menu_PrintText(sDebugText_GameTime, 1, 16);
+ data[0]++;
+ break;
+ case 2:
+ RtcCalcLocalTime();
+ FormatHexRtcTime(str);
+ debug_sub_8009894(str + 20);
+ FormatDecimalTime(str + 40, gLocalTime.hours, gLocalTime.minutes, gLocalTime.seconds);
+ ConvertIntToDecimalStringN(str + 60, gLocalTime.days, 1, 4);
+ if (gSaveBlock2.playTimeVBlanks == 0)
+ {
+ Menu_PrintText(str, 20, 14);
+ Menu_PrintText(str + 20, 12, 14);
+ Menu_PrintText(str + 40, 20, 16);
+ Menu_PrintText(str + 60, 12, 16);
+ }
+ if (data[1] > 19) // Did you mean < 19?
+ {
+ data[1]++;
+ }
+ else
+ {
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ ScriptContext2_Disable();
+ }
+ }
+ break;
+ }
+}
+#endif \ No newline at end of file
diff --git a/src/field/roamer.c b/src/roamer.c
index 2eb26ef9d..6ed5b6c89 100644
--- a/src/field/roamer.c
+++ b/src/roamer.c
@@ -1,7 +1,9 @@
#include "global.h"
+#include "debug.h"
#include "roamer.h"
#include "pokemon.h"
#include "random.h"
+#include "region_map.h"
#include "constants/species.h"
#ifdef SAPPHIRE
@@ -224,3 +226,20 @@ void GetRoamerLocation(u8 *mapGroup, u8 *mapNum)
*mapGroup = sRoamerLocation[MAP_GRP];
*mapNum = sRoamerLocation[MAP_NUM];
}
+
+#if DEBUG
+void debug_sub_814A714(void)
+{
+ if (gSaveBlock1.location.mapGroup == 0)
+ {
+ CreateInitialRoamerMon();
+ sRoamerLocation[0] = 0;
+ sRoamerLocation[1] = gSaveBlock1.location.mapNum;
+ }
+}
+
+void debug_sub_814A73C(u8* str)
+{
+ GetMapSectionName(str, sRoamerLocation[1], 0);
+}
+#endif
diff --git a/src/rom3.c b/src/rom3.c
index 000de8356..7b3051b86 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -67,6 +67,10 @@ void sub_800B858(void)
}
}
+#if DEBUG
+extern u8 gUnknown_02023A14_50;
+#endif
+
void setup_poochyena_battle(void)
{
s32 i;
@@ -93,6 +97,16 @@ void setup_poochyena_battle(void)
}
gUnknown_020239FC = 0;
gUnknown_02024C78 = 0;
+
+#if DEBUG
+ if (gUnknown_02023A14_50 & 0x80)
+ {
+ gSharedMem[0x160fd] = 0;
+ gSharedMem[0x160fe] = 0;
+ gSharedMem[0x160ff] = 0;
+ ((u32 *) gBattleBuffersTransferData)[64]++;
+ }
+#endif
}
void sub_800B950(void)
diff --git a/src/rom6.c b/src/rom6.c
index 62fbc987c..ffd01fdb9 100644
--- a/src/rom6.c
+++ b/src/rom6.c
@@ -1,14 +1,15 @@
#include "global.h"
+#include "constants/map_objects.h"
+#include "constants/songs.h"
#include "rom6.h"
#include "braille_puzzles.h"
#include "field_effect.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "item_use.h"
#include "pokemon_menu.h"
#include "overworld.h"
#include "script.h"
-#include "constants/songs.h"
#include "sound.h"
#include "sprite.h"
#include "task.h"
@@ -116,6 +117,21 @@ static void sub_810B4CC(u8 taskId)
DestroyTask(taskId);
}
+#if DEBUG
+void debug_sub_8120968(void)
+{
+ if (npc_before_player_of_type(MAP_OBJ_GFX_BREAKABLE_ROCK) == TRUE)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ sub_810B53C();
+ }
+ else
+ {
+ ScriptContext2_Disable();
+ }
+}
+#endif
+
bool8 SetUpFieldMove_RockSmash(void)
{
if (npc_before_player_of_type(0x56) == TRUE)
diff --git a/src/rom_8077ABC.c b/src/rom_8077ABC.c
index 11a71155d..9d864fec3 100644
--- a/src/rom_8077ABC.c
+++ b/src/rom_8077ABC.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "constants/battle_anim.h"
#include "constants/species.h"
#include "rom_8077ABC.h"
#include "battle.h"
@@ -30,7 +31,7 @@
#define gCastformElevations gUnknownCastformData_0837F5A8
#define gCastformBackSpriteYCoords gUnknown_0837F5AC
#define gTransformPersonalities gTransformedPersonalities
-#define gBattleMonSprites gObjectBankIDs
+#define gBattleMonSprites gBankSpriteIds
struct TransformStatus
{
@@ -550,7 +551,10 @@ void sub_8078278(struct Sprite *sprite)
}
}
-void sub_80782D8(struct Sprite *sprite)
+// Simply waits until the sprite's data[0] hits zero.
+// This is used to let sprite anims or affine anims to run for a designated
+// duration.
+void WaitAnimForDuration(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
sprite->data[0]--;
@@ -561,7 +565,7 @@ void sub_80782D8(struct Sprite *sprite)
void sub_80782F8(struct Sprite *sprite)
{
sub_8078314(sprite);
- sprite->callback = sub_8078364;
+ sprite->callback = TranslateSpriteOverDuration;
sprite->callback(sprite);
}
@@ -579,7 +583,7 @@ void sub_8078314(struct Sprite *sprite)
sprite->data[1] = old;
}
-void sub_8078364(struct Sprite *sprite)
+void TranslateSpriteOverDuration(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -635,7 +639,7 @@ void unref_sub_8078414(struct Sprite *sprite)
sprite->callback = sub_80782F8;
}
-void sub_8078458(struct Sprite *sprite)
+void TranslateMonBGUntil(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -649,7 +653,9 @@ void sub_8078458(struct Sprite *sprite)
}
}
-void sub_80784A8(struct Sprite *sprite)
+// Same as TranslateMonBGUntil, but it operates on sub-pixel values
+// to handle slower translations.
+void TranslateMonBGSubPixelUntil(struct Sprite *sprite)
{
if (sprite->data[0] > 0)
{
@@ -761,18 +767,18 @@ void sub_807867C(struct Sprite *sprite, s16 a2)
}
}
-void sub_80786EC(struct Sprite *sprite)
+void InitAnimSpriteTranslationOverDuration(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
sprite->data[6] = 0x8000 / sprite->data[0];
sprite->data[7] = 0;
}
-bool8 sub_8078718(struct Sprite *sprite)
+bool8 TranslateAnimSpriteLinearAndSine(struct Sprite *sprite)
{
- if (sub_8078B5C(sprite))
+ if (TranslateAnimSpriteByDeltas(sprite))
return TRUE;
sprite->data[7] += sprite->data[6];
sprite->pos2.y += Sin((u8)(sprite->data[7] >> 8), sprite->data[5]);
@@ -798,7 +804,7 @@ void sub_8078764(struct Sprite *sprite, bool8 a2)
sprite->pos1.y += gBattleAnimArgs[1];
}
-void sub_80787B0(struct Sprite *sprite, u8 a2)
+void InitAnimSpritePos(struct Sprite *sprite, u8 a2)
{
if (!a2)
{
@@ -850,7 +856,7 @@ bool8 IsBankSpritePresent(u8 slot)
{
if (gBanksBySide[slot] == 0xff)
return FALSE;
- if (GetBankSide(slot))
+ if (GetBankSide(slot) != SIDE_PLAYER)
{
if (GetMonData(&gEnemyParty[gBattleMonPartyPositions[slot]], MON_DATA_HP) != 0)
return TRUE;
@@ -937,12 +943,12 @@ void sub_8078A34(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- sub_8078A5C(sprite);
+ InitSpriteDataForLinearTranslation(sprite);
sprite->callback = sub_80783D0;
sprite->callback(sprite);
}
-void sub_8078A5C(struct Sprite *sprite)
+void InitSpriteDataForLinearTranslation(struct Sprite *sprite)
{
s16 x = (sprite->data[2] - sprite->data[1]) << 8;
s16 y = (sprite->data[4] - sprite->data[3]) << 8;
@@ -952,44 +958,44 @@ void sub_8078A5C(struct Sprite *sprite)
sprite->data[3] = 0;
}
-void obj_translate_based_on_private_1_2_3_4(struct Sprite *sprite)
+void InitAnimSpriteTranslationDeltas(struct Sprite *sprite)
{
int x = sprite->data[2] - sprite->data[1];
int y = sprite->data[4] - sprite->data[3];
- bool8 r8 = x < 0;
- bool8 r9 = y < 0;
- u16 x2 = abs(x) << 8;
- u16 y2 = abs(y) << 8;
+ bool8 movingLeft = x < 0;
+ bool8 movingUp = y < 0;
+ u16 xDelta = abs(x) << 8;
+ u16 yDelta = abs(y) << 8;
- x2 = x2 / sprite->data[0];
- y2 = y2 / sprite->data[0];
+ xDelta = xDelta / sprite->data[0];
+ yDelta = yDelta / sprite->data[0];
- if (r8)
- x2 |= 1;
+ if (movingLeft)
+ xDelta |= 1;
else
- x2 &= ~1;
+ xDelta &= ~1;
- if (r9)
- y2 |= 1;
+ if (movingUp)
+ yDelta |= 1;
else
- y2 &= ~1;
+ yDelta &= ~1;
- sprite->data[1] = x2;
- sprite->data[2] = y2;
+ sprite->data[1] = xDelta;
+ sprite->data[2] = yDelta;
sprite->data[4] = 0;
sprite->data[3] = 0;
}
-void sub_8078B34(struct Sprite *sprite)
+void StartTranslateAnimSpriteByDeltas(struct Sprite *sprite)
{
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
- obj_translate_based_on_private_1_2_3_4(sprite);
- sprite->callback = sub_8078BB8;
+ InitAnimSpriteTranslationDeltas(sprite);
+ sprite->callback = TranslateAnimSpriteByDeltasUntil;
sprite->callback(sprite);
}
-bool8 sub_8078B5C(struct Sprite *sprite)
+bool8 TranslateAnimSpriteByDeltas(struct Sprite *sprite)
{
u16 v1, v2, x, y;
@@ -1019,9 +1025,9 @@ bool8 sub_8078B5C(struct Sprite *sprite)
return FALSE;
}
-void sub_8078BB8(struct Sprite *sprite)
+void TranslateAnimSpriteByDeltasUntil(struct Sprite *sprite)
{
- if (sub_8078B5C(sprite))
+ if (TranslateAnimSpriteByDeltas(sprite))
SetCallbackToStoredInData(sprite);
}
@@ -1029,7 +1035,7 @@ void sub_8078BD4(struct Sprite *sprite)
{
int v1 = abs(sprite->data[2] - sprite->data[1]) << 8;
sprite->data[0] = v1 / sprite->data[0];
- obj_translate_based_on_private_1_2_3_4(sprite);
+ InitAnimSpriteTranslationDeltas(sprite);
}
void sub_8078C00(struct Sprite *sprite)
@@ -1037,7 +1043,7 @@ void sub_8078C00(struct Sprite *sprite)
sprite->data[1] = sprite->pos1.x;
sprite->data[3] = sprite->pos1.y;
sub_8078BD4(sprite);
- sprite->callback = sub_8078BB8;
+ sprite->callback = TranslateAnimSpriteByDeltasUntil;
sprite->callback(sprite);
}
@@ -1160,13 +1166,13 @@ bool8 sub_8078E38()
return FALSE;
}
-void sub_8078E70(u8 sprite, u8 a2)
+void sub_8078E70(u8 sprite, u8 objMode)
{
u8 r7 = gSprites[sprite].data[0];
if (IsContest() || IsAnimBankSpriteVisible(r7))
gSprites[sprite].invisible = FALSE;
- gSprites[sprite].oam.objMode = a2;
+ gSprites[sprite].oam.objMode = objMode;
gSprites[sprite].affineAnimPaused = TRUE;
if (!IsContest() && !gSprites[sprite].oam.affineMode)
gSprites[sprite].oam.matrixNum = ewram17810[r7].unk6;
@@ -1231,7 +1237,7 @@ static u16 ArcTan2_(s16 a, s16 b)
return ArcTan2(a, b);
}
-u16 sub_80790F0(s16 a, s16 b)
+u16 ArcTan2Neg(s16 a, s16 b)
{
u16 var = ArcTan2_(a, b);
return -var;
@@ -1379,7 +1385,7 @@ void sub_80793C4(struct Sprite *sprite)
else
var = FALSE;
if (!gBattleAnimArgs[2])
- sub_80787B0(sprite, var);
+ InitAnimSpritePos(sprite, var);
else
sub_8078764(sprite, var);
sprite->data[0]++;
@@ -1391,7 +1397,15 @@ void sub_80793C4(struct Sprite *sprite)
}
}
-void sub_807941C(struct Sprite *sprite)
+// Linearly translates a sprite to a target position on the
+// other mon's sprite.
+// arg 0: initial x offset
+// arg 1: initial y offset
+// arg 2: target x offset
+// arg 3: target y offset
+// arg 4: duration
+// arg 5: lower 8 bits = location on attacking mon, upper 8 bits = location on target mon pick to target
+void TranslateAnimSpriteToTargetMonLocation(struct Sprite *sprite)
{
bool8 v1;
u8 v2;
@@ -1406,32 +1420,33 @@ void sub_807941C(struct Sprite *sprite)
else
v2 = 1;
- sub_80787B0(sprite, v1);
- if (GetBankSide(gAnimBankAttacker))
+ InitAnimSpritePos(sprite, v1);
+ if (GetBankSide(gAnimBankAttacker) != SIDE_PLAYER)
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
+
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(gAnimBankTarget, v2) + gBattleAnimArgs[3];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
void sub_80794A8(struct Sprite *sprite)
{
- sub_80787B0(sprite, 1);
+ InitAnimSpritePos(sprite, 1);
if (GetBankSide(gAnimBankAttacker))
gBattleAnimArgs[2] = -gBattleAnimArgs[2];
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBankPosition(gAnimBankTarget, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(gAnimBankTarget, 3) + gBattleAnimArgs[3];
sprite->data[5] = gBattleAnimArgs[5];
- sub_80786EC(sprite);
+ InitAnimSpriteTranslationOverDuration(sprite);
sprite->callback = sub_8079518;
}
void sub_8079518(struct Sprite *sprite)
{
- if (sub_8078718(sprite))
+ if (TranslateAnimSpriteLinearAndSine(sprite))
DestroyAnimSprite(sprite);
}
@@ -1451,7 +1466,7 @@ void sub_8079534(struct Sprite *sprite)
}
if (!gBattleAnimArgs[5])
{
- sub_80787B0(sprite, r4);
+ InitAnimSpritePos(sprite, r4);
slot = gAnimBankAttacker;
}
else
@@ -1465,7 +1480,7 @@ void sub_8079534(struct Sprite *sprite)
sprite->data[0] = gBattleAnimArgs[4];
sprite->data[2] = GetBankPosition(slot, 2) + gBattleAnimArgs[2];
sprite->data[4] = GetBankPosition(slot, r7) + gBattleAnimArgs[3];
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
@@ -1549,20 +1564,26 @@ void sub_80796F8(u8 taskId)
}
}
-void sub_8079790(u8 task)
+// Linearly blends a mon's sprite colors with a target color with increasing
+// strength, and then blends out to the original color.
+// arg 0: anim bank
+// arg 1: blend color
+// arg 2: target blend coefficient
+// arg 3: initial delay
+// arg 4: number of times to blend in and out
+void AnimTask_BlendMonInAndOut(u8 task)
{
- u8 sprite = GetAnimBankSpriteId(gBattleAnimArgs[0]);
-
- if (sprite == 0xff)
+ u8 spriteId = GetAnimBankSpriteId(gBattleAnimArgs[0]);
+ if (spriteId == 0xff)
{
DestroyAnimVisualTask(task);
return;
}
- gTasks[task].data[0] = (gSprites[sprite].oam.paletteNum * 0x10) + 0x101;
- sub_80797EC(&gTasks[task]);
+ gTasks[task].data[0] = (gSprites[spriteId].oam.paletteNum * 0x10) + 0x101;
+ AnimTask_BlendMonInAndOutSetup(&gTasks[task]);
}
-void sub_80797EC(struct Task *task)
+void AnimTask_BlendMonInAndOutSetup(struct Task *task)
{
task->data[1] = gBattleAnimArgs[1];
task->data[2] = 0;
@@ -1571,10 +1592,10 @@ void sub_80797EC(struct Task *task)
task->data[5] = gBattleAnimArgs[3];
task->data[6] = 0;
task->data[7] = gBattleAnimArgs[4];
- task->func = sub_8079814;
+ task->func = AnimTask_BlendMonInAndOutStep;
}
-void sub_8079814(u8 taskId)
+void AnimTask_BlendMonInAndOutStep(u8 taskId)
{
struct Task *task = &gTasks[taskId];
@@ -1584,14 +1605,14 @@ void sub_8079814(u8 taskId)
if (!task->data[6])
{
task->data[2]++;
- BlendPalette(task->data[0], 0xf, task->data[2], task->data[1]);
+ BlendPalette(task->data[0], 15, task->data[2], task->data[1]);
if (task->data[2] == task->data[3])
task->data[6] = 1;
}
else
{
task->data[2]--;
- BlendPalette(task->data[0], 0xf, task->data[2], task->data[1]);
+ BlendPalette(task->data[0], 15, task->data[2], task->data[1]);
if (!task->data[2])
{
if (--task->data[7])
@@ -1619,7 +1640,7 @@ void sub_80798AC(u8 task)
return;
}
gTasks[task].data[0] = (palette * 0x10) + 0x101;
- sub_80797EC(&gTasks[task]);
+ AnimTask_BlendMonInAndOutSetup(&gTasks[task]);
}
void sub_80798F4(struct Task *task, u8 a2, const void *a3)
@@ -1861,26 +1882,26 @@ void sub_8079E24()
}
}
-u8 sub_8079E90(u8 slot)
+u8 sub_8079E90(u8 bank)
{
- u8 status;
+ u8 identity;
u8 ret;
if (IsContest())
{
- if (slot == 2)
+ if (bank == ANIM_BANK_ATK_PARTNER)
return 30;
else
return 40;
}
else
{
- status = GetBankIdentity(slot);
- if (status == 0)
+ identity = GetBankIdentity(bank);
+ if (identity == IDENTITY_PLAYER_MON1)
ret = 30;
- else if (status == 2)
+ else if (identity == IDENTITY_PLAYER_MON2)
ret = 20;
- else if (status == 1)
+ else if (identity == IDENTITY_OPPONENT_MON1)
ret = 40;
else
ret = 50;
@@ -1970,7 +1991,7 @@ void sub_807A0F4(struct Sprite *sprite)
DestroySpriteAndFreeResources(sprite);
}
-int sub_807A100(u8 slot, u8 a2)
+s16 sub_807A100(u8 slot, u8 a2)
{
u16 species;
u32 personality;
@@ -2106,7 +2127,7 @@ int sub_807A100(u8 slot, u8 a2)
}
}
-void sub_807A3FC(u8 slot, bool8 a2, s16 *a3, s16 *a4)
+void SetAverageBattlerPositions(u8 slot, bool8 a2, s16 *x, s16 *y)
{
u8 v1, v2;
s16 v3, v4;
@@ -2134,11 +2155,11 @@ void sub_807A3FC(u8 slot, bool8 a2, s16 *a3, s16 *a4)
v5 = v3;
v6 = v4;
}
- *a3 = (v3 + v5) / 2;
- *a4 = (v4 + v6) / 2;
+ *x = (v3 + v5) / 2;
+ *y = (v4 + v6) / 2;
}
-u8 sub_807A4A0(int a1, u8 sprite, int a3)
+u8 sub_807A4A0(int bank, u8 sprite, int species)
{
u8 new_sprite = CreateInvisibleSpriteWithCallback(SpriteCallbackDummy);
gSprites[new_sprite] = gSprites[sprite];
@@ -2337,6 +2358,6 @@ void sub_807A9BC(struct Sprite *sprite)
sprite->pos1.x += x;
sprite->pos1.y = gBattleAnimArgs[5] - 80;
}
- sprite->callback = sub_8078B34;
+ sprite->callback = StartTranslateAnimSpriteByDeltas;
StoreSpriteCallbackInData(sprite, DestroyAnimSprite);
}
diff --git a/src/field/rotating_gate.c b/src/rotating_gate.c
index 00008c69c..69f655a65 100644
--- a/src/field/rotating_gate.c
+++ b/src/rotating_gate.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "bike.h"
#include "event_data.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "fieldmap.h"
#include "constants/maps.h"
#include "constants/songs.h"
diff --git a/src/roulette.c b/src/roulette.c
index 41e8ef77f..5e7517d79 100644
--- a/src/roulette.c
+++ b/src/roulette.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "random.h"
#include "ewram.h"
#include "field_fadetransition.h"
#include "constants/game_stat.h"
@@ -131,6 +132,12 @@ struct StructgUnknown_083F8D90
u32 var04;
};
+#if DEBUG
+void *gUnknown_Debug_03005FB8;
+#endif
+
+#define static
+
static void sub_81150FC(void);
static void sub_8115124(void);
static void sub_8115238(void);
@@ -297,6 +304,7 @@ extern const struct SpriteTemplate gSpriteTemplate_83FA434;
extern void (*gFieldCallback)(void);
extern struct MusicPlayerInfo gMPlay_SE1;
extern struct MusicPlayerInfo gMPlay_SE2;
+extern struct MusicPlayerInfo gMPlay_SE3;
extern const u16 gUnknown_083FA60E[0x2][0x2];
extern const struct SpriteTemplate gSpriteTemplate_83FA50C;
extern const struct SpriteTemplate gSpriteTemplate_83FA5C0[];
@@ -308,7 +316,10 @@ extern const u16 gUnknown_083FA632[];
extern const s8 gUnknown_083FA64A[0x2];
extern const s8 gUnknown_083FA64C[0x8][0x2];
-
+#if DEBUG
+EWRAM_DATA u8 unk_203955C[4] = { 0 };
+EWRAM_DATA u8 unk_2039560 = 0;
+#endif
void sub_81150FC(void)
@@ -348,22 +359,20 @@ void sub_8115124(void)
REG_BG0CNT = 0x1F08;
DmaFill16(3, 0x0, (void *)(VRAM + 0xF9C0), 0x340);
eRoulette->var28 = 0x0;
- break;
case 0x0:
+ break;
}
}
-#ifdef NONMATCHING
void sub_8115238(void)
{
u8 i;
u32 temp;
- struct PlttData t;
- struct PlttData *unfaded;
- struct PlttData *faded;
struct StructgUnknown_083F8DF4 *s0;
- struct PlttData arr[0x3]; // the third is never used ?
- memcpy(&arr, &gUnknown_083F8EC4, 0x6);
+ u16 arr[0x3]; // the third is never used ?
+
+ memcpy(arr, &gUnknown_083F8EC4, 0x6);
+ // u16 arr[] = {RGB(24, 4, 10), RGB(10, 19, 6), RGB(24, 4, 10)};
memset(eRoulette, 0x0, 0x17C);
eRoulette->var04_0 = (gSpecialVar_0x8004 & 0x1);
if (gSpecialVar_0x8004 & 0x80)
@@ -371,25 +380,12 @@ void sub_8115238(void)
s0 = &gUnknown_083F8DF4[0];
eRoulette->var22 = s0[eRoulette->var04_0].var03;
eRoulette->var23 = s0[eRoulette->var04_0].var04;
- temp = gUnknown_083F8DF0[eRoulette->var04_0 + eRoulette->var04_7 * 2];
- eRoulette->var19 = temp;
+ eRoulette->var19 = temp = gUnknown_083F8DF0[eRoulette->var04_0 + eRoulette->var04_7 * 2];
eRoulette->var1A_4 = 0x1;
if (temp == 0x1)
- {
- unfaded = (struct PlttData *)&gPlttBufferUnfaded[0];
- faded = (struct PlttData *)&gPlttBufferFaded[0];
- t = arr[0];
- }
+ gPlttBufferUnfaded[0] = gPlttBufferUnfaded[0x51] = gPlttBufferFaded[0] = gPlttBufferFaded[0x51] = arr[0];
else
- {
- unfaded = (struct PlttData *)&gPlttBufferUnfaded[0];
- faded = (struct PlttData *)&gPlttBufferFaded[0];
- t = arr[1];
- }
- faded[0x51] = t;
- faded[0x0] = faded[0x51];
- unfaded[0x51] = t;
- unfaded[0x0] = t;
+ gPlttBufferUnfaded[0] = gPlttBufferUnfaded[0x51] = gPlttBufferFaded[0] = gPlttBufferFaded[0x51] = arr[1];
sub_8124918((&eRoulette->varB8));
for (i = 0; i < 0xD; i++)
sub_812492C((&eRoulette->varB8), i, (struct UnkStruct1 *)&gUnknown_083F8E34[i * 8]);
@@ -397,183 +393,26 @@ void sub_8115238(void)
{
switch (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2))
{
- case SPECIES_TAILLOW:
- eRoulette->var02 |= 0x2;
- break;
case SPECIES_SHROOMISH:
- eRoulette->var02 |= 0x1;
- break;
+ eRoulette->var02 |= 0x1;
+ break;
+ case SPECIES_TAILLOW:
+ eRoulette->var02 |= 0x2;
+ break;
}
}
RtcCalcLocalTime();
}
-#else
-__attribute__((naked))
-void sub_8115238(void)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x8\n\
- ldr r1, _081152C0 @ =gUnknown_083F8EC4\n\
- mov r0, sp\n\
- movs r2, 0x6\n\
- bl memcpy\n\
- ldr r5, _081152C4 @ =0x02019000\n\
- movs r2, 0xBE\n\
- lsls r2, 1\n\
- adds r0, r5, 0\n\
- movs r1, 0\n\
- bl memset\n\
- ldr r0, _081152C8 @ =gSpecialVar_0x8004\n\
- ldrh r2, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r2\n\
- ldrb r1, [r5, 0x4]\n\
- movs r3, 0x4\n\
- negs r3, r3\n\
- ands r3, r1\n\
- orrs r3, r0\n\
- strb r3, [r5, 0x4]\n\
- movs r0, 0x80\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _08115276\n\
- movs r0, 0x80\n\
- orrs r3, r0\n\
- strb r3, [r5, 0x4]\n\
- _08115276:\n\
- ldr r3, _081152CC @ =gUnknown_083F8DF4\n\
- ldrb r2, [r5, 0x4]\n\
- lsls r1, r2, 30\n\
- lsrs r0, r1, 25\n\
- adds r0, r3\n\
- ldrb r0, [r0, 0x3]\n\
- adds r4, r5, 0\n\
- adds r4, 0x22\n\
- strb r0, [r4]\n\
- lsrs r0, r1, 25\n\
- adds r0, r3\n\
- ldrb r0, [r0, 0x4]\n\
- adds r3, r5, 0\n\
- adds r3, 0x23\n\
- strb r0, [r3]\n\
- ldr r0, _081152D0 @ =gUnknown_083F8DF0\n\
- lsrs r1, 30\n\
- lsls r2, 24\n\
- lsrs r2, 31\n\
- lsls r2, 1\n\
- adds r1, r2\n\
- adds r1, r0\n\
- ldrb r2, [r1]\n\
- strb r2, [r5, 0x19]\n\
- ldrb r1, [r5, 0x1A]\n\
- movs r0, 0xF\n\
- ands r0, r1\n\
- movs r1, 0x10\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x1A]\n\
- cmp r2, 0x1\n\
- bne _081152DC\n\
- ldr r4, _081152D4 @ =gPlttBufferUnfaded\n\
- ldr r3, _081152D8 @ =gPlttBufferFaded\n\
- mov r0, sp\n\
- ldrh r2, [r0]\n\
- b _081152E4\n\
- .align 2, 0\n\
- _081152C0: .4byte gUnknown_083F8EC4\n\
- _081152C4: .4byte 0x02019000\n\
- _081152C8: .4byte gSpecialVar_0x8004\n\
- _081152CC: .4byte gUnknown_083F8DF4\n\
- _081152D0: .4byte gUnknown_083F8DF0\n\
- _081152D4: .4byte gPlttBufferUnfaded\n\
- _081152D8: .4byte gPlttBufferFaded\n\
- _081152DC:\n\
- ldr r4, _08115348 @ =gPlttBufferUnfaded\n\
- ldr r3, _0811534C @ =gPlttBufferFaded\n\
- mov r0, sp\n\
- ldrh r2, [r0, 0x2]\n\
- _081152E4:\n\
- adds r0, r3, 0\n\
- adds r0, 0xA2\n\
- strh r2, [r0]\n\
- ldr r1, _08115350 @ =0x0000ffff\n\
- adds r0, r1, 0\n\
- ands r0, r2\n\
- strh r0, [r3]\n\
- ands r0, r1\n\
- adds r2, r4, 0\n\
- adds r2, 0xA2\n\
- strh r0, [r2]\n\
- ands r0, r1\n\
- strh r0, [r4]\n\
- ldr r0, _08115354 @ =0x020190b8\n\
- bl sub_8124918\n\
- movs r4, 0\n\
- ldr r5, _08115358 @ =gUnknown_083F8E34\n\
- _08115308:\n\
- lsls r2, r4, 3\n\
- adds r2, r5\n\
- ldr r0, _08115354 @ =0x020190b8\n\
- adds r1, r4, 0\n\
- bl sub_812492C\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0xC\n\
- bls _08115308\n\
- movs r4, 0\n\
- ldr r5, _0811535C @ =0x02019000\n\
- _08115322:\n\
- movs r0, 0x64\n\
- muls r0, r4\n\
- ldr r1, _08115360 @ =gPlayerParty\n\
- adds r0, r1\n\
- movs r1, 0x41\n\
- bl GetMonData\n\
- adds r1, r0, 0\n\
- movs r0, 0x98\n\
- lsls r0, 1\n\
- cmp r1, r0\n\
- beq _08115364\n\
- adds r0, 0x2\n\
- cmp r1, r0\n\
- bne _0811536C\n\
- ldrb r0, [r5, 0x2]\n\
- movs r1, 0x1\n\
- b _08115368\n\
- .align 2, 0\n\
- _08115348: .4byte gPlttBufferUnfaded\n\
- _0811534C: .4byte gPlttBufferFaded\n\
- _08115350: .4byte 0x0000ffff\n\
- _08115354: .4byte 0x020190b8\n\
- _08115358: .4byte gUnknown_083F8E34\n\
- _0811535C: .4byte 0x02019000\n\
- _08115360: .4byte gPlayerParty\n\
- _08115364:\n\
- ldrb r0, [r5, 0x2]\n\
- movs r1, 0x2\n\
- _08115368:\n\
- orrs r0, r1\n\
- strb r0, [r5, 0x2]\n\
- _0811536C:\n\
- adds r0, r4, 0x1\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r4, 0x5\n\
- bls _08115322\n\
- bl RtcCalcLocalTime\n\
- add sp, 0x8\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
-}
-#endif
void sub_8115384(void)
{
u32 temp_IME;
u8 taskid;
+
+#if DEBUG
+ gUnknown_Debug_03005FB8 = eRoulette;
+#endif
+
switch (gMain.state)
{
case 0x0:
@@ -657,6 +496,7 @@ void sub_8115634(u8 unused)
s16 sin;
s16 cos;
s32 cos32;
+
if (eRoulette->var21++ == eRoulette->var23)
{
eRoulette->var21 = 0x0;
@@ -671,6 +511,15 @@ void sub_8115634(u8 unused)
eRoulette->var2C.a = cos32;
eRoulette->var2C.b = sin;
eRoulette->var2C.c = -sin;
+#if DEBUG
+ if (unk_203955C[0] != 0 && (gMain.newKeys & 8))
+ {
+ gTasks[eRoulette->varA4].func = sub_81157AC;
+ m4aMPlayStop(&gMPlay_SE1);
+ m4aMPlayStop(&gMPlay_SE2);
+ m4aMPlayStop(&gMPlay_SE3);
+ }
+#endif
}
void sub_81156BC(u8 taskid)
@@ -738,6 +587,7 @@ void sub_81157D0(u8 r0)
temp1 = ((r0 - 1) / 5 * 3 + 0x7);
sub_8124DDC(&gBGTilemapBuffers[2][0], 0x0, 0xE, 0x7, 0x10, 0xD);
sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18a20, temp0, temp1, 0x3, 0x3);
+ break;
}
}
@@ -762,7 +612,8 @@ void sub_811597C(u8 taskid)
void sub_81159BC(u8 taskid)
{
s16 i;
- if(eRoulette->var08 & 0x20)
+
+ if (eRoulette->var08 & 0x20)
{
for (i = 0xB; (i < 0xE); i++)
if ((eRoulette->var08 & gUnknown_083F8C00[i].var08) == 0)
@@ -790,6 +641,7 @@ u8 sub_8115A94(s16 *r0, u8 r1)
s8 arr[0x4];
s8 t;
memcpy(&arr, gUnknown_083F8ECA, 0x4);
+ // char arr[] = {-5, 5, -1, 1};
t = (u8)*r0;
switch (r1)
{
@@ -834,9 +686,9 @@ void sub_8115B58(u8 r0)
gTasks[r0].data[0x1] = z;
PlaySE(SE_SELECT);
sub_8124D3C((&eRoulette->varB8), 0xFFFF);
- (&eRoulette->varB8)->var04[0xF].var00_7 = 0x0;
- (&eRoulette->varB8)->var04[0xE].var00_7 = 0x0;
- (&eRoulette->varB8)->var04[0xD].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xF].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xE].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xD].var00_7 = 0x0;
sub_8116EF8(gTasks[r0].data[0x4]);
for (i = 0; i < 0x4; i++)
{
@@ -1032,24 +884,23 @@ u8 sub_8115F58(u16 r0, u16 r1)
}
}
-#ifdef NONMATCHING
void sub_8116100(u8 taskid)
{
u8 randf;
s8 randfinal;
s8 r5;
- u16 g;
+ u16 g = 0;
u16 rand;
u16 randmod;
u16 angles[0x4]; // angles in 90 degree steps
- u8 zero = 0x0;
memcpy(angles, &gUnknown_083F8ECE, 0x8);
+ // u16 angles[] = {0, 180, 90, 270};
rand = Random();
randmod = rand % 0x64;
eRoulette->var7C = gTasks[taskid].data[0x6];
- eRoulette->var7F = zero;
- eRoulette->var7E = zero;
- eRoulette->var7D = zero;
+ eRoulette->var7F = g;
+ eRoulette->var7E = g;
+ eRoulette->var7D = g;
randf = sub_8115F58(gTasks[taskid].data[0x8], rand);
randfinal = (rand % randf) - (randf / 2);
if (gLocalTime.hours < 0xD)
@@ -1060,263 +911,22 @@ void sub_8116100(u8 taskid)
r5 *= 2;
else
r5 = (1 - r5) * 2;
- g = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1A;
- eRoulette->var80 = (g + randfinal);
+ eRoulette->var80 = g = gUnknown_083F8DF4[eRoulette->var04_0].var1A + randfinal;
//
- g = ((float)(u16)(g + randfinal)) / 5.0f;
+ g = S16TOPOSFLOAT(g) / 5.0f;
eRoulette->var82 = g * 3;
eRoulette->var84 = g;
eRoulette->var86 = g;
//
- eRoulette->var88 = (float)(angles[(rand & 0x1) + r5]);
- eRoulette->var8C = (float)((&gUnknown_083F8DF4[eRoulette->var04_0])->var18);
- eRoulette->var90 = ((eRoulette->var8C * 0.5f) - eRoulette->var8C) / (float)(u16)(g * 3);
+ eRoulette->var88 = S16TOPOSFLOAT(angles[(rand & 0x1) + r5]);
+ eRoulette->var8C = S16TOPOSFLOAT(gUnknown_083F8DF4[eRoulette->var04_0].var18);
+ eRoulette->var90 = ((eRoulette->var8C * 0.5f) - eRoulette->var8C) / S16TOPOSFLOAT(g * 3);
eRoulette->var94 = 68.0f;
eRoulette->var9C = 0.0f;
- eRoulette->var98 = -(8.0f / (float)(u16)(g * 3));
+ eRoulette->var98 = -(8.0f / S16TOPOSFLOAT(g * 3));
eRoulette->varA0 = 36.0f;
- gTasks[taskid].func = &sub_8116308;
-}
-#else
-__attribute__((naked))
-void sub_8116100(u8 taskid)
-{
-asm(".syntax unified\n\
-push {r4-r7,lr}\n\
-mov r7, r10\n\
-mov r6, r9\n\
-mov r5, r8\n\
-push {r5-r7}\n\
-sub sp, 0x8\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-mov r9, r0\n\
-movs r4, 0\n\
-ldr r1, _08116188 @ =gUnknown_083F8ECE\n\
-mov r0, sp\n\
-movs r2, 0x8\n\
-bl memcpy\n\
-bl Random\n\
-lsls r0, 16\n\
-lsrs r7, r0, 16\n\
-adds r0, r7, 0\n\
-movs r1, 0x64\n\
-bl __umodsi3\n\
-lsls r0, 16\n\
-lsrs r6, r0, 16\n\
-ldr r3, _0811618C @ =0x02019000\n\
-ldr r1, _08116190 @ =gTasks\n\
-mov r2, r9\n\
-lsls r0, r2, 2\n\
-add r0, r9\n\
-lsls r0, 3\n\
-adds r0, r1\n\
-ldrh r2, [r0, 0x14]\n\
-adds r1, r3, 0\n\
-adds r1, 0x7C\n\
-strb r2, [r1]\n\
-adds r1, 0x3\n\
-strb r4, [r1]\n\
-subs r1, 0x1\n\
-strb r4, [r1]\n\
-subs r1, 0x1\n\
-strb r4, [r1]\n\
-ldrh r0, [r0, 0x18]\n\
-adds r1, r7, 0\n\
-bl sub_8115F58\n\
-adds r4, r0, 0\n\
-lsls r4, 24\n\
-lsrs r1, r4, 24\n\
-adds r0, r7, 0\n\
-bl __modsi3\n\
-lsrs r4, 25\n\
-subs r0, r4\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r0, _08116194 @ =gLocalTime\n\
-ldrb r0, [r0, 0x2]\n\
-lsls r0, 24\n\
-asrs r0, 24\n\
-movs r5, 0x1\n\
-cmp r0, 0xC\n\
-bgt _08116180\n\
-movs r5, 0\n\
-_08116180:\n\
-cmp r6, 0x4F\n\
-bhi _08116198\n\
-lsls r0, r5, 25\n\
-b _081161A2\n\
-.align 2, 0\n\
-_08116188: .4byte gUnknown_083F8ECE\n\
-_0811618C: .4byte 0x02019000\n\
-_08116190: .4byte gTasks\n\
-_08116194: .4byte gLocalTime\n\
-_08116198:\n\
-lsls r1, r5, 24\n\
-asrs r1, 24\n\
-movs r0, 0x1\n\
-subs r0, r1\n\
-lsls r0, 25\n\
-_081161A2:\n\
-lsrs r5, r0, 24\n\
-ldr r6, _081162D8 @ =0x02019000\n\
-ldrb r0, [r6, 0x4]\n\
-lsls r0, 30\n\
-mov r10, r0\n\
-lsrs r0, 25\n\
-ldr r1, _081162DC @ =gUnknown_083F8DF4\n\
-adds r0, r1\n\
-lsls r4, 24\n\
-asrs r4, 24\n\
-ldrh r0, [r0, 0x1A]\n\
-adds r4, r0\n\
-adds r0, r6, 0\n\
-adds r0, 0x80\n\
-strh r4, [r0]\n\
-lsls r4, 16\n\
-asrs r4, 16\n\
-adds r0, r4, 0\n\
-bl __floatsisf\n\
-cmp r4, 0\n\
-bge _081161D4\n\
-ldr r1, _081162E0 @ =0x47800000\n\
-bl __addsf3\n\
-_081161D4:\n\
-ldr r1, _081162E4 @ =0x40a00000\n\
-bl __divsf3\n\
-bl __fixunssfsi\n\
-lsls r0, 16\n\
-lsrs r4, r0, 16\n\
-lsls r0, r4, 1\n\
-adds r0, r4\n\
-mov r8, r0\n\
-adds r0, r6, 0\n\
-adds r0, 0x82\n\
-mov r2, r8\n\
-strh r2, [r0]\n\
-adds r0, 0x2\n\
-strh r4, [r0]\n\
-adds r0, 0x2\n\
-strh r4, [r0]\n\
-movs r0, 0x1\n\
-ands r0, r7\n\
-lsls r1, r5, 24\n\
-asrs r1, 24\n\
-adds r0, r1\n\
-lsls r0, 1\n\
-add r0, sp\n\
-movs r1, 0\n\
-ldrsh r4, [r0, r1]\n\
-adds r0, r4, 0\n\
-bl __floatsisf\n\
-cmp r4, 0\n\
-bge _0811621A\n\
-ldr r1, _081162E0 @ =0x47800000\n\
-bl __addsf3\n\
-_0811621A:\n\
-ldr r2, _081162E8 @ =0x02019088\n\
-str r0, [r2]\n\
-adds r7, r6, 0\n\
-adds r7, 0x8C\n\
-mov r1, r10\n\
-lsrs r0, r1, 25\n\
-ldr r2, _081162DC @ =gUnknown_083F8DF4\n\
-adds r0, r2\n\
-movs r1, 0x18\n\
-ldrsh r4, [r0, r1]\n\
-adds r0, r4, 0\n\
-bl __floatsisf\n\
-adds r5, r0, 0\n\
-cmp r4, 0\n\
-bge _08116242\n\
-ldr r1, _081162E0 @ =0x47800000\n\
-bl __addsf3\n\
-adds r5, r0, 0\n\
-_08116242:\n\
-str r5, [r7]\n\
-adds r7, r6, 0\n\
-adds r7, 0x90\n\
-ldr r1, _081162EC @ =0x3f000000\n\
-adds r0, r5, 0\n\
-bl __mulsf3\n\
-adds r1, r5, 0\n\
-bl __subsf3\n\
-adds r5, r0, 0\n\
-mov r2, r8\n\
-lsls r0, r2, 16\n\
-asrs r4, r0, 16\n\
-adds r0, r4, 0\n\
-bl __floatsisf\n\
-adds r2, r0, 0\n\
-cmp r4, 0\n\
-bge _08116272\n\
-ldr r1, _081162E0 @ =0x47800000\n\
-bl __addsf3\n\
-adds r2, r0, 0\n\
-_08116272:\n\
-adds r0, r5, 0\n\
-adds r1, r2, 0\n\
-bl __divsf3\n\
-str r0, [r7]\n\
-adds r1, r6, 0\n\
-adds r1, 0x94\n\
-ldr r0, _081162F0 @ =0x42880000\n\
-str r0, [r1]\n\
-adds r1, 0x8\n\
-ldr r0, _081162F4 @ =0x00000000\n\
-str r0, [r1]\n\
-adds r5, r6, 0\n\
-adds r5, 0x98\n\
-adds r0, r4, 0\n\
-bl __floatsisf\n\
-adds r2, r0, 0\n\
-cmp r4, 0\n\
-bge _081162A2\n\
-ldr r1, _081162E0 @ =0x47800000\n\
-bl __addsf3\n\
-adds r2, r0, 0\n\
-_081162A2:\n\
-ldr r0, _081162F8 @ =0x41000000\n\
-adds r1, r2, 0\n\
-bl __divsf3\n\
-bl __negsf2\n\
-str r0, [r5]\n\
-adds r1, r6, 0\n\
-adds r1, 0xA0\n\
-ldr r0, _081162FC @ =0x42100000\n\
-str r0, [r1]\n\
-ldr r1, _08116300 @ =gTasks\n\
-mov r2, r9\n\
-lsls r0, r2, 2\n\
-add r0, r9\n\
-lsls r0, 3\n\
-adds r0, r1\n\
-ldr r1, _08116304 @ =sub_8116308\n\
-str r1, [r0]\n\
-add sp, 0x8\n\
-pop {r3-r5}\n\
-mov r8, r3\n\
-mov r9, r4\n\
-mov r10, r5\n\
-pop {r4-r7}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_081162D8: .4byte 0x02019000\n\
-_081162DC: .4byte gUnknown_083F8DF4\n\
-_081162E0: .4byte 0x47800000\n\
-_081162E4: .4byte 0x40a00000\n\
-_081162E8: .4byte 0x02019088\n\
-_081162EC: .4byte 0x3f000000\n\
-_081162F0: .4byte 0x42880000\n\
-_081162F4: .4byte 0x00000000\n\
-_081162F8: .4byte 0x41000000\n\
-_081162FC: .4byte 0x42100000\n\
-_08116300: .4byte gTasks\n\
-_08116304: .4byte sub_8116308\n\
-.syntax divided\n");
+ gTasks[taskid].func = sub_8116308;
}
-#endif
void sub_8116308(u8 taskid)
{
@@ -1324,7 +934,7 @@ void sub_8116308(u8 taskid)
eRoulette->var03_7 = 1;
index = eRoulette->var3C[eRoulette->var7C];
eRoulette->var38 = &gSprites[index];
- (&gSprites[index])->callback = &sub_81191F4;
+ eRoulette->var38->callback = sub_81191F4;
gTasks[taskid].data[0x6]++;
gTasks[taskid].data[0x8]++;
sub_81182F8(0x6 - gTasks[taskid].data[0x6]);
@@ -1375,9 +985,9 @@ void sub_8116474(u8 taskid)
{
if (gTasks[taskid].data[0x1]-- > 0x0)
{
- if(gTasks[taskid].data[0x1] > 0x2)
+ if (gTasks[taskid].data[0x1] > 0x2)
gSpriteCoordOffsetX -= 0x2;
- if((eRoulette->var26 -= 0x4) == 0x68)
+ if ((eRoulette->var26 -= 0x4) == 0x68)
gSprites[eRoulette->var3C[0x19]].callback = &sub_81184CC;
}
else
@@ -1395,7 +1005,7 @@ void sub_8116514(u8 taskid)
{
if (gTasks[taskid].data[0x1]-- > 0x1)
{
- switch(gTasks[taskid].data[0x1] % 0x10)
+ switch (gTasks[taskid].data[0x1] % 0x10)
{
case 0x8:
sub_8117AA8(0x0, 0xFF);
@@ -1415,14 +1025,14 @@ void sub_8116514(u8 taskid)
void sub_811659C(u8 taskid)
{
- switch(gTasks[taskid].data[0x5])
+ switch (gTasks[taskid].data[0x5])
{
case 0x1:
case 0x2:
if (IsFanfareTaskInactive())
{
u32 wins = GetGameStat(GAME_STAT_CONSECUTIVE_ROULETTE_WINS);
- if(wins < ++gTasks[taskid].data[0xB])
+ if (wins < ++gTasks[taskid].data[0xB])
SetGameStat(GAME_STAT_CONSECUTIVE_ROULETTE_WINS, gTasks[taskid].data[0xB]);
sub_8116C34(taskid, &sub_811677C, 0xFFFF, 0x3);
}
@@ -1439,7 +1049,7 @@ void sub_811659C(u8 taskid)
void sub_8116638(u8 taskid)
{
- switch(gTasks[taskid].data[0x5])
+ switch (gTasks[taskid].data[0x5])
{
case 0x1:
case 0x2:
@@ -1469,7 +1079,7 @@ void sub_8116638(u8 taskid)
void sub_81166E8(u8 taskid)
{
s32 r0 = gTasks[taskid].data[0x7];
- switch(r0)
+ switch (r0)
{
case 0x0:
gTasks[taskid].data[0xD]++;
@@ -1510,9 +1120,9 @@ void sub_811677C(u8 taskid)
void sub_81167F4(u8 taskid)
{
sub_8124D3C((&eRoulette->varB8), 0xFFFF);
- (&eRoulette->varB8)->var04[0xF].var00_7 = 0x0;
- (&eRoulette->varB8)->var04[0xE].var00_7 = 0x0;
- (&eRoulette->varB8)->var04[0xD].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xF].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xE].var00_7 = 0x0;
+ eRoulette->varB8.var04[0xD].var00_7 = 0x0;
gSprites[eRoulette->var3C[0x7 + gUnknown_083F8C00[gTasks[taskid].data[0xC]].var00]].invisible = TRUE;
gTasks[taskid].func = &sub_8116880;
}
@@ -1593,11 +1203,11 @@ void sub_8116AB0(u8 taskid)
gTasks[taskid].func = &sub_8116B40;
}
-void sub_8116B40(u8 taskid) // end oulette ?
+void sub_8116B40(u8 taskId) // end roulette ?
{
if (UpdatePaletteFade() == 0)
{
- SetVBlankCallback(0x0);
+ SetVBlankCallback(NULL);
memset(eRoulette, 0x0, 0x17C);
gSpriteCoordOffsetX = gSpriteCoordOffsetY = 0x0;
sub_80F9368();
@@ -1610,13 +1220,16 @@ void sub_8116B40(u8 taskid) // end oulette ?
REG_BLDY = 0x0;
gFieldCallback = &sub_8080990;
SetMainCallback2(&c2_exit_to_overworld_2_switch);
- DestroyTask(taskid);
+ DestroyTask(taskId);
+#if DEBUG
+ unk_203955C[0] = 0;
+#endif
}
}
void sub_8116BC0(u8 taskid)
{
- if(eRoulette->varA8 == 0 || gMain.newKeys & eRoulette->varAA)
+ if (eRoulette->varA8 == 0 || gMain.newKeys & eRoulette->varAA)
{
gTasks[taskid].func = eRoulette->varAC;
if (eRoulette->varAA > 0)
@@ -1632,7 +1245,7 @@ void sub_8116BC0(u8 taskid)
void sub_8116C34(u8 taskid, TaskFunc r1, u16 r2, u16 r3)
{
eRoulette->varB4 = gTasks[taskid].func;
- if(r1 == NULL)
+ if (r1 == NULL)
r1 = eRoulette->varB4;
eRoulette->varAC = r1;
eRoulette->varA8 = r2;
@@ -1676,6 +1289,8 @@ u8 sub_8116D54(u8 taskid, u8 r1)
u32 t1[0x3];
memcpy(t0, gUnknown_083F8ED8, 0x10);
memcpy(t1, gUnknown_083F8EE8, 0xC);
+ // u32 t0[] = {67650, 135300, 270600, 541200};
+ // u32 t1[] = {0x3e0, 0x7c00, 0xf8000};
if (r1 > 0xB)
{
return 0x0;
@@ -1710,7 +1325,7 @@ u8 sub_8116E5C(u8 r0, u8 r1)
u8 t = r0;
if (--r0 < 0x13)
{
- switch(r1)
+ switch (r1)
{
case 0x0:
return 0x3;
@@ -1733,17 +1348,14 @@ u8 sub_8116E5C(u8 r0, u8 r1)
return 0x0;
}
-#ifdef NONMATCHING // stack variable switched with a register variable
void sub_8116EF8(u8 r0)
{
- u32 var0 = 0x0;
- struct UnkStruct1 var1[0x3];
- u32 var2;
+ u16 var0 = 0x0;
+ u8 var2;
u16 var3;
- u32 var4;
u8 i;
- switch(r0)
+ switch (r0)
{
case 0x5:
case 0xA:
@@ -1751,387 +1363,78 @@ void sub_8116EF8(u8 r0)
for (i = (r0 + 0x1); i < (r0 + 0x5); i++)
if (!(eRoulette->var08 & gUnknown_083F8C00[i].var08))
var0 |= gUnknown_083F8C00[i].var10;
- var0 &= 0xDFFF;
- sub_8124CE8(&eRoulette->varB8, var0);
+ sub_8124CE8(&eRoulette->varB8, var0 &= 0xDFFF);
break;
default:
- memcpy(var1, gUnknown_083F8E9C, 0x18);
- if ((u8)(r0 - 0x1) < 0x4)
- var2 = 0x3;
+ {
+ struct UnkStruct1 var1[0x3];
+ memcpy(var1, gUnknown_083F8E9C, sizeof var1);
+ if (r0 > 0 && r0 < 5)
+ var2 = 3;
else
- var2 = 0x1;
- var3 = ((r0 / 0x5) - 0x1);
- switch((u8)r0 % 0x5)
+ var2 = 1;
+ var3 = r0 / 5 - 1;
+ switch (r0 % 5)
{
- case 0x1:
- var3 = gSprites[eRoulette->var3C[0x7 + 0x0]].oam.paletteNum * 0x10;
- break;
- case 0x2:
- var3 = gSprites[eRoulette->var3C[0x7 + 0x1]].oam.paletteNum * 0x10;
- break;
- case 0x3:
- var3 = gSprites[eRoulette->var3C[0x7 + 0x2]].oam.paletteNum * 0x10;
- break;
- case 0x4:
- var3 = gSprites[eRoulette->var3C[0x7 + 0x3]].oam.paletteNum * 0x10;
- break;
+ case 0x1:
+ var3 = gSprites[eRoulette->var3C[7 + 0]].oam.paletteNum * 0x10;
+ break;
+ case 0x2:
+ var3 = gSprites[eRoulette->var3C[7 + 1]].oam.paletteNum * 0x10;
+ break;
+ case 0x3:
+ var3 = gSprites[eRoulette->var3C[7 + 2]].oam.paletteNum * 0x10;
+ break;
+ case 0x4:
+ var3 = gSprites[eRoulette->var3C[7 + 3]].oam.paletteNum * 0x10;
+ break;
}
- if (var2 == 0x1)
+ if (var2 == 1)
{
if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08))
{
- var4 = (r0 / 0x5);
- var1[var4 - 0x1].var02 += var3;
- sub_812492C(&eRoulette->varB8, 0xD, &var1[var4 - 0x2]);
- sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10);
+ var1[r0 / 5 - 1].var02 += var3;
+ sub_812492C(&eRoulette->varB8, 13, &var1[r0 / 5 - 1]);
}
+ else
+ return;
}
else
{
- for (i = 0; i < 0x3; i++)
+ for (i = 0; i < 3; i++)
{
- u8 var4 = i * 0x5 + r0 + 0x5;
+ u8 var4 = i * 5 + r0 + 5;
if (!(eRoulette->var08 & gUnknown_083F8C00[var4].var08))
{
- u8 var5 = (var4 / 0x5);
- var1[var5 - 0x1].var02 += var3;
- sub_812492C(&eRoulette->varB8, (u8)(0xD + i), &var1[var5 - 0x2]);
- if (var2 == 0x3)
+ var1[var4 / 5 - 1].var02 += var3;
+ sub_812492C(&eRoulette->varB8, i + 13, &var1[var4 / 5 - 1]);
+ if (var2 == 3)
var0 = gUnknown_083F8C00[var4].var10;
var2--;
}
}
- if (var2 != 0x2)
- var0 = 0x0;
- sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10);
+ if (var2 != 2)
+ var0 = 0;
}
+ sub_8124CE8(&eRoulette->varB8, var0 |= gUnknown_083F8C00[r0].var10);
+ break;
+ }
}
}
-#else
-__attribute__((naked))
-void sub_8116EF8(u8 r0)
-{
-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, 0x20\n\
-lsls r0, 24\n\
-lsrs r6, r0, 24\n\
-movs r0, 0\n\
-str r0, [sp, 0x18]\n\
-cmp r6, 0xA\n\
-beq _08116F1E\n\
-cmp r6, 0xA\n\
-bgt _08116F1A\n\
-cmp r6, 0x5\n\
-beq _08116F1E\n\
-b _08116F7C\n\
-_08116F1A:\n\
-cmp r6, 0xF\n\
-bne _08116F7C\n\
-_08116F1E:\n\
-adds r0, r6, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-adds r0, r6, 0x5\n\
-ldr r7, _08116F70 @ =0x020190b8\n\
-cmp r4, r0\n\
-bge _08116F5E\n\
-adds r1, r7, 0\n\
-subs r1, 0xB8\n\
-ldr r3, _08116F74 @ =gUnknown_083F8C00\n\
-ldr r5, [r1, 0x8]\n\
-adds r6, r3, 0\n\
-adds r6, 0x8\n\
-adds r2, r0, 0\n\
-_08116F3A:\n\
-lsls r0, r4, 2\n\
-adds r0, r4\n\
-lsls r1, r0, 2\n\
-adds r0, r1, r6\n\
-ldr r0, [r0]\n\
-ands r0, r5\n\
-cmp r0, 0\n\
-bne _08116F54\n\
-adds r0, r1, r3\n\
-ldrh r0, [r0, 0x10]\n\
-ldr r1, [sp, 0x18]\n\
-orrs r1, r0\n\
-str r1, [sp, 0x18]\n\
-_08116F54:\n\
-adds r0, r4, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-cmp r4, r2\n\
-blt _08116F3A\n\
-_08116F5E:\n\
-ldr r0, _08116F78 @ =0x0000dfff\n\
-ldr r2, [sp, 0x18]\n\
-ands r2, r0\n\
-str r2, [sp, 0x18]\n\
-adds r0, r7, 0\n\
-adds r1, r2, 0\n\
-bl sub_8124CE8\n\
-b _0811713C\n\
-.align 2, 0\n\
-_08116F70: .4byte 0x020190b8\n\
-_08116F74: .4byte gUnknown_083F8C00\n\
-_08116F78: .4byte 0x0000dfff\n\
-_08116F7C:\n\
-mov r0, sp\n\
-ldr r1, _08116FC8 @ =gUnknown_083F8E9C\n\
-ldm r1!, {r2-r4}\n\
-stm r0!, {r2-r4}\n\
-ldm r1!, {r2-r4}\n\
-stm r0!, {r2-r4}\n\
-subs r0, r6, 0x1\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-movs r3, 0x1\n\
-mov r10, r3\n\
-cmp r0, 0x3\n\
-bhi _08116F9A\n\
-movs r4, 0x3\n\
-mov r10, r4\n\
-_08116F9A:\n\
-adds r0, r6, 0\n\
-movs r1, 0x5\n\
-bl __udivsi3\n\
-lsls r0, 24\n\
-lsrs r0, 8\n\
-ldr r1, _08116FCC @ =0xffff0000\n\
-adds r0, r1\n\
-lsrs r7, r0, 16\n\
-adds r0, r6, 0\n\
-movs r1, 0x5\n\
-bl __umodsi3\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-cmp r0, 0x2\n\
-beq _08116FF8\n\
-cmp r0, 0x2\n\
-bgt _08116FD4\n\
-cmp r0, 0x1\n\
-beq _08116FE4\n\
-ldr r4, _08116FD0 @ =0x02019000\n\
-b _0811703A\n\
-.align 2, 0\n\
-_08116FC8: .4byte gUnknown_083F8E9C\n\
-_08116FCC: .4byte 0xffff0000\n\
-_08116FD0: .4byte 0x02019000\n\
-_08116FD4:\n\
-cmp r0, 0x3\n\
-beq _0811700C\n\
-cmp r0, 0x4\n\
-beq _08117020\n\
-ldr r4, _08116FE0 @ =0x02019000\n\
-b _0811703A\n\
-.align 2, 0\n\
-_08116FE0: .4byte 0x02019000\n\
-_08116FE4:\n\
-ldr r3, _08116FF0 @ =gSprites\n\
-ldr r2, _08116FF4 @ =0x02019000\n\
-adds r0, r2, 0\n\
-adds r0, 0x43\n\
-b _08117028\n\
-.align 2, 0\n\
-_08116FF0: .4byte gSprites\n\
-_08116FF4: .4byte 0x02019000\n\
-_08116FF8:\n\
-ldr r3, _08117004 @ =gSprites\n\
-ldr r2, _08117008 @ =0x02019000\n\
-adds r0, r2, 0\n\
-adds r0, 0x44\n\
-b _08117028\n\
-.align 2, 0\n\
-_08117004: .4byte gSprites\n\
-_08117008: .4byte 0x02019000\n\
-_0811700C:\n\
-ldr r3, _08117018 @ =gSprites\n\
-ldr r2, _0811701C @ =0x02019000\n\
-adds r0, r2, 0\n\
-adds r0, 0x45\n\
-b _08117028\n\
-.align 2, 0\n\
-_08117018: .4byte gSprites\n\
-_0811701C: .4byte 0x02019000\n\
-_08117020:\n\
-ldr r3, _08117088 @ =gSprites\n\
-ldr r2, _0811708C @ =0x02019000\n\
-adds r0, r2, 0\n\
-adds r0, 0x46\n\
-_08117028:\n\
-ldrb r1, [r0]\n\
-lsls r0, r1, 4\n\
-adds r0, r1\n\
-lsls r0, 2\n\
-adds r0, r3\n\
-ldrb r0, [r0, 0x5]\n\
-lsrs r0, 4\n\
-lsls r7, r0, 4\n\
-adds r4, r2, 0\n\
-_0811703A:\n\
-mov r2, r10\n\
-cmp r2, 0x1\n\
-bne _08117094\n\
-ldr r1, _08117090 @ =gUnknown_083F8C00\n\
-lsls r2, r6, 2\n\
-adds r0, r2, r6\n\
-lsls r0, 2\n\
-adds r1, 0x8\n\
-adds r0, r1\n\
-ldr r1, [r4, 0x8]\n\
-ldr r0, [r0]\n\
-ands r1, r0\n\
-str r2, [sp, 0x1C]\n\
-cmp r1, 0\n\
-bne _0811713C\n\
-adds r0, r6, 0\n\
-movs r1, 0x5\n\
-bl __udivsi3\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-subs r1, r0, 0x1\n\
-lsls r1, 3\n\
-mov r3, sp\n\
-adds r2, r3, r1\n\
-ldrh r1, [r2, 0x2]\n\
-adds r1, r7, r1\n\
-strh r1, [r2, 0x2]\n\
-adds r1, r4, 0\n\
-adds r1, 0xB8\n\
-lsls r0, 3\n\
-subs r0, 0x8\n\
-adds r2, r3, r0\n\
-adds r0, r1, 0\n\
-movs r1, 0xD\n\
-bl sub_812492C\n\
-b _08117122\n\
-.align 2, 0\n\
-_08117088: .4byte gSprites\n\
-_0811708C: .4byte 0x02019000\n\
-_08117090: .4byte gUnknown_083F8C00\n\
-_08117094:\n\
-movs r4, 0\n\
-lsls r0, r6, 2\n\
-str r0, [sp, 0x1C]\n\
-ldr r1, _0811714C @ =0x02019000\n\
-mov r8, r1\n\
-ldr r2, _08117150 @ =gUnknown_083F8C00\n\
-mov r9, r2\n\
-_081170A2:\n\
-lsls r0, r4, 2\n\
-adds r0, r4\n\
-adds r0, r6, r0\n\
-adds r0, 0x5\n\
-lsls r0, 24\n\
-lsrs r2, r0, 24\n\
-lsls r0, r2, 2\n\
-adds r0, r2\n\
-lsls r5, r0, 2\n\
-mov r0, r9\n\
-adds r0, 0x8\n\
-adds r0, r5, r0\n\
-mov r3, r8\n\
-ldr r1, [r3, 0x8]\n\
-ldr r0, [r0]\n\
-ands r1, r0\n\
-cmp r1, 0\n\
-bne _0811710E\n\
-adds r0, r2, 0\n\
-movs r1, 0x5\n\
-bl __udivsi3\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-subs r1, r0, 0x1\n\
-lsls r1, 3\n\
-mov r3, sp\n\
-adds r2, r3, r1\n\
-ldrh r1, [r2, 0x2]\n\
-adds r1, r7, r1\n\
-strh r1, [r2, 0x2]\n\
-adds r1, r4, 0\n\
-adds r1, 0xD\n\
-lsls r1, 24\n\
-lsrs r1, 24\n\
-lsls r0, 3\n\
-subs r0, 0x8\n\
-adds r2, r3, r0\n\
-mov r0, r8\n\
-adds r0, 0xB8\n\
-bl sub_812492C\n\
-mov r0, r10\n\
-cmp r0, 0x3\n\
-bne _08117104\n\
-mov r1, r9\n\
-adds r0, r5, r1\n\
-ldrh r0, [r0, 0x10]\n\
-str r0, [sp, 0x18]\n\
-_08117104:\n\
-mov r0, r10\n\
-subs r0, 0x1\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-mov r10, r0\n\
-_0811710E:\n\
-adds r0, r4, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-cmp r4, 0x2\n\
-bls _081170A2\n\
-mov r2, r10\n\
-cmp r2, 0x2\n\
-beq _08117122\n\
-movs r3, 0\n\
-str r3, [sp, 0x18]\n\
-_08117122:\n\
-ldr r0, _08117154 @ =0x020190b8\n\
-ldr r2, _08117150 @ =gUnknown_083F8C00\n\
-ldr r4, [sp, 0x1C]\n\
-adds r1, r4, r6\n\
-lsls r1, 2\n\
-adds r1, r2\n\
-ldrh r1, [r1, 0x10]\n\
-ldr r2, [sp, 0x18]\n\
-orrs r2, r1\n\
-str r2, [sp, 0x18]\n\
-adds r1, r2, 0\n\
-bl sub_8124CE8\n\
-_0811713C:\n\
-add sp, 0x20\n\
-pop {r3-r5}\n\
-mov r8, r3\n\
-mov r9, r4\n\
-mov r10, r5\n\
-pop {r4-r7}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_0811714C: .4byte 0x02019000\n\
-_08117150: .4byte gUnknown_083F8C00\n\
-_08117154: .4byte 0x020190b8\n\
-.syntax divided\n");
-}
-#endif
-
-#ifdef NONMATCHING //not enough stack usage
void sub_8117158(u8 r0)
{
- u8 i;
- u8 l;
+ vu8 i;
+ vu8 z;
+ vu16 var1;
+ vu16 var2;
+ vu8 var0;
u8 v[0x5];
- u8 z;
- u8 var0;
- u8 var1;
- u16 var2;
+ u8 l;
eRoulette->var2A = 0x1;
sub_8117AA8(0x0, 0x0);
- sub_8124E2C(&gBGTilemapBuffers[2][0], ewram18800, 0xE, 0x7, 0x10, 0xD);
- switch(r0)
+ sub_8124E2C(gBGTilemapBuffers[1], (u16 *)ewram18800, 0xE, 0x7, 0x10, 0xD);
+ switch (r0)
{
case 0x0:
return;
@@ -2153,421 +1456,44 @@ void sub_8117158(u8 r0)
}
for (i = 0x0; i < l; i++)
{
- //_0811727C
var0 = gUnknown_083F8C00[v[i]].var06;
var1 = gUnknown_083F8C00[v[i]].var03;
for (z = 0; z < 0x3; z++)
{
var2 = (gUnknown_083F8C00[v[i]].var04 + z) * 0x20;
- gBGTilemapBuffers[2][var2 + var1 + 0x0] = ewram189a0[(var0 + z) * 0x3 + 0x0];
- gBGTilemapBuffers[2][var2 + var1 + 0x1] = ewram189a0[(var0 + z) * 0x3 + 0x1];
- gBGTilemapBuffers[2][var2 + var1 + 0x2] = ewram189a0[(var0 + z) * 0x3 + 0x2];
+ gBGTilemapBuffers[1][var1 + var2 + 0x0] = ewram189a0[(var0 + z) * 0x3 + 0x0];
+ gBGTilemapBuffers[1][var1 + var2 + 0x1] = ewram189a0[(var0 + z) * 0x3 + 0x1];
+ gBGTilemapBuffers[1][var1 + var2 + 0x2] = ewram189a0[(var0 + z) * 0x3 + 0x2];
}
- //_08117350
}
}
-#else
-__attribute__((naked))
-void sub_8117158(u8 r0)
-{
-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\
-lsls r0, 24\n\
-lsrs r5, r0, 24\n\
-ldr r4, _0811719C @ =0x02019000\n\
-movs r0, 0x1\n\
-strh r0, [r4, 0x2A]\n\
-movs r0, 0\n\
-movs r1, 0\n\
-bl sub_8117AA8\n\
-ldr r0, _081171A0 @ =gBGTilemapBuffers + 0x800\n\
-ldr r1, _081171A4 @ =0xfffff800\n\
-adds r4, r1\n\
-movs r1, 0x10\n\
-str r1, [sp]\n\
-movs r1, 0xD\n\
-str r1, [sp, 0x4]\n\
-adds r1, r4, 0\n\
-movs r2, 0xE\n\
-movs r3, 0x7\n\
-bl sub_8124E2C\n\
-cmp r5, 0xF\n\
-bhi _08117250\n\
-lsls r0, r5, 2\n\
-ldr r1, _081171A8 @ =_081171AC\n\
-adds r0, r1\n\
-ldr r0, [r0]\n\
-mov pc, r0\n\
-.align 2, 0\n\
-_0811719C: .4byte 0x02019000\n\
-_081171A0: .4byte gBGTilemapBuffers + 0x800\n\
-_081171A4: .4byte 0xfffff800\n\
-_081171A8: .4byte _081171AC\n\
-.align 2, 0\n\
-_081171AC:\n\
-.4byte _08117360\n\
-.4byte _081171EC\n\
-.4byte _081171EC\n\
-.4byte _081171EC\n\
-.4byte _081171EC\n\
-.4byte _08117220\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117220\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117250\n\
-.4byte _08117220\n\
-_081171EC:\n\
-movs r0, 0x4\n\
-str r0, [sp, 0x18]\n\
-add r1, sp, 0x8\n\
-movs r0, 0\n\
-strb r0, [r1]\n\
-adds r0, r1, 0\n\
-ldrb r0, [r0]\n\
-cmp r0, 0x3\n\
-bhi _08117258\n\
-add r4, sp, 0x10\n\
-adds r3, r1, 0\n\
-_08117202:\n\
-ldrb r2, [r3]\n\
-adds r2, r4\n\
-ldrb r1, [r3]\n\
-lsls r0, r1, 2\n\
-adds r0, r1\n\
-adds r0, r5, r0\n\
-strb r0, [r2]\n\
-ldrb r0, [r3]\n\
-adds r0, 0x1\n\
-strb r0, [r3]\n\
-ldrb r0, [r3]\n\
-ldr r1, [sp, 0x18]\n\
-cmp r0, r1\n\
-bcc _08117202\n\
-b _08117258\n\
-_08117220:\n\
-movs r0, 0x5\n\
-str r0, [sp, 0x18]\n\
-add r1, sp, 0x8\n\
-movs r0, 0\n\
-strb r0, [r1]\n\
-adds r0, r1, 0\n\
-ldrb r0, [r0]\n\
-cmp r0, 0x4\n\
-bhi _08117258\n\
-add r3, sp, 0x10\n\
-adds r2, r1, 0\n\
-_08117236:\n\
-ldrb r1, [r2]\n\
-adds r1, r3\n\
-ldrb r0, [r2]\n\
-adds r0, r5, r0\n\
-strb r0, [r1]\n\
-ldrb r0, [r2]\n\
-adds r0, 0x1\n\
-strb r0, [r2]\n\
-ldrb r0, [r2]\n\
-ldr r1, [sp, 0x18]\n\
-cmp r0, r1\n\
-bcc _08117236\n\
-b _08117258\n\
-_08117250:\n\
-movs r0, 0x1\n\
-str r0, [sp, 0x18]\n\
-add r0, sp, 0x10\n\
-strb r5, [r0]\n\
-_08117258:\n\
-add r1, sp, 0x8\n\
-movs r0, 0\n\
-strb r0, [r1]\n\
-adds r0, r1, 0\n\
-ldrb r0, [r0]\n\
-ldr r1, [sp, 0x18]\n\
-cmp r0, r1\n\
-bcs _08117360\n\
-mov r0, sp\n\
-adds r0, 0xE\n\
-str r0, [sp, 0x1C]\n\
-add r1, sp, 0x10\n\
-mov r9, r1\n\
-add r0, sp, 0x8\n\
-mov r12, r0\n\
-mov r1, sp\n\
-adds r1, 0xA\n\
-str r1, [sp, 0x20]\n\
-_0811727C:\n\
-mov r1, r12\n\
-ldrb r0, [r1]\n\
-add r0, r9\n\
-ldrb r1, [r0]\n\
-lsls r0, r1, 2\n\
-adds r0, r1\n\
-lsls r0, 2\n\
-ldr r1, _08117370 @ =gUnknown_083F8C00\n\
-adds r0, r1\n\
-ldrb r0, [r0, 0x6]\n\
-ldr r1, [sp, 0x1C]\n\
-strb r0, [r1]\n\
-mov r1, r12\n\
-ldrb r0, [r1]\n\
-add r0, r9\n\
-ldrb r1, [r0]\n\
-lsls r0, r1, 2\n\
-adds r0, r1\n\
-lsls r0, 2\n\
-ldr r1, _08117370 @ =gUnknown_083F8C00\n\
-adds r0, r1\n\
-ldrb r0, [r0, 0x3]\n\
-ldr r1, [sp, 0x20]\n\
-strh r0, [r1]\n\
-mov r4, sp\n\
-adds r4, 0x9\n\
-movs r0, 0\n\
-strb r0, [r4]\n\
-ldrb r0, [r4]\n\
-cmp r0, 0x2\n\
-bhi _08117350\n\
-add r5, sp, 0xC\n\
-ldr r7, [sp, 0x20]\n\
-ldr r0, _08117374 @ =gBGTilemapBuffers + 0x800\n\
-mov r8, r0\n\
-ldr r6, [sp, 0x1C]\n\
-ldr r1, _08117378 @ =0x020189a0\n\
-mov r10, r1\n\
-_081172C8:\n\
-mov r1, r12\n\
-ldrb r0, [r1]\n\
-add r0, r9\n\
-ldrb r0, [r0]\n\
-lsls r1, r0, 2\n\
-adds r1, r0\n\
-lsls r1, 2\n\
-ldr r0, _08117370 @ =gUnknown_083F8C00\n\
-adds r1, r0\n\
-adds r3, r4, 0\n\
-ldrb r0, [r4]\n\
-ldrb r1, [r1, 0x4]\n\
-adds r0, r1\n\
-lsls r0, 5\n\
-strh r0, [r5]\n\
-ldrh r0, [r7]\n\
-ldrh r2, [r5]\n\
-adds r2, r0\n\
-lsls r2, 1\n\
-add r2, r8\n\
-ldrb r0, [r6]\n\
-ldrb r1, [r4]\n\
-adds r1, r0\n\
-lsls r0, r1, 1\n\
-adds r0, r1\n\
-lsls r0, 1\n\
-add r0, r10\n\
-ldrh r0, [r0]\n\
-strh r0, [r2]\n\
-ldrh r0, [r7]\n\
-ldrh r2, [r5]\n\
-adds r2, r0\n\
-adds r2, 0x1\n\
-lsls r2, 1\n\
-add r2, r8\n\
-ldrb r0, [r6]\n\
-ldrb r1, [r4]\n\
-adds r1, r0\n\
-lsls r0, r1, 1\n\
-adds r0, r1\n\
-lsls r0, 1\n\
-mov r1, r10\n\
-adds r1, 0x2\n\
-adds r0, r1\n\
-ldrh r0, [r0]\n\
-strh r0, [r2]\n\
-ldrh r0, [r7]\n\
-ldrh r2, [r5]\n\
-adds r2, r0\n\
-adds r2, 0x2\n\
-lsls r2, 1\n\
-add r2, r8\n\
-ldrb r0, [r6]\n\
-ldrb r1, [r4]\n\
-adds r1, r0\n\
-lsls r0, r1, 1\n\
-adds r0, r1\n\
-lsls r0, 1\n\
-ldr r1, _0811737C @ =0x020189a4\n\
-adds r0, r1\n\
-ldrh r0, [r0]\n\
-strh r0, [r2]\n\
-ldrb r0, [r4]\n\
-adds r0, 0x1\n\
-strb r0, [r4]\n\
-ldrb r0, [r3]\n\
-cmp r0, 0x2\n\
-bls _081172C8\n\
-_08117350:\n\
-mov r1, r12\n\
-ldrb r0, [r1]\n\
-adds r0, 0x1\n\
-strb r0, [r1]\n\
-ldrb r0, [r1]\n\
-ldr r1, [sp, 0x18]\n\
-cmp r0, r1\n\
-bcc _0811727C\n\
-_08117360:\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 {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_08117370: .4byte gUnknown_083F8C00\n\
-_08117374: .4byte gBGTilemapBuffers + 0x800\n\
-_08117378: .4byte 0x020189a0\n\
-_0811737C: .4byte 0x020189a4\n\
-.syntax divided\n");
-}
-#endif
-#ifdef NONMATCHING
u8 sub_8117380(u8 r0)
{
- u8 var0[0x5];
- u8 t;
- u8 z;
- memcpy(var0, gUnknown_083F8EF4, 0x5);
- if (r0 > 0x13)
- r0 = 0x0;
+ u8 var0[5];
+ memcpy(var0, gUnknown_083F8EF4, 5);
+ // u8 var0[] = {0, 3, 4, 6, 12};
+ if (r0 > 19)
+ r0 = 0;
switch (gUnknown_083F8C00[r0].var01_0)
{
- case 0x3:
- z = r0 / 0x5 - 0x1;
- if (eRoulette->var16[z] > 0x3)
- return 0x0;
- return var0[eRoulette->var16[z] + 0x1];
- case 0x4:
- t = r0 - 0x1;
- if (eRoulette->var12[t] > 0x2)
+ case 3:
+ r0 = r0 / 5 - 1;
+ if (eRoulette->var16[r0] > 3)
return 0x0;
- return var0[eRoulette->var12[t] + 0x2];
- case 0xC:
+ return var0[eRoulette->var16[r0] + 1];
+ case 4:
+ r0--;
+ if (eRoulette->var12[r0] > 2)
+ return 0;
+ return var0[eRoulette->var12[r0] + 2];
+ case 12:
if (eRoulette->var08 & gUnknown_083F8C00[r0].var08)
- return 0x0;
- return var0[0x4];
- default:
+ return 0;
+ return var0[4];
}
- return 0x0;
+ return 0;
}
-#else
-__attribute__((naked))
-u8 sub_8117380(u8 r0)
-{
-asm(".syntax unified\n\
-push {r4,lr}\n\
-sub sp, 0x8\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r1, _081173B8 @ =gUnknown_083F8EF4\n\
-mov r0, sp\n\
-movs r2, 0x5\n\
-bl memcpy\n\
-cmp r4, 0x13\n\
-bls _08117398\n\
-movs r4, 0\n\
-_08117398:\n\
-ldr r3, _081173BC @ =gUnknown_083F8C00\n\
-lsls r0, r4, 2\n\
-adds r0, r4\n\
-lsls r2, r0, 2\n\
-adds r0, r2, r3\n\
-ldrb r0, [r0, 0x1]\n\
-lsls r0, 28\n\
-lsrs r0, 28\n\
-cmp r0, 0x4\n\
-beq _081173EC\n\
-cmp r0, 0x4\n\
-bgt _081173C0\n\
-cmp r0, 0x3\n\
-beq _081173C6\n\
-b _08117428\n\
-.align 2, 0\n\
-_081173B8: .4byte gUnknown_083F8EF4\n\
-_081173BC: .4byte gUnknown_083F8C00\n\
-_081173C0:\n\
-cmp r0, 0xC\n\
-beq _0811740C\n\
-b _08117428\n\
-_081173C6:\n\
-adds r0, r4, 0\n\
-movs r1, 0x5\n\
-bl __udivsi3\n\
-subs r0, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r0, _081173E8 @ =0x02019000\n\
-adds r0, 0x16\n\
-adds r1, r4, r0\n\
-ldrb r0, [r1]\n\
-cmp r0, 0x3\n\
-bhi _08117428\n\
-ldrb r0, [r1]\n\
-adds r0, 0x1\n\
-b _08117402\n\
-.align 2, 0\n\
-_081173E8: .4byte 0x02019000\n\
-_081173EC:\n\
-subs r0, r4, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r0, _08117408 @ =0x02019000\n\
-adds r0, 0x12\n\
-adds r1, r4, r0\n\
-ldrb r0, [r1]\n\
-cmp r0, 0x2\n\
-bhi _08117428\n\
-ldrb r0, [r1]\n\
-adds r0, 0x2\n\
-_08117402:\n\
-add r0, sp\n\
-ldrb r0, [r0]\n\
-b _0811742A\n\
-.align 2, 0\n\
-_08117408: .4byte 0x02019000\n\
-_0811740C:\n\
-ldr r1, _08117424 @ =0x02019000\n\
-adds r0, r3, 0\n\
-adds r0, 0x8\n\
-adds r0, r2, r0\n\
-ldr r1, [r1, 0x8]\n\
-ldr r0, [r0]\n\
-ands r1, r0\n\
-cmp r1, 0\n\
-bne _08117428\n\
-mov r0, sp\n\
-ldrb r0, [r0, 0x4]\n\
-b _0811742A\n\
-.align 2, 0\n\
-_08117424: .4byte 0x02019000\n\
-_08117428:\n\
-movs r0, 0\n\
-_0811742A:\n\
-add sp, 0x8\n\
-pop {r4}\n\
-pop {r1}\n\
-bx r1\n\
-.syntax divided\n");
-}
-#endif
void sub_8117434(void)
{
@@ -2629,6 +1555,9 @@ void sub_811755C(u8 taskid)
void sub_81175C0(u8 taskid)
{
+#if DEBUG
+ unk_203955C[0] = 0;
+#endif
Menu_EraseScreen();
ScriptContext2_Disable();
DestroyTask(taskid);
@@ -2691,11 +1620,98 @@ void Task_Roulette_0(u8 taskid)
}
}
+#if DEBUG
+
+void debug_sub_812CDE4(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gTasks[taskId].data[13]++;
+ if (gTasks[taskId].data[13] == 10000)
+ gTasks[taskId].data[13] = 0;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].data[13]--;
+ if (gTasks[taskId].data[13] == -1)
+ gTasks[taskId].data[13] = 9999;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ }
+ else if (gMain.newKeys & 0x100)
+ {
+ gTasks[taskId].data[13] += 10;
+ if (gTasks[taskId].data[13] > 9999)
+ gTasks[taskId].data[13] -= 9999;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ }
+ else if (gMain.newKeys & 0x200)
+ {
+ gTasks[taskId].data[13] -= 10;
+ if (gTasks[taskId].data[13] < 0)
+ gTasks[taskId].data[13] += 9999;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ }
+ else if (gMain.newKeys & 8)
+ {
+ gSaveBlock1.coins = gTasks[taskId].data[13];
+ gTasks[taskId].func = Task_Roulette_0;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ unk_2039560 = 0;
+ }
+ else if (gMain.newKeys & 4)
+ {
+ gSaveBlock1.coins = gTasks[taskId].data[13];
+ gTasks[taskId].func = Task_Roulette_0;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ unk_2039560 = 1;
+ }
+}
+
+extern const u8 gUnknown_Debug_0842510D[];
+
+void debug_sub_812CFE8(u8 taskId)
+{
+ gTasks[taskId].data[13] = gSaveBlock1.coins;
+ if (Random() & 1)
+ gSpecialVar_0x8004 |= 0x80;
+ ConvertIntToDecimalStringN(gStringVar1, gTasks[taskId].data[13], 1, 4);
+ StringExpandPlaceholders(gStringVar4, gOtherText_Coins);
+ Menu_DrawStdWindowFrame(0, 0, 9, 3);
+ MenuPrint_RightAligned(gStringVar4, 9, 1);
+ Menu_DrawStdWindowFrame(0, 14, 29, 19);
+ Menu_PrintText(gUnknown_Debug_0842510D, 1, 15);
+ gTasks[taskId].func = debug_sub_812CDE4;
+}
+
+#endif
+
void PlayRoulette(void)
{
u8 taskid;
+
ScriptContext2_Enable();
- taskid = CreateTask(&Task_Roulette_0, 0x0);
+#if DEBUG
+ unk_2039560 = 0;
+ if (unk_203955C[0] != 0)
+ {
+ CreateTask(debug_sub_812CFE8, 0);
+ return;
+ }
+#endif
+ taskid = CreateTask(Task_Roulette_0, 0);
gTasks[taskid].data[0xD] = gSaveBlock1.coins;
}
@@ -2783,7 +1799,7 @@ void unref_sub_8117A74(void) //destroy all sprites at 0x1D
void sub_8117AA8(u8 r0, u8 r1)
{
u8 i;
- switch(r0)
+ switch (r0)
{
case 0x1:
for (i = 0x0; i < 0x13; i++)
@@ -2799,7 +1815,7 @@ void sub_8117AA8(u8 r0, u8 r1)
else
gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE;
}
- for ( ; i < 0x13; i++)
+ for (; i < 0x13; i++)
gSprites[eRoulette->var3C[0x1D + i]].invisible = FALSE;
break;
}
@@ -2812,7 +1828,7 @@ void sub_8117BBC(void)
{
eRoulette->var3C[0x31 + i] = CreateSprite(&gSpriteTemplate_83FA40C, 0x74, 0x14, 0xA);
gSprites[eRoulette->var3C[0x31 + i]].invisible = TRUE;
- gSprites[eRoulette->var3C[0x31 + i]].data[0] = 0x1;
+ gSprites[eRoulette->var3C[0x31 + i]].data[0] = 0x1;
gSprites[eRoulette->var3C[0x31 + i]].callback = &sub_81184CC;
gSprites[eRoulette->var3C[0x31 + i]].oam.priority = 0x1;
StartSpriteAnim(&gSprites[eRoulette->var3C[0x31 + i]], 0x8);
@@ -2883,111 +1899,25 @@ void sub_8117DF4(void)
}
}
-#ifdef NONMATCHING
void sub_8117E98(struct Sprite *sprite)
{
- struct OamMatrix *m;
- u8 p;
- u16 angle;
- s16 cos, sin, z;
- u32 cos32;
- angle = eRoulette->var24 + sprite->data[0x0];
- z = angle;
- if (z > 359)
- angle = z - 360;
+ s16 cos;
+ s16 sin;
+ u32 matrixNum;
+ s16 angle = eRoulette->var24 + sprite->data[0];
+ if (angle >= 360)
+ angle -= 360;
sin = Sin2(angle);
cos = Cos2(angle);
- sprite->pos2.x = sin * sprite->data[0x1] >> 0xC;
- sprite->pos2.y = -cos * sprite->data[0x1] >> 0xC;
- p = sprite->oam.matrixNum;
- sin = sin / 0x10;
- m = &gOamMatrices[p];
- cos32 = cos / 0x10;
-
- m->d = cos32;
- m->a = cos32;
- m->b = sin;
- m->c = -sin;
-}
-#else
-__attribute__((naked))
-void sub_8117E98(struct Sprite *r0)
-{
-asm(".syntax unified\n\
-push {r4-r6,lr}\n\
-adds r6, r0, 0\n\
-ldr r0, _08117F1C @ =0x02019000\n\
-ldrh r1, [r6, 0x2E]\n\
-ldrh r0, [r0, 0x24]\n\
-adds r1, r0\n\
-lsls r1, 16\n\
-lsrs r4, r1, 16\n\
-asrs r1, 16\n\
-ldr r0, _08117F20 @ =0x00000167\n\
-cmp r1, r0\n\
-ble _08117EB8\n\
-ldr r2, _08117F24 @ =0xfffffe98\n\
-adds r0, r1, r2\n\
-lsls r0, 16\n\
-lsrs r4, r0, 16\n\
-_08117EB8:\n\
-adds r0, r4, 0\n\
-bl Sin2\n\
-lsls r0, 16\n\
-lsrs r5, r0, 16\n\
-adds r0, r4, 0\n\
-bl Cos2\n\
-lsls r2, r5, 16\n\
-asrs r2, 16\n\
-movs r3, 0x30\n\
-ldrsh r1, [r6, r3]\n\
-muls r1, r2\n\
-asrs r1, 12\n\
-strh r1, [r6, 0x24]\n\
-lsls r0, 16\n\
-asrs r4, r0, 16\n\
-negs r1, r4\n\
-movs r3, 0x30\n\
-ldrsh r0, [r6, r3]\n\
-muls r0, r1\n\
-asrs r0, 12\n\
-strh r0, [r6, 0x26]\n\
-ldrb r0, [r6, 0x3]\n\
-lsls r0, 26\n\
-lsrs r3, r0, 27\n\
-cmp r2, 0\n\
-bge _08117EF2\n\
-adds r2, 0xF\n\
-_08117EF2:\n\
-lsls r0, r2, 12\n\
-lsrs r5, r0, 16\n\
-ldr r1, _08117F28 @ =gOamMatrices\n\
-lsls r0, r3, 3\n\
-adds r1, r0, r1\n\
-adds r0, r4, 0\n\
-cmp r0, 0\n\
-bge _08117F04\n\
-adds r0, 0xF\n\
-_08117F04:\n\
-asrs r0, 4\n\
-strh r0, [r1, 0x6]\n\
-strh r0, [r1]\n\
-strh r5, [r1, 0x2]\n\
-lsls r0, r5, 16\n\
-asrs r0, 16\n\
-negs r0, r0\n\
-strh r0, [r1, 0x4]\n\
-pop {r4-r6}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_08117F1C: .4byte 0x02019000\n\
-_08117F20: .4byte 0x00000167\n\
-_08117F24: .4byte 0xfffffe98\n\
-_08117F28: .4byte gOamMatrices\n\
-.syntax divided\n");
+ sprite->pos2.x = sin * sprite->data[1] >> 0xC;
+ sprite->pos2.y = -cos * sprite->data[1] >> 0xC;
+ matrixNum = sprite->oam.matrixNum;
+ sin /= 16;
+ gOamMatrices[matrixNum].d = cos /= 16;
+ gOamMatrices[matrixNum].a = cos;
+ gOamMatrices[matrixNum].b = sin;
+ gOamMatrices[matrixNum].c = -sin;
}
-#endif
void sub_8117F2C(void)
{
@@ -3045,132 +1975,32 @@ void sub_81180F4(u16 r0)
}
}
-#ifdef NONMATCHING
u8 sub_81181E8(u8 r0)
{
- u8 t[0x5];
- memcpy(&t, &gUnknown_083FA608, 0x5);
- if (r0 > 0x13)
- r0 = 0x0;
- switch(gUnknown_083F8C00[r0].var01_0)
+ u8 t[5];
+ memcpy(t, gUnknown_083FA608, sizeof t);
+ // u8 t = {0, 1, 2, 3, 4};
+ if (r0 >= 20)
+ r0 = 0;
+ switch (gUnknown_083F8C00[r0].var01_0)
{
case 0x3:
- r0 = r0 / 0x5 - 0x1;
- if ((u32)eRoulette->var16[r0] < 0x4)
- return t[0x1 + eRoulette->var16[r0]]; // couldn't recreate redundant loads
+ r0 = r0 / 5 - 1;
+ if (eRoulette->var16[r0] < 4)
+ return t[((vu8 *)eRoulette->var16)[r0] + 1]; // couldn't recreate redundant loads
break;
case 0x4:
- r0 = r0 - 0x1;
- if (eRoulette->var12[r0] < 0x3)
- return t[0x2 + eRoulette->var12[r0]];
+ r0--;
+ if (eRoulette->var12[r0] < 3)
+ return t[((vu8 *)eRoulette->var12)[r0] + 2];
break;
case 0xC:
if (!(eRoulette->var08 & gUnknown_083F8C00[r0].var08))
- return t[0x4];
+ return t[4];
break;
}
- return 0x0;
+ return 0;
}
-#else
-__attribute__((naked))
-u8 sub_81181E8(u8 r0)
-{
-asm(".syntax unified\n\
-push {r4,lr}\n\
-sub sp, 0x8\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r1, _08118220 @ =gUnknown_083FA608\n\
-mov r0, sp\n\
-movs r2, 0x5\n\
-bl memcpy\n\
-cmp r4, 0x13\n\
-bls _08118200\n\
-movs r4, 0\n\
-_08118200:\n\
-ldr r3, _08118224 @ =gUnknown_083F8C00\n\
-lsls r0, r4, 2\n\
-adds r0, r4\n\
-lsls r2, r0, 2\n\
-adds r0, r2, r3\n\
-ldrb r0, [r0, 0x1]\n\
-lsls r0, 28\n\
-lsrs r0, 28\n\
-cmp r0, 0x4\n\
-beq _08118254\n\
-cmp r0, 0x4\n\
-bgt _08118228\n\
-cmp r0, 0x3\n\
-beq _0811822E\n\
-b _08118290\n\
-.align 2, 0\n\
-_08118220: .4byte gUnknown_083FA608\n\
-_08118224: .4byte gUnknown_083F8C00\n\
-_08118228:\n\
-cmp r0, 0xC\n\
-beq _08118274\n\
-b _08118290\n\
-_0811822E:\n\
-adds r0, r4, 0\n\
-movs r1, 0x5\n\
-bl __udivsi3\n\
-subs r0, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r0, _08118250 @ =0x02019000\n\
-adds r0, 0x16\n\
-adds r1, r4, r0\n\
-ldrb r0, [r1]\n\
-cmp r0, 0x3\n\
-bhi _08118290\n\
-ldrb r0, [r1]\n\
-adds r0, 0x1\n\
-b _0811826A\n\
-.align 2, 0\n\
-_08118250: .4byte 0x02019000\n\
-_08118254:\n\
-subs r0, r4, 0x1\n\
-lsls r0, 24\n\
-lsrs r4, r0, 24\n\
-ldr r0, _08118270 @ =0x02019000\n\
-adds r0, 0x12\n\
-adds r1, r4, r0\n\
-ldrb r0, [r1]\n\
-cmp r0, 0x2\n\
-bhi _08118290\n\
-ldrb r0, [r1]\n\
-adds r0, 0x2\n\
-_0811826A:\n\
-add r0, sp\n\
-ldrb r0, [r0]\n\
-b _08118292\n\
-.align 2, 0\n\
-_08118270: .4byte 0x02019000\n\
-_08118274:\n\
-ldr r1, _0811828C @ =0x02019000\n\
-adds r0, r3, 0\n\
-adds r0, 0x8\n\
-adds r0, r2, r0\n\
-ldr r1, [r1, 0x8]\n\
-ldr r0, [r0]\n\
-ands r1, r0\n\
-cmp r1, 0\n\
-bne _08118290\n\
-mov r0, sp\n\
-ldrb r0, [r0, 0x4]\n\
-b _08118292\n\
-.align 2, 0\n\
-_0811828C: .4byte 0x02019000\n\
-_08118290:\n\
-movs r0, 0\n\
-_08118292:\n\
-add sp, 0x8\n\
-pop {r4}\n\
-pop {r1}\n\
-bx r1\n\
-.syntax divided\n");
-}
-#endif
void sub_811829C(u8 r0)
{
@@ -3187,7 +2017,7 @@ void sub_81182F8(u8 r0)
u8 t = 0x0;
if (eRoulette->var19 == 0x1)
t = 0x2;
- switch(r0)
+ switch (r0)
{
case 0x6:
for (i = 0x0; i < 0x3; i++)
@@ -3427,7 +2257,7 @@ void sub_81189A8(struct Sprite *sprite)
float f0, f1, f2;
struct StructgUnknown_083F8DF4 *p;
sub_8118724(sprite);
- switch(sprite->data[0x3])
+ switch (sprite->data[0x3])
{
case 0:
if (sprite->data[0x0] != 0x1)
@@ -3493,7 +2323,7 @@ void sub_8118BD8(struct Sprite *sprite)
if (sprite->data[0x2]++ < 45)
{
sprite->pos2.y--;
- if(sprite->data[0x2] == 45)
+ if (sprite->data[0x2] == 45)
{
if (gSprites[eRoulette->var3C[0x37]].animCmdIndex == 0x1)
sprite->pos2.y++;
@@ -3527,7 +2357,7 @@ void sub_8118BD8(struct Sprite *sprite)
void sub_8118CAC(struct Sprite *sprite)
{
sub_8118724(sprite);
- switch(sprite->data[0x3])
+ switch (sprite->data[0x3])
{
case 90:
if (sprite->data[0x0] != 0x1)
@@ -3549,7 +2379,7 @@ void sub_8118CAC(struct Sprite *sprite)
void sub_8118CEC(struct Sprite *sprite)
{
sub_8118724(sprite);
- switch(eRoulette->var03_0)
+ switch (eRoulette->var03_0)
{
default:
case 0x0:
@@ -3591,7 +2421,33 @@ void sub_8118D2C(struct Sprite *sprite)
}
}
-#ifdef NONMATCHING
+#if DEBUG
+
+void debug_sub_812E698(struct Sprite *sprite)
+{
+ sub_8118724(sprite);
+ sprite->data[2] = 0;
+ sub_81186B8(sprite);
+ m4aSongNumStart(0x38);
+ if (Random() & 1)
+ {
+ eRoulette->var8C = 0;
+ eRoulette->var7F = (eRoulette->var7E + 1) % 12;
+ }
+ else
+ {
+ eRoulette->var8C = gUnknown_083F8DF4[eRoulette->var04_0].var1C * 2;
+ eRoulette->var7F = eRoulette->var7E;
+ }
+ sprite->data[0] = 1;
+ sprite->data[2] = gUnknown_083F8DF4[eRoulette->var04_0].var02;
+ eRoulette->var98 = 0.085;
+ sprite->callback = sub_8118D2C;
+ sprite->data[1] = 5;
+}
+
+#endif
+
void sub_8118DE4(struct Sprite *sprite)
{
sub_8118724(sprite);
@@ -3607,13 +2463,13 @@ void sub_8118DE4(struct Sprite *sprite)
sub_811866C(sprite);
sprite->data[0x6] = (sprite->data[0x6] / 30) * 30 + 15;
sprite->callback = &sub_8118834;
- m4aSongNumStartOrChange(0x47);
+ m4aSongNumStartOrChange(SE_HASHI);
}
else
{
u8 t;
u32 z;
- m4aSongNumStart(0x38);
+ m4aSongNumStart(SE_KON);
if ((z = (Random() & 0x1)))
{
u32 o;
@@ -3631,21 +2487,21 @@ void sub_8118DE4(struct Sprite *sprite)
if (gUnknown_083F8D90[t].var04 & eRoulette->var08)
{
sprite->data[0x0] = 0x1;
- sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02;
+ sprite->data[0x2] = gUnknown_083F8DF4[eRoulette->var04_0].var02;
}
else
{
sprite->data[0x0] = gUnknown_083F8D90[t].var04 & eRoulette->var08;
if (eRoulette->var04_0)
{
- sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var01;
+ sprite->data[0x2] = gUnknown_083F8DF4[eRoulette->var04_0].var01;
}
else
{
- sprite->data[0x2] = (&gUnknown_083F8DF4[eRoulette->var04_0])->var02;
+ sprite->data[0x2] = gUnknown_083F8DF4[eRoulette->var04_0].var02;
if (z)
{
- eRoulette->var8C = 1.5f;
+ eRoulette->var8C = 0.5f;
}
else
{
@@ -3654,217 +2510,10 @@ void sub_8118DE4(struct Sprite *sprite)
}
}
eRoulette->var98 = 0.085f;
- sprite->callback = &sub_8118D2C;
+ sprite->callback = sub_8118D2C;
sprite->data[0x1] = 0x5;
}
}
-#else
-__attribute__((naked))
-void sub_8118DE4(struct Sprite *sprite)
-{
-asm(".syntax unified\n\
-push {r4-r7,lr}\n\
-mov r7, r9\n\
-mov r6, r8\n\
-push {r6,r7}\n\
-adds r7, r0, 0\n\
-bl sub_8118724\n\
-movs r0, 0\n\
-strh r0, [r7, 0x32]\n\
-adds r0, r7, 0\n\
-bl sub_81186B8\n\
-ldr r1, _08118E70 @ =gUnknown_083F8D90\n\
-ldr r6, _08118E74 @ =gSharedMem + 0x19000\n\
-movs r0, 0x7E\n\
-adds r0, r6\n\
-mov r8, r0\n\
-ldrb r0, [r0]\n\
-lsls r0, 3\n\
-adds r1, 0x4\n\
-adds r0, r1\n\
-ldr r0, [r0]\n\
-ldr r1, [r6, 0x8]\n\
-ands r0, r1\n\
-cmp r0, 0\n\
-bne _08118E7C\n\
-adds r1, r6, 0\n\
-adds r1, 0x7D\n\
-movs r0, 0xFF\n\
-strb r0, [r1]\n\
-ldrb r1, [r6, 0x3]\n\
-movs r0, 0x7F\n\
-ands r0, r1\n\
-strb r0, [r6, 0x3]\n\
-adds r0, r7, 0\n\
-adds r0, 0x2B\n\
-ldrb r1, [r0]\n\
-adds r1, 0x3\n\
-lsls r1, 24\n\
-lsrs r1, 24\n\
-adds r0, r7, 0\n\
-bl StartSpriteAnim\n\
-adds r0, r7, 0\n\
-bl sub_81186B8\n\
-movs r0, 0x1E\n\
-strh r0, [r7, 0x36]\n\
-adds r0, r7, 0\n\
-bl sub_811866C\n\
-movs r1, 0x3A\n\
-ldrsh r0, [r7, r1]\n\
-movs r1, 0x1E\n\
-bl __divsi3\n\
-lsls r0, 16\n\
-asrs r0, 16\n\
-lsls r1, r0, 4\n\
-subs r1, r0\n\
-lsls r1, 1\n\
-adds r1, 0xF\n\
-strh r1, [r7, 0x3A]\n\
-ldr r0, _08118E78 @ =sub_8118834\n\
-str r0, [r7, 0x1C]\n\
-movs r0, 0x47\n\
-bl m4aSongNumStartOrChange\n\
-b _08118F74\n\
-.align 2, 0\n\
-_08118E70: .4byte gUnknown_083F8D90\n\
-_08118E74: .4byte gSharedMem + 0x19000\n\
-_08118E78: .4byte sub_8118834\n\
-_08118E7C:\n\
-movs r0, 0x38\n\
-bl m4aSongNumStart\n\
-bl Random\n\
-movs r2, 0x1\n\
-mov r9, r2\n\
-mov r1, r9\n\
-ands r1, r0\n\
-mov r9, r1\n\
-cmp r1, 0\n\
-beq _08118EC0\n\
-adds r1, r6, 0\n\
-adds r1, 0x8C\n\
-ldr r0, _08118EB8 @ =0x00000000\n\
-str r0, [r1]\n\
-mov r2, r8\n\
-ldrb r0, [r2]\n\
-adds r0, 0x1\n\
-movs r1, 0xC\n\
-bl __modsi3\n\
-lsls r1, r0, 24\n\
-lsrs r2, r1, 24\n\
-adds r1, r6, 0\n\
-adds r1, 0x7F\n\
-strb r0, [r1]\n\
-ldr r5, _08118EBC @ =gUnknown_083F8DF4\n\
-b _08118EF4\n\
-.align 2, 0\n\
-_08118EB8: .4byte 0x00000000\n\
-_08118EBC: .4byte gUnknown_083F8DF4\n\
-_08118EC0:\n\
-adds r4, r6, 0\n\
-adds r4, 0x8C\n\
-ldr r5, _08118F1C @ =gUnknown_083F8DF4\n\
-ldrb r0, [r6, 0x4]\n\
-lsls r0, 30\n\
-lsrs r0, 25\n\
-adds r1, r5, 0\n\
-adds r1, 0x1C\n\
-adds r0, r1\n\
-ldr r1, [r0]\n\
-adds r0, r1, 0\n\
-bl __addsf3\n\
-str r0, [r4]\n\
-mov r0, r8\n\
-ldrb r4, [r0]\n\
-adds r0, r4, 0\n\
-adds r0, 0xB\n\
-movs r1, 0xC\n\
-bl __modsi3\n\
-lsls r0, 24\n\
-lsrs r2, r0, 24\n\
-adds r0, r6, 0\n\
-adds r0, 0x7F\n\
-strb r4, [r0]\n\
-_08118EF4:\n\
-ldr r0, _08118F20 @ =gUnknown_083F8D90\n\
-lsls r1, r2, 3\n\
-adds r0, 0x4\n\
-adds r1, r0\n\
-ldr r2, _08118F24 @ =gSharedMem + 0x19000\n\
-ldr r1, [r1]\n\
-ldr r0, [r2, 0x8]\n\
-ands r1, r0\n\
-cmp r1, 0\n\
-beq _08118F28\n\
-movs r0, 0x1\n\
-strh r0, [r7, 0x2E]\n\
-ldrb r0, [r2, 0x4]\n\
-lsls r0, 30\n\
-lsrs r0, 25\n\
-adds r0, r5\n\
-ldrb r0, [r0, 0x2]\n\
-strh r0, [r7, 0x32]\n\
-b _08118F64\n\
-.align 2, 0\n\
-_08118F1C: .4byte gUnknown_083F8DF4\n\
-_08118F20: .4byte gUnknown_083F8D90\n\
-_08118F24: .4byte gSharedMem + 0x19000\n\
-_08118F28:\n\
-strh r1, [r7, 0x2E]\n\
-ldrb r1, [r2, 0x4]\n\
-movs r0, 0x3\n\
-ands r0, r1\n\
-cmp r0, 0\n\
-beq _08118F40\n\
-lsls r0, r1, 30\n\
-lsrs r0, 25\n\
-adds r0, r5\n\
-ldrb r0, [r0, 0x1]\n\
-strh r0, [r7, 0x32]\n\
-b _08118F64\n\
-_08118F40:\n\
-lsls r0, r1, 30\n\
-lsrs r0, 25\n\
-adds r0, r5\n\
-ldrb r0, [r0, 0x2]\n\
-strh r0, [r7, 0x32]\n\
-mov r1, r9\n\
-cmp r1, 0\n\
-beq _08118F5C\n\
-adds r1, r2, 0\n\
-adds r1, 0x8C\n\
-ldr r0, _08118F58 @ =0x3f000000\n\
-b _08118F62\n\
-.align 2, 0\n\
-_08118F58: .4byte 0x3f000000\n\
-_08118F5C:\n\
-adds r1, r2, 0\n\
-adds r1, 0x8C\n\
-ldr r0, _08118F80 @ =0xbfc00000\n\
-_08118F62:\n\
-str r0, [r1]\n\
-_08118F64:\n\
-adds r1, r2, 0\n\
-adds r1, 0x98\n\
-ldr r0, _08118F84 @ =0x3dae147b\n\
-str r0, [r1]\n\
-ldr r0, _08118F88 @ =sub_8118D2C\n\
-str r0, [r7, 0x1C]\n\
-movs r0, 0x5\n\
-strh r0, [r7, 0x30]\n\
-_08118F74:\n\
-pop {r3,r4}\n\
-mov r8, r3\n\
-mov r9, r4\n\
-pop {r4-r7}\n\
-pop {r0}\n\
-bx r0\n\
-.align 2, 0\n\
-_08118F80: .4byte 0xbfc00000\n\
-_08118F84: .4byte 0x3dae147b\n\
-_08118F88: .4byte sub_8118D2C\n\
-.syntax divided\n");
-}
-#endif
void sub_8118F8C(struct Sprite *sprite)
{
@@ -3872,15 +2521,20 @@ void sub_8118F8C(struct Sprite *sprite)
if (!(eRoulette->var8C > 0.5f))
{
sub_81186B8(sprite);
- if (sub_81186E8(sprite) == 0x0)
+ if (!sub_81186E8(sprite))
{
struct StructgUnknown_083F8DF4 *p;
eRoulette->var90 = 0.0f;
p = &gUnknown_083F8DF4[0];
eRoulette->var8C -= ((float)p[eRoulette->var04_0].var03)
- / ((float)(s16)((&p[eRoulette->var04_0])->var04 + 0x1));
+ / ((float)(s16)(p[eRoulette->var04_0].var04 + 0x1));
sprite->data[0x1] = 0x4;
- sprite->callback = &sub_8118DE4;
+#if DEBUG
+ if (unk_2039560 != 0)
+ sprite->callback = debug_sub_812E698;
+ else
+#endif
+ sprite->callback = sub_8118DE4;
}
else
{
@@ -3960,8 +2614,8 @@ void sub_8119224(struct Sprite *sprite)
gSprites[eRoulette->var3C[0x37 + i]].data[0x5] = eRoulette->var3C[0x38];
gSprites[eRoulette->var3C[0x37 + i]].data[0x6] = eRoulette->var3C[0x39];
gSprites[eRoulette->var3C[0x37 + i]].data[0x2] = t;
- gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = (sprite->data[0x7] * (&gUnknown_083F8DF4[eRoulette->var04_0])->var01) +
- ((&gUnknown_083F8DF4[eRoulette->var04_0])->var02 + 0xFFFF);
+ gSprites[eRoulette->var3C[0x37 + i]].data[0x3] = (sprite->data[0x7] * gUnknown_083F8DF4[eRoulette->var04_0].var01) +
+ (gUnknown_083F8DF4[eRoulette->var04_0].var02 + 0xFFFF);
}
gSprites[eRoulette->var3C[0x38]].coordOffsetEnabled = TRUE;
eRoulette->var38 = sprite;
@@ -3995,57 +2649,58 @@ void sub_81193D4(struct Sprite *sprite)
#ifdef NONMATCHING
void sub_811952C(struct Sprite *sprite)
{
+ u8 i;
u8 z;
- register u8 h asm("r10") = 0x0;
- u8 j = 0x5;
- u32 p = 0x0;
u16 o;
- u8 i;
- u8 s[0xA] = (u8[]){0,0,0,0,0,0,0,0,0,0};
- u16 t = Random();
- eRoulette->var7D = 0x1;
+ u8 h = 0; // r10 (sp+0xc)
+ u8 j = 5; // r9 (r9)
+ u8 p = 0; // sp+0xc (sp+0x10)
+ u8 s[10] = {}; // sp+0 (sp+0)
+ u16 t = Random(); // sp+0x10 (r10)
+
+ eRoulette->var7D = 1;
eRoulette->var03_5 = TRUE;
eRoulette->var03_6 = FALSE;
eRoulette->var7E = 0xFF;
- eRoulette->var88 = sprite->data[0x3];
+ eRoulette->var88 = sprite->data[3];
eRoulette->var98 = 0.0f;
- eRoulette->var8C = (&gUnknown_083F8DF4[eRoulette->var04_0])->var1C; //couldn't replicate load, same as sub_8118DE4
+ eRoulette->var8C = gUnknown_083F8DF4[eRoulette->var04_0].var1C;
o = (eRoulette->var04_0 * 30 + 33) + (0x1 - eRoulette->var03_0) * 15;
- for (i = 0x0; i < 0x4; i++)
+ for (i = 0; i < 4; i++)
{
- if (o < sprite->data[0x3] && !(sprite->data[0x3] > o + 90))
+ if (o < sprite->data[3] && sprite->data[3] <= o + 90)
{
- sprite->data[0x0] = i * 0x2;
- eRoulette->var03_0 = 0x1 & i;
+ sprite->data[0] = i << 1;
+ eRoulette->var03_0 = i & 1;
break;
}
- if (i == 0x3)
+ if (i == 3)
{
- sprite->data[0x0] = 0x1;
- eRoulette->var03_0 = 0x1;
+ sprite->data[0] = 1;
+ eRoulette->var03_0 = 1;
break;
}
o += 90;
}
if (eRoulette->var03_0)
{
- if (sprite->data[0x0])
+ if (sprite->data[0])
{
- PlayCry1(0x130, -0x3F);
+ PlayCry1(SPECIES_TAILLOW, -0x3F);
}
else
{
- PlayCry1(0x130, 0x3F);
+ PlayCry1(SPECIES_TAILLOW, 0x3F);
}
}
else
{
- PlayCry1(0x132, -0x3F);
+ PlayCry1(SPECIES_SHROOMISH, -0x3F);
}
- i = 0x2;
- z = (eRoulette->var7F + 0x2) % 0xC;
- if (eRoulette->var03_0 == 0x1 && eRoulette->var04_0 == 0x1)
- j += 0x6;
+ i = 2;
+ z = (eRoulette->var7F + 2) % 12;
+ if (eRoulette->var03_0 == 1 && eRoulette->var04_0 == 1)
+ j += 6;
else
j += i;
for (; i < j; i++)
@@ -4058,343 +2713,340 @@ void sub_811952C(struct Sprite *sprite)
p = i;
}
}
- z = (z + 0x1) % 0xC;
+ z = (z + 1) % 0xC;
}
- if ((eRoulette->var03_0 + 0x1) & eRoulette->var02)
+ if ((eRoulette->var03_0 + 1) & eRoulette->var02)
{
- if (p && (t & 0xFF) <= 0xBF)
+ if (p && (t & 0xFF) < 0xc0)
{
- sprite->data[0x7] = p;
+ sprite->data[7] = p;
}
else
{
- sprite->data[0x7] = s[t % h];
+ sprite->data[7] = s[t % h];
}
}
else
{
- sprite->data[0x7] = s[t % h];
+ sprite->data[7] = s[t % h];
}
- sprite->callback = &sub_8118CEC;
+ sprite->callback = sub_8118CEC;
}
#else
__attribute__((naked))
void sub_811952C(struct Sprite *sprite)
{
-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\
-mov r8, r0\n\
-movs r0, 0\n\
-mov r10, r0\n\
-movs r1, 0x5\n\
-mov r9, r1\n\
-movs r2, 0\n\
-str r2, [sp, 0xC]\n\
-mov r0, sp\n\
-movs r1, 0\n\
-movs r2, 0xA\n\
-bl memset\n\
-bl Random\n\
-lsls r0, 16\n\
-lsrs r0, 16\n\
-str r0, [sp, 0x10]\n\
-ldr r7, _08119610 @ =gSharedMem + 0x19000\n\
-adds r0, r7, 0\n\
-adds r0, 0x7D\n\
-movs r6, 0x1\n\
-strb r6, [r0]\n\
-ldrb r4, [r7, 0x3]\n\
-movs r0, 0x20\n\
-orrs r4, r0\n\
-movs r0, 0x41\n\
-negs r0, r0\n\
-ands r4, r0\n\
-strb r4, [r7, 0x3]\n\
-adds r1, r7, 0\n\
-adds r1, 0x7E\n\
-movs r0, 0xFF\n\
-strb r0, [r1]\n\
-adds r5, r7, 0\n\
-adds r5, 0x88\n\
-mov r3, r8\n\
-movs r1, 0x34\n\
-ldrsh r0, [r3, r1]\n\
-bl __floatsisf\n\
-str r0, [r5]\n\
-adds r1, r7, 0\n\
-adds r1, 0x98\n\
-ldr r0, _08119614 @ =0x00000000\n\
-str r0, [r1]\n\
-adds r3, r7, 0\n\
-adds r3, 0x8C\n\
-ldr r2, _08119618 @ =gUnknown_083F8DF4\n\
-ldrb r0, [r7, 0x4]\n\
-lsls r0, 30\n\
-lsrs r1, r0, 25\n\
-adds r2, 0x1C\n\
-adds r1, r2\n\
-ldr r1, [r1]\n\
-str r1, [r3]\n\
-lsrs r0, 30\n\
-lsls r1, r0, 4\n\
-subs r1, r0\n\
-lsls r1, 1\n\
-adds r1, 0x21\n\
-lsls r4, 27\n\
-lsrs r4, 27\n\
-subs r6, r4\n\
-lsls r0, r6, 4\n\
-subs r0, r6\n\
-adds r1, r0\n\
-lsls r1, 16\n\
-lsrs r1, 16\n\
-mov r5, r10\n\
-mov r3, r8\n\
-movs r0, 0x34\n\
-ldrsh r2, [r3, r0]\n\
-_081195C8:\n\
-cmp r1, r2\n\
-bge _081195D4\n\
-adds r0, r1, 0\n\
-adds r0, 0x5A\n\
-cmp r2, r0\n\
-ble _08119638\n\
-_081195D4:\n\
-cmp r5, 0x3\n\
-beq _0811961C\n\
-adds r0, r1, 0\n\
-adds r0, 0x5A\n\
-lsls r0, 16\n\
-lsrs r1, r0, 16\n\
-adds r0, r5, 0x1\n\
-lsls r0, 24\n\
-lsrs r5, r0, 24\n\
-cmp r5, 0x3\n\
-bls _081195C8\n\
-_081195EA:\n\
-ldr r0, _08119610 @ =gSharedMem + 0x19000\n\
-ldrb r1, [r0, 0x3]\n\
-movs r0, 0x1F\n\
-ands r0, r1\n\
-cmp r0, 0\n\
-beq _08119664\n\
-mov r1, r8\n\
-movs r2, 0x2E\n\
-ldrsh r0, [r1, r2]\n\
-cmp r0, 0\n\
-beq _08119658\n\
-movs r0, 0x98\n\
-lsls r0, 1\n\
-movs r1, 0x3F\n\
-negs r1, r1\n\
-bl PlayCry1\n\
-b _08119670\n\
-.align 2, 0\n\
-_08119610: .4byte gSharedMem + 0x19000\n\
-_08119614: .4byte 0x00000000\n\
-_08119618: .4byte gUnknown_083F8DF4\n\
-_0811961C:\n\
-movs r0, 0x1\n\
-mov r3, r8\n\
-strh r0, [r3, 0x2E]\n\
-ldr r2, _08119634 @ =gSharedMem + 0x19000\n\
-ldrb r1, [r2, 0x3]\n\
-subs r0, 0x21\n\
-ands r0, r1\n\
-movs r1, 0x1\n\
-orrs r0, r1\n\
-strb r0, [r2, 0x3]\n\
-b _081195EA\n\
-.align 2, 0\n\
-_08119634: .4byte gSharedMem + 0x19000\n\
-_08119638:\n\
-lsrs r0, r5, 1\n\
-mov r1, r8\n\
-strh r0, [r1, 0x2E]\n\
-ldr r3, _08119654 @ =gSharedMem + 0x19000\n\
-movs r1, 0x1\n\
-ands r1, r5\n\
-ldrb r2, [r3, 0x3]\n\
-movs r0, 0x20\n\
-negs r0, r0\n\
-ands r0, r2\n\
-orrs r0, r1\n\
-strb r0, [r3, 0x3]\n\
-b _081195EA\n\
-.align 2, 0\n\
-_08119654: .4byte gSharedMem + 0x19000\n\
-_08119658:\n\
-movs r0, 0x98\n\
-lsls r0, 1\n\
-movs r1, 0x3F\n\
-bl PlayCry1\n\
-b _08119670\n\
-_08119664:\n\
-movs r0, 0x99\n\
-lsls r0, 1\n\
-movs r1, 0x3F\n\
-negs r1, r1\n\
-bl PlayCry1\n\
-_08119670:\n\
-movs r5, 0x2\n\
-ldr r4, _081196A0 @ =gSharedMem + 0x19000\n\
-adds r0, r4, 0\n\
-adds r0, 0x7F\n\
-ldrb r0, [r0]\n\
-adds r0, 0x2\n\
-movs r1, 0xC\n\
-bl __modsi3\n\
-lsls r0, 24\n\
-lsrs r3, r0, 24\n\
-ldrb r1, [r4, 0x3]\n\
-movs r0, 0x1F\n\
-ands r0, r1\n\
-cmp r0, 0x1\n\
-bne _081196A4\n\
-ldrb r1, [r4, 0x4]\n\
-movs r0, 0x3\n\
-ands r0, r1\n\
-cmp r0, 0x1\n\
-bne _081196A4\n\
-mov r0, r9\n\
-adds r0, 0x6\n\
-b _081196A8\n\
-.align 2, 0\n\
-_081196A0: .4byte gSharedMem + 0x19000\n\
-_081196A4:\n\
-mov r2, r9\n\
-adds r0, r2, r5\n\
-_081196A8:\n\
-lsls r0, 24\n\
-lsrs r0, 24\n\
-mov r9, r0\n\
-cmp r5, r9\n\
-bcs _0811970E\n\
-ldr r6, _08119734 @ =gSharedMem + 0x19000\n\
-ldr r7, _08119738 @ =gUnknown_083F8C00 + 0xC\n\
-_081196B6:\n\
-lsls r0, r3, 3\n\
-ldr r1, _0811973C @ =gUnknown_083F8D90 + 0x4\n\
-adds r0, r1\n\
-ldr r1, [r6, 0x8]\n\
-ldr r2, [r0]\n\
-ands r1, r2\n\
-cmp r1, 0\n\
-bne _081196F8\n\
-mov r0, r10\n\
-adds r1, r0, 0x1\n\
-lsls r1, 24\n\
-lsrs r1, 24\n\
-mov r10, r1\n\
-add r0, sp\n\
-strb r5, [r0]\n\
-ldr r0, [sp, 0xC]\n\
-cmp r0, 0\n\
-bne _081196F8\n\
-ldrb r0, [r6, 0x1A]\n\
-lsls r0, 28\n\
-lsrs r0, 28\n\
-ldr r1, _08119740 @ =gSharedMem + 0x1901B\n\
-adds r0, r1\n\
-ldrb r1, [r0]\n\
-lsls r0, r1, 2\n\
-adds r0, r1\n\
-lsls r0, 2\n\
-adds r0, r7\n\
-ldr r0, [r0]\n\
-ands r2, r0\n\
-cmp r2, 0\n\
-beq _081196F8\n\
-str r5, [sp, 0xC]\n\
-_081196F8:\n\
-adds r0, r3, 0x1\n\
-movs r1, 0xC\n\
-bl __modsi3\n\
-lsls r0, 24\n\
-lsrs r3, r0, 24\n\
-adds r0, r5, 0x1\n\
-lsls r0, 24\n\
-lsrs r5, r0, 24\n\
-cmp r5, r9\n\
-bcc _081196B6\n\
-_0811970E:\n\
-ldrb r0, [r4, 0x3]\n\
-lsls r0, 27\n\
-lsrs r0, 27\n\
-adds r0, 0x1\n\
-ldrb r1, [r4, 0x2]\n\
-ands r0, r1\n\
-cmp r0, 0\n\
-beq _08119756\n\
-ldr r2, [sp, 0xC]\n\
-cmp r2, 0\n\
-beq _08119744\n\
-movs r0, 0xFF\n\
-ldr r3, [sp, 0x10]\n\
-ands r0, r3\n\
-cmp r0, 0xBF\n\
-bhi _08119744\n\
-mov r0, r8\n\
-strh r2, [r0, 0x3C]\n\
-b _08119766\n\
-.align 2, 0\n\
-_08119734: .4byte gSharedMem + 0x19000\n\
-_08119738: .4byte gUnknown_083F8C00 + 0xC\n\
-_0811973C: .4byte gUnknown_083F8D90 + 0x4\n\
-_08119740: .4byte gSharedMem + 0x1901B\n\
-_08119744:\n\
-ldr r0, [sp, 0x10]\n\
-mov r1, r10\n\
-bl __modsi3\n\
-add r0, sp\n\
-ldrb r0, [r0]\n\
-mov r1, r8\n\
-strh r0, [r1, 0x3C]\n\
-b _08119766\n\
-_08119756:\n\
-ldr r0, [sp, 0x10]\n\
-mov r1, r10\n\
-bl __modsi3\n\
-add r0, sp\n\
-ldrb r0, [r0]\n\
-mov r2, r8\n\
-strh r0, [r2, 0x3C]\n\
-_08119766:\n\
-ldr r3, _0811977C @ =sub_8118CEC\n\
-mov r0, r8\n\
-str r3, [r0, 0x1C]\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\
-.align 2, 0\n\
-_0811977C: .4byte sub_8118CEC\n\
-.syntax divided\n");
+ asm_unified("push {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x14\n"
+ "\tmov r8, r0\n"
+ "\tmovs r0, 0\n"
+ "\tmov r10, r0\n"
+ "\tmovs r1, 0x5\n"
+ "\tmov r9, r1\n"
+ "\tmovs r2, 0\n"
+ "\tstr r2, [sp, 0xC]\n"
+ "\tmov r0, sp\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0xA\n"
+ "\tbl memset\n"
+ "\tbl Random\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tstr r0, [sp, 0x10]\n"
+ "\tldr r7, _08119610 @ =gSharedMem + 0x19000\n"
+ "\tadds r0, r7, 0\n"
+ "\tadds r0, 0x7D\n"
+ "\tmovs r6, 0x1\n"
+ "\tstrb r6, [r0]\n"
+ "\tldrb r4, [r7, 0x3]\n"
+ "\tmovs r0, 0x20\n"
+ "\torrs r4, r0\n"
+ "\tmovs r0, 0x41\n"
+ "\tnegs r0, r0\n"
+ "\tands r4, r0\n"
+ "\tstrb r4, [r7, 0x3]\n"
+ "\tadds r1, r7, 0\n"
+ "\tadds r1, 0x7E\n"
+ "\tmovs r0, 0xFF\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r5, r7, 0\n"
+ "\tadds r5, 0x88\n"
+ "\tmov r3, r8\n"
+ "\tmovs r1, 0x34\n"
+ "\tldrsh r0, [r3, r1]\n"
+ "\tbl __floatsisf\n"
+ "\tstr r0, [r5]\n"
+ "\tadds r1, r7, 0\n"
+ "\tadds r1, 0x98\n"
+ "\tldr r0, _08119614 @ =0x00000000\n"
+ "\tstr r0, [r1]\n"
+ "\tadds r3, r7, 0\n"
+ "\tadds r3, 0x8C\n"
+ "\tldr r2, _08119618 @ =gUnknown_083F8DF4\n"
+ "\tldrb r0, [r7, 0x4]\n"
+ "\tlsls r0, 30\n"
+ "\tlsrs r1, r0, 25\n"
+ "\tadds r2, 0x1C\n"
+ "\tadds r1, r2\n"
+ "\tldr r1, [r1]\n"
+ "\tstr r1, [r3]\n"
+ "\tlsrs r0, 30\n"
+ "\tlsls r1, r0, 4\n"
+ "\tsubs r1, r0\n"
+ "\tlsls r1, 1\n"
+ "\tadds r1, 0x21\n"
+ "\tlsls r4, 27\n"
+ "\tlsrs r4, 27\n"
+ "\tsubs r6, r4\n"
+ "\tlsls r0, r6, 4\n"
+ "\tsubs r0, r6\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tmov r5, r10\n"
+ "\tmov r3, r8\n"
+ "\tmovs r0, 0x34\n"
+ "\tldrsh r2, [r3, r0]\n"
+ "_081195C8:\n"
+ "\tcmp r1, r2\n"
+ "\tbge _081195D4\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x5A\n"
+ "\tcmp r2, r0\n"
+ "\tble _08119638\n"
+ "_081195D4:\n"
+ "\tcmp r5, 0x3\n"
+ "\tbeq _0811961C\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x5A\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tcmp r5, 0x3\n"
+ "\tbls _081195C8\n"
+ "_081195EA:\n"
+ "\tldr r0, _08119610 @ =gSharedMem + 0x19000\n"
+ "\tldrb r1, [r0, 0x3]\n"
+ "\tmovs r0, 0x1F\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08119664\n"
+ "\tmov r1, r8\n"
+ "\tmovs r2, 0x2E\n"
+ "\tldrsh r0, [r1, r2]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08119658\n"
+ "\tmovs r0, 0x98\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r1, 0x3F\n"
+ "\tnegs r1, r1\n"
+ "\tbl PlayCry1\n"
+ "\tb _08119670\n"
+ "\t.align 2, 0\n"
+ "_08119610: .4byte gSharedMem + 0x19000\n"
+ "_08119614: .4byte 0x00000000\n"
+ "_08119618: .4byte gUnknown_083F8DF4\n"
+ "_0811961C:\n"
+ "\tmovs r0, 0x1\n"
+ "\tmov r3, r8\n"
+ "\tstrh r0, [r3, 0x2E]\n"
+ "\tldr r2, _08119634 @ =gSharedMem + 0x19000\n"
+ "\tldrb r1, [r2, 0x3]\n"
+ "\tsubs r0, 0x21\n"
+ "\tands r0, r1\n"
+ "\tmovs r1, 0x1\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r2, 0x3]\n"
+ "\tb _081195EA\n"
+ "\t.align 2, 0\n"
+ "_08119634: .4byte gSharedMem + 0x19000\n"
+ "_08119638:\n"
+ "\tlsrs r0, r5, 1\n"
+ "\tmov r1, r8\n"
+ "\tstrh r0, [r1, 0x2E]\n"
+ "\tldr r3, _08119654 @ =gSharedMem + 0x19000\n"
+ "\tmovs r1, 0x1\n"
+ "\tands r1, r5\n"
+ "\tldrb r2, [r3, 0x3]\n"
+ "\tmovs r0, 0x20\n"
+ "\tnegs r0, r0\n"
+ "\tands r0, r2\n"
+ "\torrs r0, r1\n"
+ "\tstrb r0, [r3, 0x3]\n"
+ "\tb _081195EA\n"
+ "\t.align 2, 0\n"
+ "_08119654: .4byte gSharedMem + 0x19000\n"
+ "_08119658:\n"
+ "\tmovs r0, 0x98\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r1, 0x3F\n"
+ "\tbl PlayCry1\n"
+ "\tb _08119670\n"
+ "_08119664:\n"
+ "\tmovs r0, 0x99\n"
+ "\tlsls r0, 1\n"
+ "\tmovs r1, 0x3F\n"
+ "\tnegs r1, r1\n"
+ "\tbl PlayCry1\n"
+ "_08119670:\n"
+ "\tmovs r5, 0x2\n"
+ "\tldr r4, _081196A0 @ =gSharedMem + 0x19000\n"
+ "\tadds r0, r4, 0\n"
+ "\tadds r0, 0x7F\n"
+ "\tldrb r0, [r0]\n"
+ "\tadds r0, 0x2\n"
+ "\tmovs r1, 0xC\n"
+ "\tbl __modsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tldrb r1, [r4, 0x3]\n"
+ "\tmovs r0, 0x1F\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _081196A4\n"
+ "\tldrb r1, [r4, 0x4]\n"
+ "\tmovs r0, 0x3\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0x1\n"
+ "\tbne _081196A4\n"
+ "\tmov r0, r9\n"
+ "\tadds r0, 0x6\n"
+ "\tb _081196A8\n"
+ "\t.align 2, 0\n"
+ "_081196A0: .4byte gSharedMem + 0x19000\n"
+ "_081196A4:\n"
+ "\tmov r2, r9\n"
+ "\tadds r0, r2, r5\n"
+ "_081196A8:\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmov r9, r0\n"
+ "\tcmp r5, r9\n"
+ "\tbcs _0811970E\n"
+ "\tldr r6, _08119734 @ =gSharedMem + 0x19000\n"
+ "\tldr r7, _08119738 @ =gUnknown_083F8C00 + 0xC\n"
+ "_081196B6:\n"
+ "\tlsls r0, r3, 3\n"
+ "\tldr r1, _0811973C @ =gUnknown_083F8D90 + 0x4\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, [r6, 0x8]\n"
+ "\tldr r2, [r0]\n"
+ "\tands r1, r2\n"
+ "\tcmp r1, 0\n"
+ "\tbne _081196F8\n"
+ "\tmov r0, r10\n"
+ "\tadds r1, r0, 0x1\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tmov r10, r1\n"
+ "\tadd r0, sp\n"
+ "\tstrb r5, [r0]\n"
+ "\tldr r0, [sp, 0xC]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _081196F8\n"
+ "\tldrb r0, [r6, 0x1A]\n"
+ "\tlsls r0, 28\n"
+ "\tlsrs r0, 28\n"
+ "\tldr r1, _08119740 @ =gSharedMem + 0x1901B\n"
+ "\tadds r0, r1\n"
+ "\tldrb r1, [r0]\n"
+ "\tlsls r0, r1, 2\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r7\n"
+ "\tldr r0, [r0]\n"
+ "\tands r2, r0\n"
+ "\tcmp r2, 0\n"
+ "\tbeq _081196F8\n"
+ "\tstr r5, [sp, 0xC]\n"
+ "_081196F8:\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tmovs r1, 0xC\n"
+ "\tbl __modsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tcmp r5, r9\n"
+ "\tbcc _081196B6\n"
+ "_0811970E:\n"
+ "\tldrb r0, [r4, 0x3]\n"
+ "\tlsls r0, 27\n"
+ "\tlsrs r0, 27\n"
+ "\tadds r0, 0x1\n"
+ "\tldrb r1, [r4, 0x2]\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08119756\n"
+ "\tldr r2, [sp, 0xC]\n"
+ "\tcmp r2, 0\n"
+ "\tbeq _08119744\n"
+ "\tmovs r0, 0xFF\n"
+ "\tldr r3, [sp, 0x10]\n"
+ "\tands r0, r3\n"
+ "\tcmp r0, 0xBF\n"
+ "\tbhi _08119744\n"
+ "\tmov r0, r8\n"
+ "\tstrh r2, [r0, 0x3C]\n"
+ "\tb _08119766\n"
+ "\t.align 2, 0\n"
+ "_08119734: .4byte gSharedMem + 0x19000\n"
+ "_08119738: .4byte gUnknown_083F8C00 + 0xC\n"
+ "_0811973C: .4byte gUnknown_083F8D90 + 0x4\n"
+ "_08119740: .4byte gSharedMem + 0x1901B\n"
+ "_08119744:\n"
+ "\tldr r0, [sp, 0x10]\n"
+ "\tmov r1, r10\n"
+ "\tbl __modsi3\n"
+ "\tadd r0, sp\n"
+ "\tldrb r0, [r0]\n"
+ "\tmov r1, r8\n"
+ "\tstrh r0, [r1, 0x3C]\n"
+ "\tb _08119766\n"
+ "_08119756:\n"
+ "\tldr r0, [sp, 0x10]\n"
+ "\tmov r1, r10\n"
+ "\tbl __modsi3\n"
+ "\tadd r0, sp\n"
+ "\tldrb r0, [r0]\n"
+ "\tmov r2, r8\n"
+ "\tstrh r0, [r2, 0x3C]\n"
+ "_08119766:\n"
+ "\tldr r3, _0811977C @ =sub_8118CEC\n"
+ "\tmov r0, r8\n"
+ "\tstr r3, [r0, 0x1C]\n"
+ "\tadd sp, 0x14\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0811977C: .4byte sub_8118CEC");
}
#endif
void sub_8119780(struct Sprite *sprite)
{
- if (!(sprite->data[0x1]++ < sprite->data[0x3]))
+ if (sprite->data[1]++ >= sprite->data[3])
{
- if ((sprite->pos1.x -= 0x2) < -0x10)
+ sprite->pos1.x -= 2;
+ if (sprite->pos1.x < -16)
{
if (!eRoulette->var03_6)
- {
eRoulette->var03_6 = TRUE;
- }
DestroySprite(sprite);
- eRoulette->var01 = 0x0;
- eRoulette->var34 = gUnknown_083FA61E[0x0];
+ eRoulette->var01 = 0;
+ eRoulette->var34 = gUnknown_083FA61E[0];
}
}
}
@@ -4403,18 +3055,19 @@ void sub_81197D8(struct Sprite *sprite)
{
u16 t[0x3][0x4];
s32 p, z;
- memcpy(t, &gUnknown_083FA632, 0x18);
- if (sprite->data[0x1]++ < sprite->data[0x3])
+
+ memcpy(t, &gUnknown_083FA632, 24);
+ if (sprite->data[1]++ < sprite->data[3])
{
- if(sprite->data[0x1] & 0x1)
+ if (sprite->data[1] & 1)
{
- gSpriteCoordOffsetY = t[sprite->data[0x2] / 0x2][sprite->data[0x7]];
- p = z = sprite->data[0x7] + 0x1;
+ gSpriteCoordOffsetY = t[sprite->data[2] / 2][sprite->data[7]];
+ p = z = sprite->data[7] + 1;
if (z < 0)
- p += 0x3;
- sprite->data[0x7] = z - ((p >> 2) * 4);
+ p += 3;
+ sprite->data[7] = z - ((p >> 2) * 4);
}
- sprite->invisible ^= 0x1;
+ sprite->invisible ^= 1;
}
else
{
@@ -4447,7 +3100,7 @@ void sub_8119898(struct Sprite *sprite)
void sub_8119964(struct Sprite *sprite)
{
- if(sprite->data[0x7] == 0x0)
+ if (sprite->data[0x7] == 0x0)
{
register u32 t asm("r2");
u32 z ;
@@ -4523,7 +3176,7 @@ void sub_8119AAC(struct Sprite *sprite)
void sub_8119B24(struct Sprite *sprite)
{
- if (!(sprite->data[0x1] < 0x0))
+ if (sprite->data[0x1] >= 0x0)
{
sprite->data[0x1]--;
sprite->pos1.y--;
@@ -4532,7 +3185,7 @@ void sub_8119B24(struct Sprite *sprite)
}
else
{
- if (!(sprite->data[0x3] < 0x0))
+ if (sprite->data[0x3] >= 0x0)
{
sprite->data[0x3]--;
if (sprite->animDelayCounter == 0x0)
@@ -4571,7 +3224,7 @@ void sub_8119BCC(struct Sprite *sprite)
}
else
{
- if (!(sprite->data[0x1] < 0x0))
+ if (sprite->data[0x1] >= 0x0)
{
sprite->pos1.x += t[eRoulette->var38->data[0x0]] * z[0x7 - sprite->data[0x1]][0x0];
sprite->pos1.y += z[0x7 - sprite->data[0x1]][0x1];
@@ -4579,10 +3232,10 @@ void sub_8119BCC(struct Sprite *sprite)
else
{
m4aSongNumStartOrChange(0x5E);
- if(eRoulette->var38->data[0x0] == 0x0)
- PlayCry1(0x130, 0x3F);
+ if (eRoulette->var38->data[0x0] == 0x0)
+ PlayCry1(SPECIES_TAILLOW, 0x3F);
else
- PlayCry1(0x130, -0x3F);
+ PlayCry1(SPECIES_TAILLOW, -0x3F);
StartSpriteAnim(sprite, eRoulette->var38->data[0x0] + 0x2);
sprite->data[0x1] = 45;
sprite->callback = &sub_8119B24;
@@ -4594,7 +3247,7 @@ void sub_8119D08(struct Sprite *sprite)
{
s8 t[0x2]; //sign
memcpy(t, &gUnknown_083FA64A, 0x2);
- if (!(sprite->data[0x1]-- < 0x0))
+ if (sprite->data[0x1]-- >= 0x0)
{
sprite->pos1.x += t[eRoulette->var38->data[0x0]] * 0x2;
gSprites[sprite->data[0x6]].invisible ^= 0x1;
diff --git a/src/engine/rtc.c b/src/rtc.c
index d73f943d2..5462298ed 100644
--- a/src/engine/rtc.c
+++ b/src/rtc.c
@@ -268,6 +268,28 @@ void FormatHexDate(u8 *dest, s32 year, s32 month, s32 day)
*dest = EOS;
}
+#if DEBUG
+
+void debug_sub_800987C(u8 *dest)
+{
+ FormatHexDate(dest, sRtc.year, sRtc.month, sRtc.day);
+}
+
+void debug_sub_8009894(u8 *dest)
+{
+ u16 dayCount;
+
+ dayCount = RtcGetDayCount(&sRtc);
+ ConvertIntToDecimalStringN(dest, dayCount, STR_CONV_MODE_RIGHT_ALIGN, 4);
+}
+
+void debug_sub_80098B8(u8 *dest)
+{
+ ConvertIntToHexStringN(dest, sRtc.status, STR_CONV_MODE_LEADING_ZEROS, 2);
+}
+
+#endif
+
void RtcCalcTimeDifference(struct SiiRtcInfo *rtc, struct Time *result, struct Time *t)
{
u16 days = RtcGetDayCount(rtc);
@@ -347,3 +369,10 @@ u32 RtcGetMinuteCount()
RtcGetInfo(&sRtc);
return (24 * 60) * RtcGetDayCount(&sRtc) + 60 * sRtc.hour + sRtc.minute;
}
+
+#if DEBUG
+void debug_sub_8009A60()
+{
+ RtcGetRawInfo(&sRtc);
+}
+#endif
diff --git a/src/field/safari_zone.c b/src/safari_zone.c
index 6c7c8b391..f371b08b3 100644
--- a/src/field/safari_zone.c
+++ b/src/safari_zone.c
@@ -26,7 +26,7 @@ static void DecrementFeederStepCounters(void);
extern u8 gBattleOutcome;
EWRAM_DATA u8 gNumSafariBalls = 0;
-EWRAM_DATA static u16 gSafariZoneStepCounter = 0;
+EWRAM_DATA u16 gSafariZoneStepCounter = 0;
EWRAM_DATA static struct PokeblockFeeder gPokeblockFeeders[NUM_POKEBLOCK_FEEDERS] = {0};
extern void (*gFieldCallback)(void);
diff --git a/src/engine/save.c b/src/save.c
index 250b29a87..0b7a3dd79 100644
--- a/src/engine/save.c
+++ b/src/save.c
@@ -663,6 +663,35 @@ static u16 CalculateChecksum(void *data, u16 size)
return ((checksum >> 16) + checksum);
}
+#if DEBUG
+void sub_813B79C(void)
+{
+ struct SaveSector *sbSector;
+ struct SaveSector *hofSector;
+ const struct SaveBlockChunk *sbChunks;
+ const struct SaveBlockChunk *hofChunks;
+ u16 i;
+
+ sbSector = eSaveSection;
+ sbChunks = sSaveBlockChunks;
+ for (i = 0; i < NUM_SECTORS_PER_SAVE_SLOT * 2; i++)
+ {
+ DoReadFlashWholeSection(i, sbSector);
+ sbSector->checksum = CalculateChecksum(sbSector, sbChunks[sbSector->id].size);
+ ProgramFlashSectorAndVerify(i, sbSector->data);
+ }
+
+ hofSector = eSaveSection;
+ hofChunks = sHallOfFameChunks;
+ for (i = 0; i < NUM_HALL_OF_FAME_SECTORS; i++)
+ {
+ DoReadFlashWholeSection(HALL_OF_FAME_SECTOR + i, hofSector);
+ hofSector->id = CalculateChecksum(hofSector, hofChunks[i].size); // why id?
+ ProgramFlashSectorAndVerify(HALL_OF_FAME_SECTOR + i, hofSector->data);
+ }
+}
+#endif
+
u8 Save_WriteDataInternal(u8 saveType)
{
u8 i;
@@ -706,13 +735,21 @@ u8 Save_WriteDataInternal(u8 saveType)
return 0;
}
+#if DEBUG
+extern u32 gUnknown_Debug_03004BD0;
+#endif
+
u8 Save_WriteData(u8 saveType) // TrySave
{
if (gFlashMemoryPresent != TRUE)
return SAVE_STATUS_ERROR;
Save_WriteDataInternal(saveType);
- if (!gDamagedSaveSectors)
+ if (!gDamagedSaveSectors
+#if DEBUG
+ && gUnknown_Debug_03004BD0 == 0
+#endif
+ )
return SAVE_STATUS_OK;
DoSaveFailedScreen(saveType);
@@ -815,7 +852,7 @@ u8 Save_LoadGameData(u8 saveType)
return result;
}
-static const u8 sUnusedFlashSectors[] = { 30, 31 };
+const u8 sUnusedFlashSectors[] = { 30, 31 };
bool8 unref_sub_8125F4C(struct UnkSaveSection *a1)
{
diff --git a/src/engine/save_failed_screen.c b/src/save_failed_screen.c
index 74a1e9612..f57315d09 100644
--- a/src/engine/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -26,6 +26,7 @@
static EWRAM_DATA u16 gSaveFailedType = 0;
static EWRAM_DATA u16 gSaveFailedClockInfo[9] = {0};
+extern u32 gUnknown_Debug_03004BD0;
extern u32 gDamagedSaveSectors;
extern u32 gGameContinueCallback;
@@ -68,7 +69,7 @@ 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 IsSectorNonEmpty(u16 sector);
static bool8 WipeSector(u16 sector);
static bool8 WipeSectors(u32 sectorBits);
@@ -154,6 +155,11 @@ static void CB2_WipeSave(void)
gSaveFailedClockInfo[0] = TRUE;
+#if DEBUG
+ if (gUnknown_Debug_03004BD0 != 0)
+ gDamagedSaveSectors = 1;
+#endif
+
while (gDamagedSaveSectors != 0 && wipeTries < 3) // while there are still attempts left, keep trying to fix the save sectors.
{
if (WipeSectors(gDamagedSaveSectors) != FALSE)
@@ -264,18 +270,23 @@ static void VBlankCB_UpdateClockGraphics(void)
gSaveFailedClockInfo[1]--;
}
-static bool8 VerifySectorWipe(u16 sector)
+static bool8 IsSectorNonEmpty(u16 sector)
{
u32 *ptr = (u32 *)&gSharedMem;
u16 i;
ReadFlash(sector, 0, ptr, 4096);
+#if DEBUG // Don't verify the sector wipe?
for (i = 0; i < 0x400; i++, ptr++)
- if (*ptr)
+ ;
+ return gUnknown_Debug_03004BD0;
+#else
+ for (i = 0; i < 0x400; i++, ptr++)
+ if (*ptr != 0)
return TRUE;
-
return FALSE;
+#endif
}
static bool8 WipeSector(u16 sector)
@@ -288,7 +299,7 @@ static bool8 WipeSector(u16 sector)
for (j = 0; j < 0x1000; j++)
ProgramFlashByte(sector, j, 0);
- failed = VerifySectorWipe(sector);
+ failed = IsSectorNonEmpty(sector);
}
return failed;
diff --git a/src/engine/save_menu_util.c b/src/save_menu_util.c
index ccf4d9f6f..ccf4d9f6f 100644
--- a/src/engine/save_menu_util.c
+++ b/src/save_menu_util.c
diff --git a/src/field/scrcmd.c b/src/scrcmd.c
index bc5cd0b1d..e5272bc9c 100644
--- a/src/field/scrcmd.c
+++ b/src/scrcmd.c
@@ -12,8 +12,7 @@
#include "field_door.h"
#include "field_effect.h"
#include "field_fadetransition.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "field_message_box.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
diff --git a/src/engine/script.c b/src/script.c
index 8625cfdc2..8625cfdc2 100644
--- a/src/engine/script.c
+++ b/src/script.c
diff --git a/src/field/script_menu.c b/src/script_menu.c
index 9d901a03c..9d901a03c 100644
--- a/src/field/script_menu.c
+++ b/src/script_menu.c
diff --git a/src/field/script_movement.c b/src/script_movement.c
index c7ce55171..653dffcbf 100644
--- a/src/field/script_movement.c
+++ b/src/script_movement.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "script_movement.h"
-#include "field_map_obj.h"
-#include "field_map_obj_helpers.h"
+#include "event_object_movement.h"
#include "task.h"
#include "util.h"
diff --git a/src/field/secret_base.c b/src/secret_base.c
index 2d02de004..210d49835 100644
--- a/src/field/secret_base.c
+++ b/src/secret_base.c
@@ -23,6 +23,7 @@
#include "menu.h"
#include "menu_helpers.h"
#include "metatile_behavior.h"
+#include "new_game.h"
#include "palette.h"
#include "pokemon.h"
#include "overworld.h"
@@ -127,10 +128,11 @@ void ClearSecretBase(struct SecretBaseRecord *record)
{
u16 i;
u16 j;
+
record->secretBaseId = 0;
- for (i=0; i<OT_NAME_LENGTH; i++)
+ for (i = 0; i < OT_NAME_LENGTH; i++)
record->playerName[i] = 0xff;
- for (i=0; i<4; i++)
+ for (i = 0; i < 4; i++)
record->trainerId[i] = 0x00;
record->sbr_field_e = 0;
record->sbr_field_10 = 0;
@@ -139,14 +141,15 @@ void ClearSecretBase(struct SecretBaseRecord *record)
record->gender = 0;
record->sbr_field_1_5 = 0;
record->sbr_field_1_6 = 0;
- for (i=0; i<16; i++) {
+ for (i = 0; i < 16; i++)
+ {
record->decorations[i] = 0;
record->decorationPos[i] = 0;
}
- for (i=0; i<6; i++) {
- for (j=0; j<4; j++) {
+ for (i = 0; i < 6; i++)
+ {
+ for (j = 0; j < 4; j++)
record->partyMoves[i * 4 + j] = 0;
- }
record->partyPersonality[i] = 0;
record->partyEVs[i] = 0;
record->partySpecies[i] = 0;
@@ -175,17 +178,20 @@ void sub_80BB5D0(void)
void sub_80BB5E4(void)
{
u16 i;
+
gSpecialVar_Result = 0;
- for (i = 0; i < MAX_SECRET_BASES; i++) {
- if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId)
- continue;
- gSpecialVar_Result = 1;
- VarSet(VAR_CURRENT_SECRET_BASE, i);
- break;
+ for (i = 0; i < MAX_SECRET_BASES; i++)
+ {
+ if (gUnknown_020387DC == gSaveBlock1.secretBases[i].secretBaseId)
+ {
+ gSpecialVar_Result = 1;
+ VarSet(VAR_CURRENT_SECRET_BASE, i);
+ break;
+ }
}
}
-void sub_80BB63C(void) // 80bb63c
+void sub_80BB63C(void)
{
if (gSaveBlock1.secretBases[0].secretBaseId)
gSpecialVar_Result = 1;
@@ -193,7 +199,7 @@ void sub_80BB63C(void) // 80bb63c
gSpecialVar_Result = 0;
}
-u8 sub_80BB66C(void) // 80bb66c
+u8 sub_80BB66C(void)
{
s16 x, y;
s16 v0;
@@ -214,7 +220,7 @@ u8 sub_80BB66C(void) // 80bb66c
return 0;
}
-void sub_80BB70C(void) // 80bb70c
+void sub_80BB70C(void)
{
gSpecialVar_0x8007 = sub_80BB66C();
}
@@ -222,9 +228,11 @@ void sub_80BB70C(void) // 80bb70c
s16 unref_sub_80BB724(u16 *a0, u8 a1)
{
u16 v2;
- for (v2=0; v2<0x200; v2++) {
+
+ for (v2 = 0; v2 < 0x200; v2++)
+ {
if ((a0[v2] & 0xFFF) == a1)
- return (s16)v2;
+ return v2;
}
return -1;
}
@@ -232,9 +240,13 @@ s16 unref_sub_80BB724(u16 *a0, u8 a1)
void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3)
{
s16 x, y;
- for (y=0; y<gMapHeader.mapData->height; y++) {
- for (x=0; x<gMapHeader.mapData->width; x++) {
- if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3) {
+
+ for (y=0; y<gMapHeader.mapData->height; y++)
+ {
+ for (x=0; x<gMapHeader.mapData->width; x++)
+ {
+ if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3)
+ {
*arg1 = x;
*arg2 = y;
return;
@@ -248,17 +260,22 @@ void sub_80BB800(void)
s16 x, y;
s16 tile_id;
u16 idx;
+
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
tile_id = MapGridGetMetatileIdAt(x, y);
- for (idx=0; idx<7; idx++) {
- if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) {
+ for (idx = 0; idx < 7; idx++)
+ {
+ if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id)
+ {
MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00);
CurrentMapDrawMetatileAt(x, y);
return;
}
}
- for (idx=0; idx<7; idx++) {
- if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id) {
+ for (idx = 0; idx < 7; idx++)
+ {
+ if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id)
+ {
MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_0 | 0xc00);
CurrentMapDrawMetatileAt(x, y);
return;
@@ -269,7 +286,9 @@ void sub_80BB800(void)
u8 sub_80BB8A8(u8 *arg1)
{
u8 idx;
- for (idx=0; idx<7; idx++) {
+
+ for (idx=0; idx<7; idx++)
+ {
if (arg1[idx] == EOS)
return idx;
}
@@ -280,10 +299,10 @@ void sub_80BB8CC(void)
{
u8 nameLength;
u16 idx;
+
gSaveBlock1.secretBases[0].secretBaseId = gUnknown_020387DC;
- for (idx=0; idx<4; idx++) {
+ for (idx=0; idx<4; idx++)
gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx];
- }
VarSet(VAR_CURRENT_SECRET_BASE, 0);
nameLength = sub_80BB8A8(gSaveBlock2.playerName);
memset(gSaveBlock1.secretBases[0].playerName, 0xFF, OT_NAME_LENGTH);
@@ -296,13 +315,20 @@ void sub_80BB970(struct MapEvents *events)
{
u16 bgevidx, idx, jdx;
s16 tile_id;
- for (bgevidx=0; bgevidx<events->bgEventCount; bgevidx++) {
- if (events->bgEvents[bgevidx].kind == 8) {
- for (jdx=0; jdx<MAX_SECRET_BASES; jdx++) {
- if (gSaveBlock1.secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId) {
+
+ for (bgevidx = 0; bgevidx < events->bgEventCount; bgevidx++)
+ {
+ if (events->bgEvents[bgevidx].kind == 8)
+ {
+ for (jdx = 0; jdx < MAX_SECRET_BASES; jdx++)
+ {
+ if (gSaveBlock1.secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId)
+ {
tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7);
- for (idx=0; idx<7; idx++) {
- if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) {
+ for (idx = 0; idx < 7; idx++)
+ {
+ if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id)
+ {
MapGridSetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00);
break;
}
@@ -323,14 +349,14 @@ void sub_80BBA14(void)
void sub_80BBA48(u8 taskid)
{
u16 curbaseid;
- switch (gTasks[taskid].data[0]) {
+ switch (gTasks[taskid].data[0])
+ {
case 0:
gTasks[taskid].data[0] = 1;
break;
case 1:
- if (!gPaletteFade.active) {
+ if (!gPaletteFade.active)
gTasks[taskid].data[0] = 2;
- }
break;
case 2:
curbaseid = VarGet(VAR_CURRENT_SECRET_BASE);
@@ -362,7 +388,8 @@ bool8 sub_80BBB24(void)
void sub_80BBB50(u8 taskid)
{
FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2);
- if (IsWeatherNotFadingIn() == 1) {
+ if (IsWeatherNotFadingIn() == 1)
+ {
EnableBothScriptContexts();
DestroyTask(taskid);
}
@@ -371,6 +398,7 @@ void sub_80BBB50(u8 taskid)
void sub_80BBB90(void)
{
s16 x, y;
+
ScriptContext2_Enable();
HideMapNamePopup();
sub_80BB764(&x, &y, 0x220);
@@ -383,7 +411,9 @@ void sub_80BBB90(void)
void sub_80BBBEC(u8 taskid)
{
s8 idx;
- if (!gPaletteFade.active) {
+
+ if (!gPaletteFade.active)
+ {
idx = 4 * (gUnknown_020387DC / 10);
Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]);
warp_in();
@@ -411,17 +441,29 @@ void sub_80BBCCC(u8 flagIn)
{
u16 curBaseId;
u16 x, y;
- if (CurrentMapIsSecretBase()) {
+
+ if (CurrentMapIsSecretBase())
+ {
curBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
- for (x=0; x<16; x++) {
- if (gSaveBlock1.secretBases[curBaseId].decorations[x] > 0 && gSaveBlock1.secretBases[curBaseId].decorations[x] <= 0x78 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].permission != DECORPERM_SOLID_MAT) {
- sub_80FF394((gSaveBlock1.secretBases[curBaseId].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[curBaseId].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]);
+ for (x = 0; x < 16; x++)
+ {
+ if (gSaveBlock1.secretBases[curBaseId].decorations[x] > 0
+ && gSaveBlock1.secretBases[curBaseId].decorations[x] <= 0x78
+ && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].permission != DECORPERM_SOLID_MAT)
+ {
+ sub_80FF394(
+ (gSaveBlock1.secretBases[curBaseId].decorationPos[x] >> 4) + 7,
+ (gSaveBlock1.secretBases[curBaseId].decorationPos[x] & 0xF) + 7,
+ gSaveBlock1.secretBases[curBaseId].decorations[x]);
}
}
- if (curBaseId != 0) {
+ if (curBaseId != 0)
+ {
sub_80BB764(&x, &y, 0x220);
MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21);
- } else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) {
+ }
+ else if (flagIn == 1 && VarGet(VAR_0x4089) == 1)
+ {
sub_80BB764(&x, &y, 0x220);
MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a);
}
@@ -438,38 +480,47 @@ void sub_80BBDD0(void)
u8 permission;
u8 ndecor;
u16 curBase = VarGet(VAR_CURRENT_SECRET_BASE);
- if (!CurrentMapIsSecretBase()) {
+
+ if (!CurrentMapIsSecretBase())
+ {
roomdecor = gSaveBlock1.playerRoomDecor;
roomdecorpos = gSaveBlock1.playerRoomDecorPos;
ndecor = 12;
- } else {
+ }
+ else
+ {
roomdecor = gSaveBlock1.secretBases[curBase].decorations;
roomdecorpos = gSaveBlock1.secretBases[curBase].decorationPos;
ndecor = 16;
}
- for (decidx=0; decidx<ndecor; decidx++) {
- if (roomdecor[decidx] != DECOR_NONE) {
+ for (decidx = 0; decidx < ndecor; decidx++)
+ {
+ if (roomdecor[decidx] != DECOR_NONE)
+ {
permission = gDecorations[roomdecor[decidx]].permission;
if (permission == DECORPERM_SOLID_MAT)
{
- for (objid=0; objid<gMapHeader.events->mapObjectCount; objid++) {
+ for (objid = 0; objid < gMapHeader.events->mapObjectCount; objid++)
+ {
if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE)
break;
}
- if (objid == gMapHeader.events->mapObjectCount)
- continue;
- gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4;
- gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF;
- metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
- if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE) {
- gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20;
- VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]);
- gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId;
- FlagClear(gSpecialVar_0x8004 + 0xAE);
- show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
- sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
- sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
- gSpecialVar_0x8004 ++;
+ if (objid != gMapHeader.events->mapObjectCount)
+ {
+ gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4;
+ gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF;
+ metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
+ if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE)
+ {
+ gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20;
+ VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]);
+ gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId;
+ FlagClear(gSpecialVar_0x8004 + 0xAE);
+ show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
+ sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ gSpecialVar_0x8004 ++;
+ }
}
}
}
@@ -485,8 +536,12 @@ void sub_80BBFA4(void)
void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events)
{
s16 bgevtidx;
- for (bgevtidx=0; bgevtidx<events->bgEventCount; bgevtidx++) {
- if (events->bgEvents[bgevtidx].kind == 8 && position->x == events->bgEvents[bgevtidx].x + 7 && position->y == events->bgEvents[bgevtidx].y + 7) {
+
+ for (bgevtidx = 0; bgevtidx < events->bgEventCount; bgevtidx++)
+ {
+ if (events->bgEvents[bgevtidx].kind == 8 && position->x == events->bgEvents[bgevtidx].x + 7
+ && position->y == events->bgEvents[bgevtidx].y + 7)
+ {
gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId;
break;
}
@@ -511,15 +566,15 @@ bool8 sub_80BC050(void)
void sub_80BC074(u8 taskid)
{
- switch (gTasks[taskid].data[0]) {
+ switch (gTasks[taskid].data[0])
+ {
case 0:
ScriptContext2_Enable();
gTasks[taskid].data[0] = 1;
break;
case 1:
- if (!gPaletteFade.active) {
+ if (!gPaletteFade.active)
gTasks[taskid].data[0] = 2;
- }
break;
case 2:
copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E);
@@ -532,12 +587,14 @@ void sub_80BC074(u8 taskid)
}
}
-void sub_80BC0F8(void) {
+void sub_80BC0F8(void)
+{
CreateTask(sub_80BC074, 0);
FadeScreen(1, 0);
}
-void sub_80BC114(void) {
+void sub_80BC114(void)
+{
if (gSaveBlock1.secretBases[0].secretBaseId != gUnknown_020387DC)
gSpecialVar_Result = 1;
else
@@ -547,14 +604,17 @@ void sub_80BC114(void) {
u8 sub_80BC14C(u8 sbid)
{
s16 idx;
- for (idx=0; idx<MAX_SECRET_BASES; idx++) {
+
+ for (idx = 0; idx < MAX_SECRET_BASES; idx++)
+ {
if (gSaveBlock1.secretBases[idx].secretBaseId == sbid)
return idx;
}
return 0;
}
-u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190
+u8 *sub_80BC190(u8 *dest, u8 arg1)
+{
u8 local1;
u8 *str;
@@ -570,12 +630,14 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190
#endif
}
-u8 *GetSecretBaseMapName(u8 *dest) {
+u8 *GetSecretBaseMapName(u8 *dest)
+{
gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].secretBaseId;
return sub_80BC190(dest, VarGet(VAR_CURRENT_SECRET_BASE));
}
-void BufferSecretBaseOwnerName(void) {
+void BufferSecretBaseOwnerName(void)
+{
u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_CURRENT_SECRET_BASE)].playerName;
u8 *var1 = gStringVar1;
u8 var2 = sub_80BB8A8(var0);
@@ -583,13 +645,16 @@ void BufferSecretBaseOwnerName(void) {
*var3 = EOS;
}
-bool8 sub_80BC268(u8 i) { // 80bc268
+bool8 sub_80BC268(u8 i)
+{
if (gSaveBlock1.secretBases[i].sbr_field_1_6)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
-u8 sub_80BC298(struct Pokemon *mon) { // 80bc298
+u8 sub_80BC298(struct Pokemon *mon)
+{
u16 evsum = GetMonData(mon, MON_DATA_HP_EV);
evsum += GetMonData(mon, MON_DATA_ATK_EV);
evsum += GetMonData(mon, MON_DATA_DEF_EV);
@@ -804,10 +869,11 @@ void sub_80BC474(void)
{
u16 eventId;
struct MapEvents *mapEvents = gMapHeader.events;
+
for (eventId = 0; eventId < mapEvents->bgEventCount; eventId++)
{
if (mapEvents->bgEvents[eventId].kind == 8
- && gSaveBlock1.secretBases[0].secretBaseId == mapEvents->bgEvents[eventId].bgUnion.secretBaseId)
+ && gSaveBlock1.secretBases[0].secretBaseId == mapEvents->bgEvents[eventId].bgUnion.secretBaseId)
{
u16 i;
s16 tileId = MapGridGetMetatileIdAt(mapEvents->bgEvents[eventId].x + 7, mapEvents->bgEvents[eventId].y + 7);
@@ -845,33 +911,23 @@ u8 sub_80BC538(void)
{
s16 secretBaseIndex;
u8 retVal = 0;
-
+
for (secretBaseIndex = 1; secretBaseIndex < MAX_SECRET_BASES; secretBaseIndex++)
{
if (sub_80BC268(secretBaseIndex) == TRUE)
- {
retVal++;
- }
}
-
return retVal;
}
void sub_80BC56C(void)
{
- u8 secretBaseIndex = sub_80BC14C(gUnknown_020387DC);
- if (sub_80BC268(secretBaseIndex) == TRUE)
- {
+ if (sub_80BC268(sub_80BC14C(gUnknown_020387DC)) == TRUE)
gSpecialVar_Result = 1;
- }
else if (sub_80BC538() > 9)
- {
gSpecialVar_Result = 2;
- }
else
- {
gSpecialVar_Result = 0;
- }
}
void sub_80BC5BC(void)
@@ -897,18 +953,15 @@ void Task_SecretBasePC_Registry(u8 taskId)
ScriptContext2_Enable();
ClearVerticalScrollIndicatorPalettes();
LoadScrollIndicatorPalette();
-
+
taskData = gTasks[taskId].data;
taskData[0] = sub_80BC538();
if (taskData[0] != 0)
{
- if (taskData[0] > 7) {
+ if (taskData[0] > 7)
taskData[3] = 7;
- }
else
- {
taskData[3] = taskData[0];
- }
taskData[1] = 0;
taskData[2] = 0;
@@ -964,7 +1017,9 @@ void sub_80BC6B0(u8 taskId)
Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match
}
else
+ {
CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xbc, 0x98);
+ }
if (taskData[2] == 0)
DestroyVerticalScrollIndicator(TOP_ARROW);
@@ -989,12 +1044,12 @@ void sub_80BC824(u8 taskId)
{
if (taskData[1])
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[1] = Menu_MoveCursor(-1);
}
else if (taskData[2])
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[2]--;
sub_80BC6B0(taskId);
}
@@ -1005,20 +1060,20 @@ void sub_80BC824(u8 taskId)
{
if (taskData[2] + taskData[1] != taskData[0])
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[2]++;
sub_80BC6B0(taskId);
}
}
else
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[1] = Menu_MoveCursor(1);
}
}
else if (gMain.newKeys & A_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
if (taskData[1] + taskData[2] == taskData[0])
{
Menu_DestroyCursor();
@@ -1034,7 +1089,7 @@ void sub_80BC824(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
Menu_DestroyCursor();
Menu_EraseWindowRect(0, 0, 29, 19);
sub_80BCC54(taskId);
@@ -1078,7 +1133,7 @@ void sub_80BC9E4(u8 taskId)
{
if (Menu_GetCursorPos())
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
Menu_MoveCursor(-1);
}
}
@@ -1086,18 +1141,18 @@ void sub_80BC9E4(u8 taskId)
{
if (Menu_GetCursorPos() != 1)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
Menu_MoveCursor(1);
}
}
else if (gMain.newKeys & A_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
gUnknown_083D13D4[Menu_GetCursorPos()].func(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
sub_80BCBF8(taskId);
}
}
@@ -1132,14 +1187,10 @@ void sub_80BCB10(u8 taskId)
taskData[0]--;
if (taskData[2] > 0)
- {
taskData[2]--;
- }
if (taskData[0] < 8)
- {
taskData[3]--;
- }
sub_80BC7D8(taskId);
gTasks[taskId].func = sub_80BC824;
@@ -1180,13 +1231,9 @@ void sub_80BCC54(u8 taskId)
DestroyVerticalScrollIndicator(BOTTOM_ARROW);
if (curBaseIndex == 0)
- {
ScriptContext1_SetupScript(gUnknown_0815F399);
- }
else
- {
ScriptContext1_SetupScript(gUnknown_0815F49A);
- }
DestroyTask(taskId);
}
@@ -1216,7 +1263,8 @@ const u8 *GetSecretBaseTrainerLoseText(void)
void unref_sub_80BCD7C(u8 secretBaseIndex)
{
u16 i;
- for (i = 0; i == 0; i++)
+
+ for (i = 0; i < 1; i++)
{
gSaveBlock1.secretBases[secretBaseIndex].partyPersonality[i] = i + 1;
gSaveBlock1.secretBases[secretBaseIndex].partyMoves[i * 4] = i + 1;
@@ -1230,8 +1278,8 @@ void unref_sub_80BCD7C(u8 secretBaseIndex)
void sub_80BCE1C(void)
{
u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
- sub_810FB10(1);
+ sub_810FB10(1);
CreateSecretBaseEnemyParty(&gSaveBlock1.secretBases[curBaseIndex]);
}
@@ -1249,9 +1297,7 @@ void sub_80BCE90()
u8 i;
for (i = 0; i < MAX_SECRET_BASES; i++)
- {
gSaveBlock1.secretBases[i].sbr_field_1_5 = 0;
- }
FlagSet(FLAG_DAILY_UNKNOWN_8C2);
}
@@ -1281,28 +1327,18 @@ void sub_80BCF1C(u8 taskId)
behavior = MapGridGetMetatileBehaviorAt(x, y);
if (sub_8057350(behavior) == TRUE)
- {
DoYellowCave4Sparkle();
- }
else if (sub_8057314(behavior) == TRUE)
- {
sub_80C68A4(MapGridGetMetatileIdAt(x, y), x, y);
- }
else if (sub_8057328(behavior) == TRUE)
- {
sub_80C6A54(x, y);
- }
else if (sub_805733C(behavior) == TRUE)
- {
DoDecorationSoundEffect(MapGridGetMetatileIdAt(x, y));
- }
}
break;
case 2:
if (!FieldEffectActiveListContains(taskData[4]))
- {
taskData[1] = 1;
- }
break;
}
}
@@ -1320,9 +1356,7 @@ bool8 sub_80BD070(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB
for (i = 0; i < 4; i++)
{
if (baseA->trainerId[i] != baseB->trainerId[i])
- {
return FALSE;
- }
}
return TRUE;
@@ -1335,9 +1369,7 @@ bool8 sub_80BD0A0(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB
for (i = 0; i < OT_NAME_LENGTH && (baseA->playerName[i] != 0xFF || baseB->playerName[i] != 0xFF); i++)
{
if (baseA->playerName[i] != baseB->playerName[i])
- {
return FALSE;
- }
}
return TRUE;
@@ -1346,12 +1378,9 @@ bool8 sub_80BD0A0(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB
bool8 sub_80BD0EC(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB)
{
if (baseA->gender == baseB->gender && sub_80BD070(baseA, baseB) && sub_80BD0A0(baseA, baseB))
- {
return TRUE;
- }
-
-
- return FALSE;
+ else
+ return FALSE;
}
s16 sub_80BD12C(u8 secretBaseId)
@@ -1361,9 +1390,7 @@ s16 sub_80BD12C(u8 secretBaseId)
for (i = 0; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].secretBaseId == secretBaseId)
- {
return i;
- }
}
return -1;
@@ -1376,9 +1403,7 @@ u8 sub_80BD170(void)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].secretBaseId == 0)
- {
return i;
- }
}
return 0;
@@ -1391,9 +1416,7 @@ u8 sub_80BD1B0(void)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 0 && gSaveBlock1.secretBases[i].sbr_field_1_0 == 0)
- {
return i;
- }
}
return 0;
@@ -1404,9 +1427,7 @@ u8 sub_80BD1FC(struct SecretBaseRecord *secretBase)
s16 secretBaseIndex;
if (secretBase->secretBaseId == 0)
- {
return 0;
- }
secretBaseIndex = sub_80BD12C(secretBase->secretBaseId);
if (secretBaseIndex != 0)
@@ -1414,11 +1435,9 @@ u8 sub_80BD1FC(struct SecretBaseRecord *secretBase)
if (secretBaseIndex != -1)
{
if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_0 == 1)
- {
return 0;
- }
if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_6 != 2
- || secretBase->sbr_field_1_0 == 1)
+ || secretBase->sbr_field_1_0 == 1)
{
sub_80BD034(secretBaseIndex, secretBase);
return secretBaseIndex;
@@ -1456,7 +1475,7 @@ void sub_80BD280(void)
for (j = i + 1; j < MAX_SECRET_BASES; j++)
{
if ((!secretBases[i].sbr_field_1_6 && secretBases[j].sbr_field_1_6 == 1)
- || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2))
+ || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2))
{
temp = secretBases[i];
secretBases[i] = secretBases[j];
@@ -1473,9 +1492,7 @@ void sub_80BD328(struct SecretBaseRecord *secretBases, u8 b)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (secretBases[i].sbr_field_1_6 == b)
- {
sub_80BD1FC(&secretBases[i]);
- }
}
}
@@ -1540,9 +1557,7 @@ void sub_80BD3DC(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
}
if (var1 == 7)
- {
break;
- }
}
}
@@ -1588,16 +1603,12 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
if (basesA[i].secretBaseId)
{
if (basesA[i].sbr_field_1_6 == 1)
- {
basesA[i].sbr_field_1_0 = 1;
- }
if (!sub_80BD494(&basesA[i], basesB, i))
{
if (!sub_80BD494(&basesA[i], basesC, i))
- {
sub_80BD494(&basesA[i], basesD, i);
- }
}
}
}
@@ -1609,9 +1620,7 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
basesB[i].sbr_field_1_5 = 0;
if (!sub_80BD494(&basesB[i], basesC, i))
- {
sub_80BD494(&basesB[i], basesD, i);
- }
}
}
@@ -1624,9 +1633,7 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
}
if (basesD[i].secretBaseId)
- {
basesD[i].sbr_field_1_5 = 0;
- }
}
}
@@ -1650,9 +1657,14 @@ void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
void sub_80BD674(void *playerRecords, u32 size, u8 c)
{
- if (FlagGet(FLAG_RECEIVED_SECRET_POWER))
+ if (
+#if DEBUG
+ gUnknown_020297ED != 0 ||
+#endif
+ FlagGet(FLAG_RECEIVED_SECRET_POWER))
{
u16 i;
+
u8 numLinkedPlayers = GetLinkPlayerCount();
switch (numLinkedPlayers)
{
@@ -1695,14 +1707,10 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 2)
- {
gSaveBlock1.secretBases[i].sbr_field_1_6 = 0;
- }
}
if (gSaveBlock1.secretBases[0].sbr_field_e != 0xFFFF)
- {
gSaveBlock1.secretBases[0].sbr_field_e++;
- }
}
}
diff --git a/src/field/shop.c b/src/shop.c
index e087628da..87dbbeb97 100644
--- a/src/field/shop.c
+++ b/src/shop.c
@@ -16,7 +16,7 @@
#include "task.h"
#include "tv.h"
#include "scanline_effect.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
#include "item.h"
@@ -115,7 +115,7 @@ static void SetShopMenuCallback(void *callbackPtr)
gMartInfo.callback = callbackPtr;
}
-static void SetShopItemsForSale(u16 *items)
+static void SetShopItemsForSale(const u16 *items)
{
u16 i = 0;
@@ -153,13 +153,9 @@ static void Task_DoBuySellMenu(u8 taskId)
{
PlaySE(SE_SELECT);
if (gMartInfo.martType == MART_TYPE_0)
- {
sBuySellQuitMenuActions[gMartBuySellOptionList[gMartInfo.cursor]].func(taskIdConst);
- }
else
- {
sBuySellQuitMenuActions[gMartBuyNoSellOptionList[gMartInfo.cursor]].func(taskIdConst);
- }
}
else if (gMain.newKeys & B_BUTTON)
{
@@ -366,15 +362,15 @@ static void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4)
switch (tempVar4)
{
- case 0: // _080B335C
+ case 0:
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3);
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
break;
- case 1: // _080B3364
+ case 1:
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4);
break;
- case 2: // _080B3398
+ case 2:
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
break;
@@ -550,7 +546,7 @@ static void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControl
{
u8 *stringPtr = gStringVar1;
- if (hasControlCode != FALSE)
+ if (hasControlCode)
{
stringPtr[0] = EXT_CTRL_CODE_BEGIN;
stringPtr[1] = 0x1;
@@ -563,7 +559,7 @@ static void Shop_DisplayNormalPriceInList(u16 itemId, u8 var2, bool32 hasControl
sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1);
stringPtr = gStringVar1;
- if (hasControlCode != FALSE)
+ if (hasControlCode)
stringPtr = &gStringVar1[3];
GetMoneyAmountText(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4);
@@ -574,7 +570,7 @@ static void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasCon
{
u8 *stringPtr = gStringVar1;
- if (hasControlCode != FALSE)
+ if (hasControlCode)
{
stringPtr[0] = EXT_CTRL_CODE_BEGIN;
stringPtr[1] = 0x1;
@@ -586,7 +582,7 @@ static void Shop_DisplayDecorationPriceInList(u16 itemId, u8 var2, bool32 hasCon
sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1);
stringPtr = gStringVar1;
- if (hasControlCode != FALSE)
+ if (hasControlCode)
stringPtr = &gStringVar1[3];
// some names are the maximum string length for a shop item. Because there is no room for
@@ -632,8 +628,10 @@ static void Shop_PrintItemDescText(void)
0x4, 0x68, 0x68, 0x30, 0);
}
else
+ {
sub_8072AB0(gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].description,
0x4, 0x68, 0x68, 0x30, 0);
+ }
}
else
{
@@ -687,7 +685,9 @@ static void Task_DoItemPurchase(u8 taskId)
Task_UpdatePurchaseHistory(taskId);
}
else
+ {
DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1);
+ }
}
else // a normal mart is only type 0, so types 1 and 2 are decoration marts.
{
@@ -706,7 +706,9 @@ static void Task_DoItemPurchase(u8 taskId)
}
}
else
+ {
DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, Shop_DoPricePrintAndReturnToBuyMenu, 0xC3E1);
+ }
}
static void Shop_DoYesNoPurchase(u8 taskId)
@@ -1129,19 +1131,17 @@ static void Shop_DoCursorAction(u8 taskId)
ConvertIntToDecimalStringN(gStringVar2, gMartTotalCost, 0, 0x8);
if (gMartInfo.martType == MART_TYPE_1)
- {
StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe2);
- }
else
- {
StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe3);
- }
DisplayItemMessageOnField(taskId, gStringVar4, Shop_DoYesNoPurchase, 0xC3E1);
}
}
}
else
+ {
Task_ExitBuyMenu(taskId);
+ }
}
else if (gMain.newKeys & B_BUTTON) // go back to buy/sell/exit menu
{
@@ -1238,3 +1238,14 @@ void Shop_CreateDecorationShop2Menu(u16 *itemList)
SetShopItemsForSale(itemList);
SetShopMenuCallback(EnableBothScriptContexts);
}
+
+#if DEBUG
+
+void debug_sub_80C2818(void)
+{
+ CreateShopMenu(MART_TYPE_0);
+ SetShopItemsForSale(gUnusedMartArray);
+ SetShopMenuCallback(NULL);
+}
+
+#endif
diff --git a/src/field/slot_machine.c b/src/slot_machine.c
index 21bf29e91..8075f24e4 100644
--- a/src/field/slot_machine.c
+++ b/src/slot_machine.c
@@ -8,6 +8,7 @@
#include "sound.h"
#include "main.h"
#include "slot_machine.h"
+#include "string_util.h"
#include "decompress.h"
#include "trig.h"
#include "graphics.h"
@@ -17,7 +18,95 @@
#include "menu.h"
#include "ewram.h"
-struct UnkStruct1 {
+enum
+{
+ SLOT_MACHINE_TAG_7_RED,
+ SLOT_MACHINE_TAG_7_BLUE,
+ SLOT_MACHINE_TAG_AZURILL,
+ SLOT_MACHINE_TAG_LOTAD,
+ SLOT_MACHINE_TAG_CHERRY,
+ SLOT_MACHINE_TAG_POWER,
+ SLOT_MACHINE_TAG_REPLAY
+};
+
+enum
+{
+ SLOT_MACHINE_MATCHED_1CHERRY,
+ SLOT_MACHINE_MATCHED_2CHERRY,
+ SLOT_MACHINE_MATCHED_REPLAY,
+ SLOT_MACHINE_MATCHED_LOTAD,
+ SLOT_MACHINE_MATCHED_AZURILL,
+ SLOT_MACHINE_MATCHED_POWER,
+ SLOT_MACHINE_MATCHED_777_MIXED,
+ SLOT_MACHINE_MATCHED_777_RED,
+ SLOT_MACHINE_MATCHED_777_BLUE,
+ SLOT_MACHINE_MATCHED_NONE
+};
+
+struct SlotMachineEwramStruct
+{
+ /*0x00*/ u8 state;
+ /*0x01*/ u8 unk01;
+ /*0x02*/ u8 pikaPower;
+ /*0x03*/ u8 unk03;
+ /*0x04*/ u8 unk04;
+ /*0x05*/ u8 unk05;
+ /*0x06*/ u8 unk06;
+ /*0x07*/ u8 unk07;
+ /*0x08*/ u16 matchedSymbols;
+ /*0x0A*/ u8 unk0A;
+ /*0x0B*/ u8 unk0B;
+ /*0x0C*/ s16 coins;
+ /*0x0E*/ s16 payout;
+ /*0x10*/ s16 unk10;
+ /*0x12*/ s16 bet;
+ /*0x14*/ s16 unk14;
+ /*0x16*/ s16 unk16;
+ /*0x18*/ s16 unk18;
+ /*0x1A*/ s16 unk1A;
+ /*0x1C*/ s16 unk1C[3];
+ /*0x22*/ u16 unk22[3];
+ /*0x28*/ s16 reelPositions[3];
+ /*0x2E*/ s16 unk2E[3];
+ /*0x34*/ s16 unk34[3];
+ /*0x3A*/ u8 reelTasks[3];
+ /*0x3D*/ u8 unk3D;
+ /*0x3E*/ u8 unk3E;
+ /*0x3F*/ u8 unk3F;
+ /*0x40*/ u8 unk40;
+ /*0x41*/ u8 unk41;
+ /*0x42*/ u8 unk42;
+ /*0x43*/ u8 unk43;
+ /*0x44*/ u8 unk44[5];
+ /*0x49*/ u8 unk49[2];
+ /*0x49*/ u8 unk4B[3];
+ /*0x4E*/ u8 unk4E[2];
+ /*0x50*/ u8 unk50[2];
+ /*0x52*/ u8 unk52[2];
+ /*0x54*/ u8 unk54[4];
+ /*0x58*/ u16 win0h;
+ /*0x5a*/ u16 win0v;
+ /*0x5c*/ u16 winIn;
+ /*0x5e*/ u16 winOut;
+ /*0x60*/ u16 backupMapMusic;
+ /*0x64*/ MainCallback prevMainCb;
+#if DEBUG
+ u32 unk68;
+ u32 unk6C;
+ u32 unk70;
+ u32 unk74;
+ u32 unk78;
+ u32 unk7C;
+ u32 unk80;
+ u32 unk84;
+ u32 unk88;
+ u32 unk8C;
+ s32 unk90;
+#endif
+};
+
+struct UnkStruct1
+{
/*0x00*/ u8 unk00;
/*0x01*/ u8 unk01;
/*0x02*/ s16 unk02;
@@ -29,7 +118,6 @@ struct UnkStruct1 {
#define SLOTMACHINE_GFX_TILES 236
#endif
-
static void CB2_SlotMachineSetup(void);
static void CB2_SlotMachineLoop(void);
static void PlaySlotMachine_Internal(u8 arg0, MainCallback cb);
@@ -61,7 +149,7 @@ static bool8 sub_8102008(struct Task *task);
static bool8 sub_8102034(struct Task *task);
static bool8 sub_8102058(struct Task *task);
static bool8 sub_8102090(struct Task *task);
-static bool8 sub_81020C8(struct Task *task);
+bool8 sub_81020C8(struct Task *task);
static bool8 sub_81021E0(struct Task *task);
static bool8 sub_81021FC(struct Task *task);
static bool8 sub_8102264(struct Task *task);
@@ -76,6 +164,9 @@ static bool8 sub_81023E0(struct Task *task);
static bool8 sub_81023FC(struct Task *task);
static bool8 sub_8102424(struct Task *task);
static bool8 sub_8102460(struct Task *task);
+#if DEBUG
+static bool8 debug_sub_8116E74(struct Task *);
+#endif
static void sub_8102484(void);
static void sub_81024F0(void);
static bool8 sub_8102540(void);
@@ -222,6 +313,24 @@ static void sub_81064B8(void);
static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4);
static void sub_81065DC(void);
+#if DEBUG
+static void debug_sub_811B5D0(void);
+static void debug_sub_811B620(void);
+static void debug_sub_811B5B4(s32 *, s32);
+static void debug_sub_811B894(void);
+static u8 debug_sub_811B634(void);
+static void debug_sub_811B654(u8 taskId);
+#endif
+
+#if DEBUG
+static u8 unk_debug_bss_1_0;
+static u8 unk_debug_bss_1_1;
+static u8 unk_debug_bss_1_2;
+static u8 unk_debug_bss_1_3;
+static u8 unk_debug_bss_1_4;
+static u32 unk_debug_bss_1_8;
+#endif
+
static const struct UnkStruct1 *const gUnknown_083ED048[];
static const u16 gPalette_83EDE24[];
static const u8 gUnknown_083ECD04[][3];
@@ -231,10 +340,22 @@ static const u16 gUnknown_083ECE48[];
void PlaySlotMachine(u8 arg0, MainCallback cb)
{
+#if DEBUG
+ unk_debug_bss_1_1 = 0;
+#endif
PlaySlotMachine_Internal(arg0, cb);
SetMainCallback2(CB2_SlotMachineSetup);
}
+#if DEBUG
+void debug_sub_811609C(u8 a, void (*func)(void))
+{
+ unk_debug_bss_1_1 = 1;
+ PlaySlotMachine_Internal(a, func);
+ SetMainCallback2(CB2_SlotMachineSetup);
+}
+#endif
+
static void CB2_SlotMachineSetup(void)
{
switch (gMain.state)
@@ -396,6 +517,11 @@ static void SlotMachineSetup_0_1(void)
eSlotMachine->unk1C[i] = 0x1f8 - eSlotMachine->reelPositions[i] * 24;
eSlotMachine->unk1C[i] %= 0x1f8;
}
+#if DEBUG
+ debug_sub_811B5D0();
+ if (unk_debug_bss_1_1 != 0)
+ eSlotMachine->coins = 1000;
+#endif
}
static void SlotMachineSetup_3_0(void)
@@ -441,7 +567,8 @@ static void sub_8101D04(void)
sub_8101D24(CreateTask(sub_8101D24, 0));
}
-static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = {
+static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) =
+{
sub_8101D5C,
sub_8101D8C,
sub_8101DB0,
@@ -470,12 +597,16 @@ static bool8 (*const gUnknown_083ECAAC[])(struct Task *task) = {
sub_81023E0,
sub_81023FC,
sub_8102424,
- sub_8102460
+ sub_8102460,
+#if DEBUG
+ debug_sub_8116E74,
+#endif
};
static void sub_8101D24(u8 taskId)
{
- while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId));
+ while (gUnknown_083ECAAC[eSlotMachine->state](gTasks + taskId))
+ ;
}
static bool8 sub_8101D5C(struct Task *task)
@@ -489,9 +620,7 @@ static bool8 sub_8101D5C(struct Task *task)
static bool8 sub_8101D8C(struct Task *task)
{
if (!gPaletteFade.active)
- {
eSlotMachine->state++;
- }
return FALSE;
}
@@ -517,9 +646,7 @@ static bool8 sub_8101DB0(struct Task *task)
static bool8 sub_8101DF4(struct Task *task)
{
if (sub_8104E18())
- {
eSlotMachine->state = 4;
- }
return FALSE;
}
@@ -527,10 +654,12 @@ static bool8 sub_8101E10(struct Task *task)
{
sub_8104CAC(0);
eSlotMachine->state = 5;
- if (eSlotMachine->coins >= 9999)
- {
+ if (
+#if DEBUG
+ (unk_debug_bss_1_1 == 0 || unk_debug_bss_1_4 == 0) &&
+#endif
+ eSlotMachine->coins >= 9999)
eSlotMachine->state = 23;
- }
return TRUE;
}
@@ -538,6 +667,32 @@ static bool8 sub_8101E3C(struct Task *task)
{
s16 i;
+#if DEBUG
+ if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_4 != 0)
+ {
+ if (eSlotMachine->coins <= 3 || (gMain.heldKeys & B_BUTTON))
+ {
+ unk_debug_bss_1_4 = 0;
+ }
+ else
+ {
+ sub_8103D50(0);
+ sub_8103D50(1);
+ sub_8103D50(2);
+ eSlotMachine->coins -= 3;
+ eSlotMachine->bet = 3;
+ eSlotMachine->state = 9;
+ return 0;
+ }
+ }
+ if (unk_debug_bss_1_1 != 0 && (gMain.newKeys & 8))
+ {
+ debug_sub_811B620();
+ eSlotMachine->state = 29;
+ return 0;
+ }
+#endif
+
if (gMain.newKeys & SELECT_BUTTON)
{
sub_8104AB8(0);
@@ -548,9 +703,7 @@ static bool8 sub_8101E3C(struct Task *task)
if (eSlotMachine->coins - (3 - eSlotMachine->bet) >= 0)
{
for (i = eSlotMachine->bet; i < 3; i++)
- {
sub_8103D50(i);
- }
eSlotMachine->coins -= (3 - eSlotMachine->bet);
eSlotMachine->bet = 3;
eSlotMachine->state = 9;
@@ -571,13 +724,9 @@ static bool8 sub_8101E3C(struct Task *task)
eSlotMachine->bet++;
}
if (eSlotMachine->bet >= 3 || (eSlotMachine->bet != 0 && gMain.newKeys & A_BUTTON))
- {
eSlotMachine->state = 9;
- }
if (gMain.newKeys & B_BUTTON)
- {
eSlotMachine->state = 21;
- }
}
return FALSE;
}
@@ -608,9 +757,7 @@ static bool8 sub_8101F60(struct Task *task)
static bool8 sub_8101F88(struct Task *task)
{
if (sub_8104AEC())
- {
eSlotMachine->state = 5;
- }
return FALSE;
}
@@ -634,9 +781,11 @@ static bool8 sub_8101FA4(struct Task *task)
}
eSlotMachine->unk1A = 8;
if (eSlotMachine->unk0A)
- {
eSlotMachine->unk1A = dp15_jump_random_unknown();
- }
+#if DEBUG
+ if (unk_debug_bss_1_1 != 0)
+ debug_sub_811B5B4(&eSlotMachine->unk68, 1);
+#endif
return FALSE;
}
@@ -655,6 +804,10 @@ static bool8 sub_8102034(struct Task *task)
{
if (++task->data[0] >= 30)
{
+#if DEBUG
+ if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_4 != 0)
+ unk_debug_bss_1_8 = (Random() & 0x1F) + 1;
+#endif
sub_81024F0();
eSlotMachine->state = 12;
}
@@ -663,6 +816,22 @@ static bool8 sub_8102034(struct Task *task)
static bool8 sub_8102058(struct Task *task)
{
+#if DEBUG
+ if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_4 != 0)
+ {
+ unk_debug_bss_1_8--;
+ if (unk_debug_bss_1_8 == 0)
+ {
+ PlaySE(0x18);
+ sub_8102E1C(eSlotMachine->unk18);
+ sub_8103C14(eSlotMachine->unk18);
+ unk_debug_bss_1_8 = (Random() & 0x1F) + 1;
+ eSlotMachine->state = 13;
+ }
+ return FALSE;
+ }
+#endif
+
if (gMain.newKeys & A_BUTTON)
{
PlaySE(SE_JYUNI);
@@ -682,13 +851,53 @@ static bool8 sub_8102090(struct Task *task)
if (eSlotMachine->unk18 > 2)
{
eSlotMachine->state = 14;
+#if DEBUG
+ switch (unk_debug_bss_1_0)
+ {
+ case 2:
+ eSlotMachine->reelPositions[0] = 20;
+ eSlotMachine->reelPositions[1] = 20;
+ eSlotMachine->reelPositions[2] = 18;
+ break;
+ case 1:
+ eSlotMachine->reelPositions[0] = 20;
+ eSlotMachine->reelPositions[1] = 20;
+ eSlotMachine->reelPositions[2] = 18;
+ break;
+ case 4:
+ eSlotMachine->reelPositions[0] = 3;
+ eSlotMachine->reelPositions[1] = 1;
+ eSlotMachine->reelPositions[2] = 2;
+ break;
+ case 8:
+ eSlotMachine->reelPositions[0] = 0;
+ eSlotMachine->reelPositions[1] = 2;
+ eSlotMachine->reelPositions[2] = 3;
+ break;
+ case 0x10:
+ eSlotMachine->reelPositions[0] = 2;
+ eSlotMachine->reelPositions[1] = 5;
+ eSlotMachine->reelPositions[2] = 20;
+ break;
+ case 0x40:
+ eSlotMachine->reelPositions[0] = 19;
+ eSlotMachine->reelPositions[1] = 19;
+ eSlotMachine->reelPositions[2] = 0;
+ break;
+ case 0x80:
+ eSlotMachine->reelPositions[0] = 19;
+ eSlotMachine->reelPositions[1] = 19;
+ eSlotMachine->reelPositions[2] = 19;
+ break;
+ }
+#endif
}
return TRUE;
}
return FALSE;
}
-static bool8 sub_81020C8(struct Task *task)
+bool8 sub_81020C8(struct Task *task)
{
eSlotMachine->unk04 &= 0xc0;
CheckMatch();
@@ -697,8 +906,18 @@ static bool8 sub_81020C8(struct Task *task)
eSlotMachine->unk0A--;
eSlotMachine->unk0B++;
}
+#if DEBUG
+ else
+ {
+ debug_sub_811B894();
+ }
+#endif
+
if (eSlotMachine->matchedSymbols)
{
+#if DEBUG
+ debug_sub_811B5B4(&eSlotMachine->unk6C, eSlotMachine->payout);
+#endif
eSlotMachine->state = 15;
sub_8102A24();
sub_8103F70();
@@ -730,9 +949,7 @@ static bool8 sub_81020C8(struct Task *task)
eSlotMachine->unk0B = 0;
eSlotMachine->unk03 = 0;
if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_777_BLUE))
- {
eSlotMachine->unk03 = 1;
- }
}
}
if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER) && eSlotMachine->pikaPower < 16)
@@ -746,9 +963,7 @@ static bool8 sub_81020C8(struct Task *task)
sub_8104CAC(3);
eSlotMachine->state = 20;
if ((eSlotMachine->unk10 += eSlotMachine->bet) > 9999)
- {
eSlotMachine->unk10 = 9999;
- }
}
return FALSE;
}
@@ -756,9 +971,7 @@ static bool8 sub_81020C8(struct Task *task)
static bool8 sub_81021E0(struct Task *task)
{
if (sub_8102A44())
- {
eSlotMachine->state = 16;
- }
return FALSE;
}
@@ -768,18 +981,14 @@ static bool8 sub_81021FC(struct Task *task)
{
eSlotMachine->state = 19;
if (eSlotMachine->matchedSymbols & ((1 << SLOT_MACHINE_MATCHED_777_RED) | (1 << SLOT_MACHINE_MATCHED_777_BLUE)))
- {
IncrementGameStat(GAME_STAT_SLOT_JACKPOTS);
- }
if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
eSlotMachine->unk18 = 0;
eSlotMachine->state = 9;
}
if (eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_POWER))
- {
eSlotMachine->state = 17;
- }
if (eSlotMachine->unk0A && eSlotMachine->matchedSymbols & (1 << SLOT_MACHINE_MATCHED_REPLAY))
{
sub_8104CAC(4);
@@ -904,7 +1113,12 @@ static bool8 sub_81023FC(struct Task *task)
static bool8 sub_8102424(struct Task *task)
{
+#if DEBUG
+ if (unk_debug_bss_1_1 == 0)
+ gSaveBlock1.coins = eSlotMachine->coins;
+#else
gSaveBlock1.coins = eSlotMachine->coins;
+#endif
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
eSlotMachine->state++;
return FALSE;
@@ -919,6 +1133,92 @@ static bool8 sub_8102460(struct Task *task)
return FALSE;
}
+#if DEBUG
+
+static bool8 debug_sub_8116E74(struct Task *task)
+{
+ if (debug_sub_811B634() != 0)
+ eSlotMachine->state = 5;
+ return FALSE;
+}
+
+#endif
+
+static void sub_8102484(void)
+{
+ u8 r3;
+
+ if (eSlotMachine->unk0A == 0)
+ {
+#if DEBUG
+ if (unk_debug_bss_1_1 != 0 && unk_debug_bss_1_2 != 0)
+ {
+ eSlotMachine->unk04 = unk_debug_bss_1_3;
+ unk_debug_bss_1_2 = 0;
+ unk_debug_bss_1_3 = 0;
+ if (eSlotMachine->unk04 & 0x80)
+ debug_sub_811B5B4(&eSlotMachine->unk88, 1);
+ if (eSlotMachine->unk04 & 0x40)
+ debug_sub_811B5B4(&eSlotMachine->unk84, 1);
+ if (eSlotMachine->unk04 & 0x20)
+ debug_sub_811B5B4(&eSlotMachine->unk8C, 1);
+ if (eSlotMachine->unk04 & 0x10)
+ debug_sub_811B5B4(&eSlotMachine->unk80, 1);
+ if (eSlotMachine->unk04 & 8)
+ debug_sub_811B5B4(&eSlotMachine->unk7C, 1);
+ if (eSlotMachine->unk04 & 4)
+ debug_sub_811B5B4(&eSlotMachine->unk78, 1);
+ if (eSlotMachine->unk04 & 1)
+ debug_sub_811B5B4(&eSlotMachine->unk74, 1);
+ if (eSlotMachine->unk04 & 2)
+ debug_sub_811B5B4(&eSlotMachine->unk70, 1);
+ return;
+ }
+#endif
+ if (!(eSlotMachine->unk04 & 0xc0))
+ {
+ if (sub_8102540())
+ {
+ r3 = sub_8102578();
+ if (r3 != 3)
+ {
+ eSlotMachine->unk04 |= gUnknown_083ECE42[r3];
+#if DEBUG
+ if (eSlotMachine->unk04 & 0x80)
+ debug_sub_811B5B4(&eSlotMachine->unk88, 1);
+ if (eSlotMachine->unk04 & 0x40)
+ debug_sub_811B5B4(&eSlotMachine->unk84, 1);
+ if (eSlotMachine->unk04 & 0x20)
+ debug_sub_811B5B4(&eSlotMachine->unk8C, 1);
+#endif
+ if (r3 != 1)
+ {
+ return;
+ }
+ }
+ }
+ r3 = sub_81025BC();
+ if (r3 != 5)
+ {
+ eSlotMachine->unk04 |= gUnknown_083ECE48[r3];
+#if DEBUG
+ if (eSlotMachine->unk04 & 0x10)
+ debug_sub_811B5B4(&eSlotMachine->unk80, 1);
+ if (eSlotMachine->unk04 & 8)
+ debug_sub_811B5B4(&eSlotMachine->unk7C, 1);
+ if (eSlotMachine->unk04 & 4)
+ debug_sub_811B5B4(&eSlotMachine->unk78, 1);
+ if (eSlotMachine->unk04 & 1)
+ debug_sub_811B5B4(&eSlotMachine->unk74, 1);
+ if (eSlotMachine->unk04 & 2)
+ debug_sub_811B5B4(&eSlotMachine->unk70, 1);
+#endif
+ }
+ }
+ }
+}
+
+/*
static void sub_8102484(void)
{
u8 r3;
@@ -944,14 +1244,13 @@ static void sub_8102484(void)
}
}
}
+*/
static void sub_81024F0(void)
{
eSlotMachine->unk06 = 0;
if (eSlotMachine->unk04)
- {
eSlotMachine->unk06 = 1;
- }
}
static u8 sub_810250C(u8 a0)
@@ -961,9 +1260,7 @@ static u8 sub_810250C(u8 a0)
for (i = 0; i < 8; i++)
{
if (a0 & 1)
- {
return gUnknown_083ECE3A[i];
- }
a0 >>= 1;
}
return 0;
@@ -973,9 +1270,7 @@ static bool8 sub_8102540(void)
{
u8 rval = Random();
if (gUnknown_083ECD04[eSlotMachine->unk01][eSlotMachine->bet - 1] > rval)
- {
return TRUE;
- }
return FALSE;
}
@@ -990,9 +1285,7 @@ static u8 sub_8102578(void)
s16 rval = Random() & 0xff;
s16 value = gUnknown_083ECD16[i][eSlotMachine->unk01];
if (value > rval)
- {
break;
- }
}
return i;
}
@@ -1011,22 +1304,16 @@ static u8 sub_81025BC(void)
{
r3 += 10;
if (r3 > 0x100)
- {
r3 = 0x100;
- }
}
else if (i == 4 && eSlotMachine->unk03 == 1)
{
r3 -= 10;
if (r3 < 0)
- {
r3 = 0;
- }
}
if (r3 > rval)
- {
break;
- }
}
return i;
}
@@ -1037,10 +1324,9 @@ static const u8 gUnknown_083ECDAC[][17];
static u8 sub_810264C(u8 a0)
{
if (eSlotMachine->unk03 == 0)
- {
return gUnknown_083ECD46[a0][eSlotMachine->pikaPower];
- }
- return gUnknown_083ECDAC[a0][eSlotMachine->pikaPower];
+ else
+ return gUnknown_083ECDAC[a0][eSlotMachine->pikaPower];
}
static void sub_8102680(void)
@@ -1051,16 +1337,12 @@ static void sub_8102680(void)
eSlotMachine->unk05 = 0;
rval = Random();
if (rval < sub_810264C(0))
- {
return;
- }
for (i = 5; i > 0; i--)
{
rval = Random();
if (rval < sub_810264C(i))
- {
break;
- }
}
eSlotMachine->unk05 = i;
}
@@ -1071,10 +1353,9 @@ static bool8 sub_81026DC(u16 a0)
{
u16 rval = Random() & 0xff;
if (rval < gUnknown_083ECE12[a0])
- {
return TRUE;
- }
- return FALSE;
+ else
+ return FALSE;
}
static const u16 gUnknown_083ECE1C[][2];
@@ -1086,33 +1367,21 @@ static u16 dp15_jump_random_unknown(void)
u8 rval;
u8 value;
if (eSlotMachine->unk10 >= 300)
- {
r4 = 4;
- }
else if (eSlotMachine->unk10 >= 250)
- {
r4 = 3;
- }
else if (eSlotMachine->unk10 >= 200)
- {
r4 = 2;
- }
else if (eSlotMachine->unk10 >= 150)
- {
r4 = 1;
- }
rval = Random() % 100;
value = gUnknown_083ECE1C[r4][0];
if (rval < value)
- {
return 4;
- }
rval = Random() % 100;
value = gUnknown_083ECE1C[r4][1] + gUnknown_083ECE30[eSlotMachine->unk0B];
if (rval < value)
- {
return 2;
- }
return 8;
}
@@ -1121,13 +1390,9 @@ static void CheckMatch(void)
eSlotMachine->matchedSymbols = 0;
CheckMatch_CenterRow();
if (eSlotMachine->bet > 1)
- {
CheckMatch_TopAndBottom();
- }
if (eSlotMachine->bet > 2)
- {
CheckMatch_Diagonals();
- }
}
static const u16 sSlotMatchFlags[];
@@ -1160,9 +1425,7 @@ static void CheckMatch_TopAndBottom(void)
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match == SLOT_MACHINE_MATCHED_1CHERRY)
- {
match = SLOT_MACHINE_MATCHED_2CHERRY;
- }
eSlotMachine->payout += sSlotPayouts[match];
eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
sub_8103E04(1);
@@ -1174,9 +1437,7 @@ static void CheckMatch_TopAndBottom(void)
if (match != SLOT_MACHINE_MATCHED_NONE)
{
if (match == SLOT_MACHINE_MATCHED_1CHERRY)
- {
match = SLOT_MACHINE_MATCHED_2CHERRY;
- }
eSlotMachine->payout += sSlotPayouts[match];
eSlotMachine->matchedSymbols |= sSlotMatchFlags[match];
sub_8103E04(2);
@@ -1220,21 +1481,13 @@ static const u8 sSym2Match[];
static u8 GetMatchFromSymbolsInRow(u8 c1, u8 c2, u8 c3)
{
if (c1 == c2 && c1 == c3)
- {
return sSym2Match[c1];
- }
if (c1 == SLOT_MACHINE_TAG_7_RED && c2 == SLOT_MACHINE_TAG_7_RED && c3 == SLOT_MACHINE_TAG_7_BLUE)
- {
return SLOT_MACHINE_MATCHED_777_MIXED;
- }
if (c1 == SLOT_MACHINE_TAG_7_BLUE && c2 == SLOT_MACHINE_TAG_7_BLUE && c3 == SLOT_MACHINE_TAG_7_RED)
- {
return SLOT_MACHINE_MATCHED_777_MIXED;
- }
if (c1 == SLOT_MACHINE_TAG_CHERRY)
- {
return SLOT_MACHINE_MATCHED_1CHERRY;
- }
return SLOT_MACHINE_MATCHED_NONE;
}
@@ -1246,13 +1499,13 @@ static void sub_8102A24(void)
static bool8 sub_8102A44(void)
{
if (FindTaskIdByFunc(sub_8102A64) == 0xff)
- {
return TRUE;
- }
- return FALSE;
+ else
+ return FALSE;
}
-static bool8 (*const gUnknown_083ECB20[])(struct Task *task) = {
+static bool8 (*const gUnknown_083ECB20[])(struct Task *task) =
+{
sub_8102A9C,
sub_8102AD0,
sub_8102B80
@@ -1260,7 +1513,8 @@ static bool8 (*const gUnknown_083ECB20[])(struct Task *task) = {
static void sub_8102A64(u8 taskId)
{
- while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId));
+ while (gUnknown_083ECB20[gTasks[taskId].data[0]](gTasks + taskId))
+ ;
}
static bool8 sub_8102A9C(struct Task *task)
@@ -1282,43 +1536,31 @@ static bool8 sub_8102AD0(struct Task *task)
if (!task->data[1]--)
{
if (IsFanfareTaskInactive())
- {
PlaySE(SE_PIN);
- }
eSlotMachine->payout--;
if (eSlotMachine->coins < 9999)
- {
eSlotMachine->coins++;
- }
task->data[1] = 8;
if (gMain.heldKeys & A_BUTTON)
- {
task->data[1] = 4;
- }
}
if (IsFanfareTaskInactive() && gMain.newKeys & START_BUTTON)
{
PlaySE(SE_PIN);
eSlotMachine->coins += eSlotMachine->payout;
if (eSlotMachine->coins > 9999)
- {
eSlotMachine->coins = 9999;
- }
eSlotMachine->payout = 0;
}
if (eSlotMachine->payout == 0)
- {
task->data[0]++;
- }
return FALSE;
}
static bool8 sub_8102B80(struct Task *task)
{
if (sub_8103E7C())
- {
DestroyTask(FindTaskIdByFunc(sub_8102A64));
- }
return FALSE;
}
@@ -1328,9 +1570,7 @@ static u8 GetTagOfReelSymbolOnScreenAtPos(u8 x, s16 y)
{
s16 offset = (eSlotMachine->reelPositions[x] + y) % 21;
if (offset < 0)
- {
offset += 21;
- }
return sReelSymbols[x][offset];
}
@@ -1420,7 +1660,8 @@ static bool8 sub_8102E40(u8 a0)
return gTasks[eSlotMachine->reelTasks[a0]].data[14];
}
-static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = {
+static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) =
+{
sub_8102EA0,
sub_8102EA4,
sub_8102EC0,
@@ -1430,7 +1671,8 @@ static bool8 (*const gUnknown_083ECB2C[])(struct Task *task) = {
static void sub_8102E68(u8 taskId)
{
- while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId));
+ while (gUnknown_083ECB2C[gTasks[taskId].data[0]](gTasks + taskId))
+ ;
}
static bool8 sub_8102EA0(struct Task *task)
@@ -1444,12 +1686,15 @@ static bool8 sub_8102EA4(struct Task *task)
return FALSE;
}
-static bool8 (*const gUnknown_083ECB40[])(void) = {
+static bool8 (*const gUnknown_083ECB40[])(void) =
+{
sub_810305C,
sub_81032C0,
sub_81033DC
};
-static void (*const gUnknown_083ECB4C[])(void) = {
+
+static void (*const gUnknown_083ECB4C[])(void) =
+{
sub_81034F4,
sub_8103540,
sub_810380C
@@ -1474,9 +1719,7 @@ static bool8 sub_8102F4C(struct Task *task)
u16 sp[] = {2, 4, 4, 4, 8};
s16 r2 = eSlotMachine->unk1C[task->data[15]] % 24;
if (r2 != 0)
- {
r2 = sub_8102CCC(task->data[15], eSlotMachine->unk1A);
- }
else if (eSlotMachine->unk2E[task->data[15]])
{
eSlotMachine->unk2E[task->data[15]]--;
@@ -1498,9 +1741,7 @@ static bool8 sub_8103008(struct Task *task)
task->data[1] = -task->data[1];
task->data[2]++;
if ((task->data[2] & 0x3) == 0)
- {
task->data[1] >>= 1;
- }
if (task->data[1] == 0)
{
task->data[0] = 0;
@@ -1510,7 +1751,8 @@ static bool8 sub_8103008(struct Task *task)
return FALSE;
}
-static bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) = {
+static bool8 (*const gUnknown_083ECB64[])(u8 a0, u8 a1) =
+{
sub_8103154,
sub_81031B4,
sub_81031B4
@@ -1542,19 +1784,17 @@ static bool8 sub_81030A4(s16 y, u8 tag1, u8 tag2)
static bool8 sub_81030E0(s16 y)
{
if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 1 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 2 - y) == 4 || GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(0, 3 - y) == 4)
- {
return TRUE;
- }
- return FALSE;
+ else
+ return FALSE;
}
static bool8 sub_8103134(void)
{
if (eSlotMachine->unk04 & 0xc2)
- {
return TRUE;
- }
- return FALSE;
+ else
+ return FALSE;
}
static bool8 sub_8103154(u8 a0, u8 a1)
@@ -1617,7 +1857,8 @@ static bool8 sub_81031B4(u8 tag1, u8 tag2)
return FALSE;
}
-static bool8 (*const gUnknown_083ECB70[])(void) = {
+static bool8 (*const gUnknown_083ECB70[])(void) =
+{
sub_81032E8,
sub_81032E8,
sub_810333C
@@ -1679,7 +1920,8 @@ static bool8 sub_810333C(void)
return FALSE;
}
-static bool8 (*const gUnknown_083ECB7C[])(u8 a0) = {
+static bool8 (*const gUnknown_083ECB7C[])(u8 a0) =
+{
sub_810341C,
sub_810341C,
sub_810347C
@@ -1721,14 +1963,11 @@ static bool8 sub_810347C(u8 a0)
s16 i;
s16 r8;
if (eSlotMachine->unk34[0] == eSlotMachine->unk34[1])
- {
return sub_810341C(a0);
- }
- r8 = 1;
if (eSlotMachine->unk34[0] == 1)
- {
r8 = 3;
- }
+ else
+ r8 = 1;
for (i = 0; i < 5; i++)
{
if (GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, r8 - i) == a0)
@@ -1743,8 +1982,10 @@ static bool8 sub_810347C(u8 a0)
static void sub_81034F4(void)
{
- s16 i;
- for (i = 0; sub_81030E0(i); i++);
+ s16 i = 0;
+
+ while (sub_81030E0(i) != 0)
+ i++;
eSlotMachine->unk2E[0] = i;
}
@@ -1763,7 +2004,8 @@ static bool8 sub_8103520(u8 *a0)
return FALSE;
}
-static void (*const gUnknown_083ECB88[])(void) = {
+static void (*const gUnknown_083ECB88[])(void) =
+{
sub_8103564,
j5_08111E84,
sub_8103668
@@ -1884,19 +2126,17 @@ static void sub_8103668(void)
static bool8 sub_8103764(u8 a0, u8 a1)
{
if ((a0 == 0 && a1 == 1) || (a0 == 1 && a1 == 0))
- {
return TRUE;
- }
- return FALSE;
+ else
+ return FALSE;
}
static bool8 sub_810378C(u8 a0, u8 a1, u8 a2)
{
if ((a0 == 0 && a1 == 1 && a2 == 0) || (a0 == 1 && a1 == 0 && a2 == 1))
- {
return TRUE;
- }
- return FALSE;
+ else
+ return FALSE;
}
static bool8 sub_81037BC(u8 a0, u8 a1, u8 a2)
@@ -1912,7 +2152,8 @@ static bool8 sub_81037BC(u8 a0, u8 a1, u8 a2)
return TRUE;
}
-static void (*const gUnknown_083ECB94[])(void) = {
+static void (*const gUnknown_083ECB94[])(void) =
+{
sub_8103830,
sub_8103910,
sub_8103A78
@@ -1934,9 +2175,7 @@ static void sub_8103830(void)
{
u8 r0;
if (!(r5 == (r0 = GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i)) || (r5 == 0 && r0 == 1) || (r5 == 1 && r0 == 0)))
- {
break;
- }
i++;
}
}
@@ -1957,9 +2196,7 @@ static void sub_8103830(void)
while (1)
{
if (r5 != GetTagOfReelSymbolOnScreenAtPos_AdjustForPixelOffset(2, 2 - i))
- {
break;
- }
i++;
}
}
@@ -2006,9 +2243,7 @@ static void sub_8103910(void)
}
}
if (r8 == 0)
- {
break;
- }
sp0++;
}
eSlotMachine->unk2E[2] = sp0;
@@ -2070,7 +2305,8 @@ static void sub_8103C14(u8 a0)
sub_8103C48(taskId);
}
-static void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) = {
+static void (*const gUnknown_083ECBA0[])(struct Task *task, u8 taskId) =
+{
sub_8103C78,
sub_8103CAC,
sub_8103CC8
@@ -2122,18 +2358,14 @@ static void sub_8103D50(u8 a0)
{
u8 i;
for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
- {
sub_8103D00(gUnknown_083EDD35[a0][i]);
- }
}
static void sub_8103D8C(u8 a0)
{
u8 i;
for (i = 0; i < gUnknown_083EDD3B[a0]; i++)
- {
sub_8103D28(gUnknown_083EDD35[a0][i]);
- }
}
static void sub_8103DC8(void)
@@ -2163,7 +2395,7 @@ static bool8 sub_8103E38(void)
u8 i;
for (i = 0; i < 5; i++)
{
- struct Sprite *sprite = gSprites + eSlotMachine->unk44[i];
+ struct Sprite *sprite = &gSprites[eSlotMachine->unk44[i]];
if (sprite->data[1] && sprite->data[2])
return FALSE;
}
@@ -2250,9 +2482,7 @@ static void sub_8103FE8(u8 taskId)
task->data[1] = 4;
task->data[2] += task->data[3];
if (task->data[2] == 0 || task->data[2] == 2)
- {
task->data[3] = -task->data[3];
- }
}
LoadPalette(gUnknown_083EDDA0[task->data[2]], 0x10, 0x20);
}
@@ -2284,7 +2514,8 @@ static bool8 sub_81040C8(void)
return gTasks[eSlotMachine->unk3E].data[15];
}
-static void (*const gUnknown_083ECBB4[])(struct Task *task) = {
+static void (*const gUnknown_083ECBB4[])(struct Task *task) =
+{
nullsub_68,
sub_810411C,
sub_8104144,
@@ -2298,7 +2529,6 @@ static void sub_81040E8(u8 taskId)
static void nullsub_68(struct Task *task)
{
-
}
static void sub_810411C(struct Task *task)
@@ -2307,10 +2537,11 @@ static void sub_810411C(struct Task *task)
task->data[0]++;
}
-static const u16 gUnknown_083ECBC4[][2] = {
+static const u16 gUnknown_083ECBC4[][2] =
+{
{0x9e, 0x6e},
{0x9f, 0x6f},
- {0xaf, 0x7f}
+ {0xaf, 0x7f},
};
static void sub_8104144(struct Task *task)
@@ -2402,7 +2633,8 @@ static bool8 sub_810432C(void)
return FALSE;
}
-static void (*const gUnknown_083ECBD0[])(struct Task *task) = {
+static void (*const gUnknown_083ECBD0[])(struct Task *task) =
+{
sub_810437C,
sub_81043EC,
sub_8104468,
@@ -2539,9 +2771,7 @@ static void sub_81045CC(struct Task *task)
if (eSlotMachine->unk05)
{
if (eSlotMachine->unk0A <= task->data[6])
- {
task->data[0]++;
- }
}
else if (task->data[6] > 3)
{
@@ -2608,9 +2838,7 @@ static void sub_81046C0(struct Task *task)
static void sub_8104764(struct Task *task)
{
if ((task->data[4] == 0 || --task->data[4] == 0) && !sub_81040C8())
- {
task->data[0]++;
- }
}
static void sub_8104794(struct Task *task)
@@ -2622,13 +2850,9 @@ static void sub_8104794(struct Task *task)
r4 = ((task->data[1] - 8) & 0xff) >> 3;
REG_BG1HOFS = task->data[1] & 0x1ff;
if (task->data[3] >> 3 <= 25)
- {
sub_8104A88(r4);
- }
else
- {
task->data[0]++;
- }
}
static void sub_81047EC(struct Task *task)
@@ -2659,21 +2883,15 @@ static void sub_81047EC(struct Task *task)
static void sub_8104860(struct Task *task)
{
if (eSlotMachine->unk1A == task->data[1])
- {
task->data[0]++;
- }
else if (eSlotMachine->unk1C[0] % 24 == 0 && (++task->data[2]& 0x07) == 0)
- {
eSlotMachine->unk1A >>= 1;
- }
}
static void sub_81048A8(struct Task *task)
{
if (sub_8104E18())
- {
DestroyTask(FindTaskIdByFunc(sub_810434C));
- }
}
static void sub_81048CC(struct Task *task)
@@ -2769,10 +2987,12 @@ static bool8 sub_8104AEC(void)
{
if (FindTaskIdByFunc(sub_8104B0C) == 0xFF)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
-static void (*const gUnknown_083ECC30[])(struct Task *task) = {
+static void (*const gUnknown_083ECC30[])(struct Task *task) =
+{
sub_8104B3C,
sub_8104B60,
sub_8104B80,
@@ -2798,9 +3018,7 @@ static void sub_8104B3C(struct Task *task)
static void sub_8104B60(struct Task *task)
{
if (!gPaletteFade.active)
- {
task->data[0]++;
- }
}
static void sub_8104B80(struct Task *task)
@@ -2847,14 +3065,13 @@ static void sub_8104C5C(void)
task = gTasks + i;
task->data[1] = -1;
for (i = 4; i < 16; i++)
- {
task->data[i] = MAX_SPRITES;
- }
}
static void LoadSlotMachineWheelOverlay(void);
-static void sub_8104CAC(u8 arg0) {
+static void sub_8104CAC(u8 arg0)
+{
u8 i;
struct Task *task;
@@ -2875,9 +3092,7 @@ static void sub_8104CAC(u8 arg0) {
#ifdef GERMAN
if (arg0 == 5 && i <= 2)
- {
gSprites[spriteId].invisible = TRUE;
- }
#endif
}
}
@@ -2929,8 +3144,9 @@ static bool8 sub_8104E18(void)
return TRUE;
}
-static void (*const gUnknown_083ECC54[])(struct Task *task) = {
- nullsub_69
+static void (*const gUnknown_083ECC54[])(struct Task *task) =
+{
+ nullsub_69,
};
static void sub_8104E74(u8 taskId)
@@ -2940,7 +3156,6 @@ static void sub_8104E74(u8 taskId)
static void nullsub_69(struct Task *task)
{
-
}
static const struct SpriteTemplate gSpriteTemplate_83ED414;
@@ -2976,14 +3191,11 @@ static void sub_8104F8C(void)
{
s16 i;
s16 x;
+
for (x = 203, i = 1; i < 10000; i *= 10, x -= 7)
- {
sub_8104FF4(x, 23, 0, i);
- }
for (x = 235, i = 1; i < 10000; i *= 10, x -= 7)
- {
sub_8104FF4(x, 23, 1, i);
- }
}
static const struct SpriteTemplate gSpriteTemplate_83ED42C;
@@ -3046,9 +3258,7 @@ static void sub_8105170(struct Sprite *sprite)
{
sprite->pos2.y = sprite->pos2.x = 8;
if ((sprite->animCmdIndex != 0 && sprite->animDelayCounter != 0) || (sprite->animCmdIndex == 0 && sprite->animDelayCounter == 0))
- {
sprite->pos2.y = -8;
- }
}
}
@@ -3060,14 +3270,14 @@ static const struct SubspriteTable gSubspriteTables_83ED75C[];
static void sub_81051C0(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED474, 0x170, 0x34, 7);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
SetSubspriteTables(sprite, gSubspriteTables_83ED73C);
eSlotMachine->unk49[0] = spriteId;
spriteId = CreateSprite(&gSpriteTemplate_83ED48C, 0x170, 0x54, 7);
- sprite = gSprites + spriteId;
+ sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
SetSubspriteTables(sprite, gSubspriteTables_83ED75C);
@@ -3080,7 +3290,7 @@ static const struct SubspriteTable gSubspriteTables_83ED78C[];
static void sub_8105284(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4A4, 0xa8 - gSpriteCoordOffsetX, 0x50, 7);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
SetSubspriteTables(sprite, gSubspriteTables_83ED78C);
@@ -3096,7 +3306,7 @@ static void sub_81052EC(void)
for (i = 0, r5 = 0; i < 3; i++, r5 += 20)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4BC, 0x170, 0x00, 10);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
sprite->data[7] = r5;
@@ -3118,14 +3328,14 @@ static const struct SubspriteTable gSubspriteTables_83ED7B4[];
static void sub_81053A0(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x170, 0x64, 9);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
eSlotMachine->unk4E[0] = spriteId;
spriteId = CreateSprite(&gSpriteTemplate_83ED4D4, 0x120, 0x68, 4);
- sprite = gSprites + spriteId;
+ sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
SetSubspriteTables(sprite, gSubspriteTables_83ED7B4);
@@ -3138,7 +3348,7 @@ static const struct SubspriteTable gSubspriteTables_83ED7D4[];
static void sub_810545C(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED4EC, 0x170, 0x4c, 11);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->coordOffsetEnabled = TRUE;
sprite->oam.priority = 1;
SetSubspriteTables(sprite, gSubspriteTables_83ED7D4);
@@ -3149,29 +3359,24 @@ static void sub_81054B8(void)
{
u8 i;
- DestroySprite(gSprites + eSlotMachine->unk40);
+ DestroySprite(&gSprites[eSlotMachine->unk40]);
for (i = 0; i < 2; i++)
- {
- DestroySprite(gSprites + eSlotMachine->unk49[i]);
- }
+ DestroySprite(&gSprites[eSlotMachine->unk49[i]]);
for (i = 0; i < 3; i++)
- {
- DestroySprite(gSprites + eSlotMachine->unk4B[i]);
- }
+ DestroySprite(&gSprites[eSlotMachine->unk4B[i]]);
}
static void sub_8105524(void)
{
u8 i;
+
for (i = 0; i < 2; i++)
- {
- DestroySprite(gSprites + eSlotMachine->unk4E[i]);
- }
+ DestroySprite(&gSprites[eSlotMachine->unk4E[i]]);
}
static void sub_8105554(void)
{
- DestroySprite(gSprites + eSlotMachine->unk42);
+ DestroySprite(&gSprites[eSlotMachine->unk42]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED504;
@@ -3179,7 +3384,7 @@ static const struct SpriteTemplate gSpriteTemplate_83ED504;
static void sub_8105578(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0x98, 0x20, 5);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->hFlip = TRUE;
eSlotMachine->unk50[0] = spriteId;
@@ -3189,7 +3394,7 @@ static void sub_8105578(void)
sprite->data[7] = 0x20;
spriteId = CreateSprite(&gSpriteTemplate_83ED504, 0xb8, 0x20, 5);
- sprite = gSprites + spriteId;
+ sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
eSlotMachine->unk50[1] = spriteId;
sprite->data[1] = 1;
@@ -3230,9 +3435,7 @@ static void sub_81056C0(void)
u8 i;
for (i = 0; i < 2; i++)
- {
- DestroySprite(gSprites + eSlotMachine->unk50[i]);
- }
+ DestroySprite(&gSprites[eSlotMachine->unk50[i]]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED51C;
@@ -3277,9 +3480,7 @@ static void sub_8105804(void)
u8 i;
MultiplyInvertedPaletteRGBComponents((IndexOfSpritePaletteTag(7) << 4) + 0x103, 0, 0, 0);
for (i = 0; i < 2; i++)
- {
- DestroySprite(gSprites + eSlotMachine->unk52[i]);
- }
+ DestroySprite(&gSprites[eSlotMachine->unk52[i]]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED534;
@@ -3298,7 +3499,7 @@ static void sub_8105894(struct Sprite *sprite)
static void sub_81058A0(void)
{
- DestroySprite(gSprites + eSlotMachine->unk41);
+ DestroySprite(&gSprites[eSlotMachine->unk41]);
}
static const struct SpriteTemplate gSpriteTemplate_83ED54C;
@@ -3310,7 +3511,7 @@ static void sub_81058C4(void)
for (i = 0; i < 4; i++)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED54C, 0x50 - gSpriteCoordOffsetX, 0x44, 0);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->coordOffsetEnabled = TRUE;
sprite->data[0] = sp[i];
@@ -3341,7 +3542,7 @@ static void sub_81059B8(void)
u8 i;
for (i = 0; i < 4; i++)
{
- DestroySprite(gSprites + eSlotMachine->unk54[i]);
+ DestroySprite(&gSprites[eSlotMachine->unk54[i]]);
}
}
@@ -3350,7 +3551,7 @@ static const struct SpriteTemplate gSpriteTemplate_83ED564;
static void sub_81059E8(void)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED564, 0xa8, 0x3c, 8);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 1;
sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
InitSpriteAffineAnim(sprite);
@@ -3391,7 +3592,7 @@ u8 sub_8105ACC(void)
static void sub_8105AEC(void)
{
- struct Sprite *sprite = gSprites + eSlotMachine->unk43;
+ struct Sprite *sprite = &gSprites[eSlotMachine->unk43];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
@@ -3401,7 +3602,7 @@ static const struct SpriteTemplate gSpriteTemplate_83ED6CC;
static u8 sub_8105B1C(s16 x, s16 y)
{
u8 spriteId = CreateSprite(&gSpriteTemplate_83ED6CC, x, y, 12);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 2;
sprite->oam.affineMode = ST_OAM_AFFINE_DOUBLE;
InitSpriteAffineAnim(sprite);
@@ -3416,7 +3617,7 @@ static void sub_8105B70(struct Sprite *sprite)
static void sub_8105B88(u8 spriteId)
{
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
FreeOamMatrix(sprite->oam.matrixNum);
DestroySprite(sprite);
}
@@ -3435,7 +3636,7 @@ static const struct SubspriteTable *const gUnknown_083EDBC4[];
static u8 sub_8105BF8(u8 templateIdx, SpriteCallback callback, s16 x, s16 y, s16 a4)
{
u8 spriteId = CreateSprite(gUnknown_083EDB5C[templateIdx], x, y, 16);
- struct Sprite *sprite = gSprites + spriteId;
+ struct Sprite *sprite = &gSprites[spriteId];
sprite->oam.priority = 3;
sprite->callback = callback;
sprite->data[6] = a4;
@@ -3492,30 +3693,26 @@ static void sub_8105D3C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
- case 0:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0xd0)
- {
- sprite->pos1.x = 0xd0;
- sprite->data[0]++;
- }
- break;
- case 1:
- if (++sprite->data[1] > 90)
- {
- sprite->data[0]++;
- }
- break;
- case 2:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0x110)
- {
- sprite->data[0]++;
- }
- break;
- case 3:
- sprite->data[7] = 0;
- break;
+ case 0:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 90)
+ sprite->data[0]++;
+ break;
+ case 2:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0x110)
+ sprite->data[0]++;
+ break;
+ case 3:
+ sprite->data[7] = 0;
+ break;
}
}
@@ -3523,30 +3720,26 @@ static void sub_8105DA4(struct Sprite *sprite)
{
switch (sprite->data[0])
{
- case 0:
- sprite->pos1.x -= 4;
- if (sprite->pos1.x <= 0xd0)
- {
- sprite->pos1.x = 0xd0;
- sprite->data[0]++;
- }
- break;
- case 1:
- if (++sprite->data[1] > 90)
- {
- sprite->data[0]++;
- }
- break;
- case 2:
- sprite->pos1.x -= 4;
- if (sprite->pos1.x <= 0x90)
- {
- sprite->data[0]++;
- }
- break;
- case 3:
- sprite->data[7] = 0;
- break;
+ case 0:
+ sprite->pos1.x -= 4;
+ if (sprite->pos1.x <= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 1:
+ if (++sprite->data[1] > 90)
+ sprite->data[0]++;
+ break;
+ case 2:
+ sprite->pos1.x -= 4;
+ if (sprite->pos1.x <= 0x90)
+ sprite->data[0]++;
+ break;
+ case 3:
+ sprite->data[7] = 0;
+ break;
}
}
@@ -3554,41 +3747,37 @@ static void sub_8105E08(struct Sprite *sprite)
{
switch (sprite->data[0])
{
- case 0:
- StartSpriteAnim(sprite, eSlotMachine->unk0A - 1);
+ case 0:
+ StartSpriteAnim(sprite, eSlotMachine->unk0A - 1);
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ if (++sprite->data[1] >= 4)
+ {
sprite->data[0]++;
- // fallthrough
- case 1:
- if (++sprite->data[1] >= 4)
- {
- sprite->data[0]++;
- sprite->data[1] = 0;
- }
- break;
- case 2:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0xd0)
- {
- sprite->pos1.x = 0xd0;
- sprite->data[0]++;
- }
- break;
- case 3:
- if (++sprite->data[1] > 90)
- {
- sprite->data[0]++;
- }
- break;
- case 4:
- sprite->pos1.x += 4;
- if (sprite->pos1.x >= 0xf8)
- {
- sprite->data[0]++;
- }
- break;
- case 5:
- sprite->data[7] = 0;
- break;
+ sprite->data[1] = 0;
+ }
+ break;
+ case 2:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xd0)
+ {
+ sprite->pos1.x = 0xd0;
+ sprite->data[0]++;
+ }
+ break;
+ case 3:
+ if (++sprite->data[1] > 90)
+ sprite->data[0]++;
+ break;
+ case 4:
+ sprite->pos1.x += 4;
+ if (sprite->pos1.x >= 0xf8)
+ sprite->data[0]++;
+ break;
+ case 5:
+ sprite->data[7] = 0;
+ break;
}
}
@@ -3596,39 +3785,39 @@ static void sub_8105EB4(struct Sprite *sprite)
{
switch (sprite->data[0])
{
- case 0:
- sprite->animPaused = TRUE;
+ case 0:
+ sprite->animPaused = TRUE;
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ sprite->pos1.y += 8;
+ if (sprite->pos1.y >= 0x70)
+ {
+ sprite->pos1.y = 0x70;
+ sprite->data[1] = 16;
sprite->data[0]++;
- // fallthrough
- case 1:
- sprite->pos1.y += 8;
- if (sprite->pos1.y >= 0x70)
- {
- sprite->pos1.y = 0x70;
- sprite->data[1] = 16;
- sprite->data[0]++;
- }
- break;
- case 2:
- if (sprite->data[2] == 0)
+ }
+ break;
+ case 2:
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos1.y -= sprite->data[1];
+ sprite->data[1] = -sprite->data[1];
+ if (++sprite->data[3] >= 2)
{
- sprite->pos1.y -= sprite->data[1];
- sprite->data[1] = -sprite->data[1];
- if (++sprite->data[3] >= 2)
+ sprite->data[1] >>= 2;
+ sprite->data[3] = 0;
+ if (sprite->data[1] == 0)
{
- sprite->data[1] >>= 2;
- sprite->data[3] = 0;
- if (sprite->data[1] == 0)
- {
- sprite->data[0]++;
- sprite->data[7] = 0;
- sprite->animPaused = FALSE;
- }
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ sprite->animPaused = FALSE;
}
}
- sprite->data[2]++;
- sprite->data[2] &= 0x07;
- break;
+ }
+ sprite->data[2]++;
+ sprite->data[2] &= 0x07;
+ break;
}
}
@@ -3636,21 +3825,19 @@ static void sub_8105F54(struct Sprite *sprite)
{
switch (sprite->data[0])
{
- case 0:
- if (++sprite->data[1] > 8)
- {
- sprite->data[0]++;
- }
- break;
- case 1:
- sprite->pos1.y += 2;
- if (sprite->pos1.y >= 0x30)
- {
- sprite->pos1.y = 0x30;
- sprite->data[0]++;
- sprite->data[7] = 0;
- }
- break;
+ case 0:
+ if (++sprite->data[1] > 8)
+ sprite->data[0]++;
+ break;
+ case 1:
+ sprite->pos1.y += 2;
+ if (sprite->pos1.y >= 0x30)
+ {
+ sprite->pos1.y = 0x30;
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ }
+ break;
}
}
@@ -3658,35 +3845,33 @@ static void sub_8105F9C(struct Sprite *sprite)
{
switch (sprite->data[0])
{
- case 0:
- sprite->invisible = TRUE;
- if (++sprite->data[1] > 0x20)
- {
- sprite->data[0]++;
- sprite->data[1] = 5;
- sprite->oam.mosaic = TRUE;
- sprite->invisible = FALSE;
- StartSpriteAnim(sprite, 1);
- REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8;
- }
- break;
- case 1:
- sprite->data[1] -= (sprite->data[2] >> 8);
- if (sprite->data[1] < 0)
- {
- sprite->data[1] = 0;
- }
+ case 0:
+ sprite->invisible = TRUE;
+ if (++sprite->data[1] > 0x20)
+ {
+ sprite->data[0]++;
+ sprite->data[1] = 5;
+ sprite->oam.mosaic = TRUE;
+ sprite->invisible = FALSE;
+ StartSpriteAnim(sprite, 1);
REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8;
- sprite->data[2] &= 0xff;
- sprite->data[2] += 0x80;
- if (sprite->data[1] == 0)
- {
- sprite->data[0]++;
- sprite->data[7] = 0;
- sprite->oam.mosaic = FALSE;
- StartSpriteAnim(sprite, 0);
- }
- break;
+ }
+ break;
+ case 1:
+ sprite->data[1] -= (sprite->data[2] >> 8);
+ if (sprite->data[1] < 0)
+ sprite->data[1] = 0;
+ REG_MOSAIC = ((sprite->data[1] << 4) | sprite->data[1]) << 8;
+ sprite->data[2] &= 0xff;
+ sprite->data[2] += 0x80;
+ if (sprite->data[1] == 0)
+ {
+ sprite->data[0]++;
+ sprite->data[7] = 0;
+ sprite->oam.mosaic = FALSE;
+ StartSpriteAnim(sprite, 0);
+ }
+ break;
}
}
@@ -3724,40 +3909,30 @@ static void sub_81060FC(struct Sprite *sprite)
switch (sprite->data[0])
{
- case 0:
- sprite->pos2.x = sp00[sprite->data[6]];
- sprite->pos2.y = sp10[sprite->data[6]];
- sprite->data[1] = sp20[sprite->data[6]];
+ case 0:
+ sprite->pos2.x = sp00[sprite->data[6]];
+ sprite->pos2.y = sp10[sprite->data[6]];
+ sprite->data[1] = sp20[sprite->data[6]];
+ sprite->data[0]++;
+ // fallthrough
+ case 1:
+ if (sprite->data[1]-- == 0)
sprite->data[0]++;
- // fallthrough
- case 1:
- if (sprite->data[1]-- == 0)
- {
- sprite->data[0]++;
- }
- break;
- case 2:
- if (sprite->pos2.x > 0)
- {
- sprite->pos2.x -= 4;
- }
- else if (sprite->pos2.x < 0)
- {
- sprite->pos2.x += 4;
- }
- if (sprite->pos2.y > 0)
- {
- sprite->pos2.y -= 4;
- }
- else if (sprite->pos2.y < 0)
- {
- sprite->pos2.y += 4;
- }
- if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
- {
- sprite->data[0]++;
- }
- break;
+ break;
+ case 2:
+ if (sprite->pos2.x > 0)
+ sprite->pos2.x -= 4;
+ else if (sprite->pos2.x < 0)
+ sprite->pos2.x += 4;
+
+ if (sprite->pos2.y > 0)
+ sprite->pos2.y -= 4;
+ else if (sprite->pos2.y < 0)
+ sprite->pos2.y += 4;
+
+ if (sprite->pos2.x == 0 && sprite->pos2.y == 0)
+ sprite->data[0]++;
+ break;
}
}
@@ -3772,10 +3947,8 @@ static void sub_81061C8(struct Sprite *sprite)
}
sprite->pos2.x = Cos(sp0[sprite->data[6]], sprite->data[1]);
sprite->pos2.y = Sin(sp0[sprite->data[6]], sprite->data[1]);
- if (sprite->data[1])
- {
+ if (sprite->data[1] != 0)
sprite->data[1]--;
- }
}
static void sub_8106230(struct Sprite *sprite)
@@ -3794,13 +3967,9 @@ static void sub_8106230(struct Sprite *sprite)
sprite->data[2] = sprite->data[1] + 0xb0;
sprite->data[3] = 0xf0 - sprite->data[1];
if (sprite->data[2] > 0xd0)
- {
sprite->data[2] = 0xd0;
- }
if (sprite->data[3] < 0xd0)
- {
sprite->data[3] = 0xd0;
- }
eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
if (sprite->data[1] > 0x33)
{
@@ -3810,9 +3979,7 @@ static void sub_8106230(struct Sprite *sprite)
break;
case 2:
if (eSlotMachine->bet == 0)
- {
break;
- }
sub_8104D30(5, SpriteCallbackDummy, 0xd0, 0x74, 0);
eSlotMachine->win0h = 0xc0e0;
eSlotMachine->win0v = 0x6880;
@@ -3825,13 +3992,9 @@ static void sub_8106230(struct Sprite *sprite)
sprite->data[2] = sprite->data[1] + 0xc0;
sprite->data[3] = 0xe0 - sprite->data[1];
if (sprite->data[2] > 0xd0)
- {
sprite->data[2] = 0xd0;
- }
if (sprite->data[3] < 0xd0)
- {
sprite->data[3] = 0xd0;
- }
eSlotMachine->win0h = (sprite->data[2] << 8) | sprite->data[3];
if (sprite->data[1] > 0x0f)
{
@@ -3844,7 +4007,6 @@ static void sub_8106230(struct Sprite *sprite)
static void nullsub_70(void)
{
-
}
static void sub_8106364(void)
@@ -3893,14 +4055,13 @@ static void sub_8106404(void)
{
u8 j;
for (j = 0; j < 0x20; j++, dest++)
- {
*dest = src[j];
- }
}
LoadSpriteSheet(sheet);
}
-static void sub_8106448(void) {
+static void sub_8106448(void)
+{
LZDecompressWram(gSlotMachine_Gfx, eSlotMachineGfxBuffer);
DmaCopyLarge16(3, eSlotMachineGfxBuffer, BG_VRAM, SLOTMACHINE_GFX_TILES * 32, 0x1000);
@@ -3909,12 +4070,14 @@ static void sub_8106448(void) {
LoadPalette(gPalette_83EDE24, 208, 32);
}
-static void sub_81064B8(void) {
+static void sub_81064B8(void)
+{
CpuCopy16(gUnknown_08E95AB8, BG_SCREEN_ADDR(29), 20 * 32 * 2);
LoadSlotMachineWheelOverlay();
}
-static void LoadSlotMachineWheelOverlay(void) {
+static void LoadSlotMachineWheelOverlay(void)
+{
s16 x, y, dx;
u16 *screen;
@@ -3934,13 +4097,12 @@ static void LoadSlotMachineWheelOverlay(void) {
screen[12 * 32 + x] = 0x28BE;
for (y = 7; y <= 11; y++)
- {
screen[y * 32 + x] = 0x20BF;
- }
}
}
-static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
+static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4)
+{
u16 *vram = BG_SCREEN_ADDR(29);
vram[15 * 32 + arg0] = arg1;
@@ -3949,7 +4111,8 @@ static void sub_81065A8(s16 arg0, u16 arg1, u16 arg2, u16 arg3, u16 arg4) {
vram[16 * 32 + 1 + arg0] = arg4;
}
-static void sub_81065DC(void) {
+static void sub_81065DC(void)
+{
s16 y, x;
u16 *screen;
@@ -3959,13 +4122,12 @@ static void sub_81065DC(void) {
for (y = 0; y < 20; y++)
{
for (x = 0; x < 30; x++)
- {
screen[x + y * 32] = 0;
- }
}
}
-static const u8 sReelSymbols[][21] = {
+static const u8 sReelSymbols[][21] =
+{
{
SLOT_MACHINE_TAG_7_RED,
SLOT_MACHINE_TAG_CHERRY,
@@ -3988,7 +4150,8 @@ static const u8 sReelSymbols[][21] = {
SLOT_MACHINE_TAG_POWER,
SLOT_MACHINE_TAG_LOTAD,
SLOT_MACHINE_TAG_REPLAY
- }, {
+ },
+ {
SLOT_MACHINE_TAG_7_RED,
SLOT_MACHINE_TAG_CHERRY,
SLOT_MACHINE_TAG_REPLAY,
@@ -4010,7 +4173,8 @@ static const u8 sReelSymbols[][21] = {
SLOT_MACHINE_TAG_LOTAD,
SLOT_MACHINE_TAG_REPLAY,
SLOT_MACHINE_TAG_CHERRY
- }, {
+ },
+ {
SLOT_MACHINE_TAG_7_RED,
SLOT_MACHINE_TAG_POWER,
SLOT_MACHINE_TAG_7_BLUE,
@@ -4032,7 +4196,7 @@ static const u8 sReelSymbols[][21] = {
SLOT_MACHINE_TAG_REPLAY,
SLOT_MACHINE_TAG_LOTAD,
SLOT_MACHINE_TAG_CHERRY
- }
+ },
};
static const u8 gUnknown_083ECCF1[] = {
@@ -5394,3 +5558,390 @@ static const struct SpritePalette gSlotMachineSpritePalettes[] = {
static const u8 sReelTimeGfx[] = INCBIN_U8("graphics/slot_machine/reel_time.4bpp.lz");
static const u16 sReelTimeWindowTilemap[] = INCBIN_U16("graphics/slot_machine/reel_time_window_map.bin");
+
+#if DEBUG
+
+static void debug_sub_811B1C4(void)
+{
+ unk_debug_bss_1_3 |= 2;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 2) ? 0 : 2;
+}
+
+static void debug_sub_811B1EC(void)
+{
+ unk_debug_bss_1_3 |= 1;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 1) ? 0 : 1;
+}
+
+static void debug_sub_811B210(void)
+{
+ unk_debug_bss_1_3 |= 4;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 4) ? 0 : 4;
+}
+
+static void debug_sub_811B238(void)
+{
+ unk_debug_bss_1_3 |= 8;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 8) ? 0 : 8;
+}
+
+static void debug_sub_811B260(void)
+{
+ unk_debug_bss_1_3 |= 0x10;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 0x10) ? 0 : 0x10;
+}
+
+static void debug_sub_811B288(void)
+{
+ unk_debug_bss_1_3 |= 0x40;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 0x40) ? 0 : 0x40;
+}
+
+static void debug_sub_811B2B0(void)
+{
+ unk_debug_bss_1_3 |= 0x80;
+ unk_debug_bss_1_0 = (unk_debug_bss_1_0 == 0x80) ? 0 : 0x80;
+}
+
+static void debug_sub_811B2D8(void)
+{
+ unk_debug_bss_1_3 |= 0x20;
+}
+
+static void debug_sub_811B2E8(void)
+{
+ u8 text[2];
+
+ ConvertIntToDecimalStringN(text, eSlotMachine->unk01 + 1, 2, 1);
+ Menu_PrintText(text, 6, 1);
+}
+
+static const u8 Str_841B1C4[] = _("SETTEI");
+static const u8 Str_841B1CB[] = _("MAWASITA");
+static const u8 Str_841B1D4[] = _("MODOSI");
+static const u8 Str_841B1DB[] = _("NOMARE");
+static const u8 Str_841B1E2[] = _("MAE 7");
+static const u8 Str_841B1E8[] = _("LR  HENKOU");
+static const u8 Str_841B1F3[] = _("START  JIDOUSU");
+static const u8 Str_841B202[] = _("SELECT  SETTEI");
+static const u8 Str_841B211[] = _("TYUHSEN");
+static const u8 Str_841B219[] = _("CHERRY");
+static const u8 Str_841B220[] = _("REPLAY");
+static const u8 Str_841B227[] = _("HASUBO");
+static const u8 Str_841B22E[] = _("RURIRI");
+static const u8 Str_841B235[] = _("INAZU");
+static const u8 Str_841B23B[] = _("REG");
+static const u8 Str_841B23F[] = _("BIG");
+static const u8 Str_841B243[] = _("BD");
+static const u8 Str_841B246[] = _("R7");
+static const u8 Str_841B249[] = _("B7");
+static const u8 Str_841B24C[] = _("A  COIN");
+static const u8 Str_841B254[] = _("TYUHSEN");
+static const u8 Str_841B25C[] = _("UD  100");
+static const u8 Str_841B264[] = _("LR  1000");
+static const u8 Str_841B26D[] = _("×");
+
+void debug_sub_811B310(void)
+{
+ u8 text[5];
+
+ Menu_PrintText(Str_841B1C4, 1, 1);
+ Menu_PrintText(Str_841B1CB, 1, 3);
+ Menu_PrintText(Str_841B1D4, 1, 5);
+ Menu_PrintText(Str_841B1DB, 1, 7);
+ Menu_PrintText(Str_841B1E2, 1, 9);
+ Menu_PrintText(Str_841B1E8, 1, 11);
+ Menu_PrintText(Str_841B1F3, 1, 13);
+ Menu_PrintText(Str_841B202, 1, 15);
+ Menu_PrintText(Str_841B24C, 1, 17);
+ Menu_PrintText(Str_841B211, 15, 1);
+ Menu_PrintText(Str_841B219, 15, 3);
+ Menu_PrintText(Str_841B220, 15, 5);
+ Menu_PrintText(Str_841B227, 15, 7);
+ Menu_PrintText(Str_841B22E, 15, 9);
+ Menu_PrintText(Str_841B235, 15, 11);
+ Menu_PrintText(Str_841B23B, 15, 13);
+ Menu_PrintText(Str_841B23F, 15, 15);
+ Menu_PrintText(Str_841B243, 15, 17);
+ if (eSlotMachine->unk03 == 0)
+ Menu_PrintText(Str_841B246, 10, 9);
+ else
+ Menu_PrintText(Str_841B249, 10, 9);
+
+#define PRINT_NUMBER(n, x, y) \
+ ConvertIntToDecimalStringN(text, n, 2, 4); \
+ Menu_PrintText(text, x, y);
+
+ PRINT_NUMBER(eSlotMachine->unk68, 10, 3);
+ PRINT_NUMBER(eSlotMachine->unk6C, 10, 5);
+ PRINT_NUMBER(eSlotMachine->unk10, 10, 7);
+ PRINT_NUMBER(eSlotMachine->unk70, 20, 3);
+ PRINT_NUMBER(eSlotMachine->unk74, 20, 5);
+ PRINT_NUMBER(eSlotMachine->unk78, 20, 7);
+ PRINT_NUMBER(eSlotMachine->unk7C, 20, 9);
+ PRINT_NUMBER(eSlotMachine->unk80, 20, 11);
+ PRINT_NUMBER(eSlotMachine->unk84, 20, 13);
+ PRINT_NUMBER(eSlotMachine->unk88, 20, 15);
+ PRINT_NUMBER(eSlotMachine->unk8C, 20, 17);
+
+#undef PRINT_NUMBER
+
+ if (unk_debug_bss_1_0 != 0)
+ {
+ u8 y = 0;
+
+ switch (unk_debug_bss_1_0)
+ {
+ case 2:
+ y = 3;
+ break;
+ case 1:
+ y = 5;
+ break;
+ case 4:
+ y = 7;
+ break;
+ case 8:
+ y = 9;
+ break;
+ case 16:
+ y = 11;
+ break;
+ case 64:
+ y = 13;
+ break;
+ case 128:
+ y = 15;
+ break;
+ }
+ Menu_PrintText(Str_841B26D, 23, y);
+ }
+ debug_sub_811B2E8();
+}
+
+static void debug_sub_811B5B4(s32 *a, s32 b)
+{
+ *a += b;
+ if (*a > 9999)
+ *a = 9999;
+}
+
+static void debug_sub_811B5D0(void)
+{
+ unk_debug_bss_1_0 = 0;
+ unk_debug_bss_1_2 = 0;
+ unk_debug_bss_1_3 = 0;
+ unk_debug_bss_1_4 = 0;
+ eSlotMachine->unk68 = 0;
+ eSlotMachine->unk6C = 0;
+ eSlotMachine->unk70 = 0;
+ eSlotMachine->unk74 = 0;
+ eSlotMachine->unk78 = 0;
+ eSlotMachine->unk7C = 0;
+ eSlotMachine->unk80 = 0;
+ eSlotMachine->unk84 = 0;
+ eSlotMachine->unk88 = 0;
+ eSlotMachine->unk8C = 0;
+ eSlotMachine->unk90 = 0;
+}
+
+static void debug_sub_811B620(void)
+{
+ CreateTask(debug_sub_811B654, 0);
+}
+
+static u8 debug_sub_811B634(void)
+{
+ if (FindTaskIdByFunc(debug_sub_811B654) == 0xFF)
+ return 1;
+ else
+ return 0;
+}
+
+static const struct {const u8 *text; void (*func)();} _841B270[] =
+{
+ {Str_841B219, debug_sub_811B1C4},
+ {Str_841B220, debug_sub_811B1EC},
+ {Str_841B227, debug_sub_811B210},
+ {Str_841B22E, debug_sub_811B238},
+ {Str_841B235, debug_sub_811B260},
+ {Str_841B23B, debug_sub_811B288},
+ {Str_841B23F, debug_sub_811B2B0},
+ {Str_841B243, debug_sub_811B2D8},
+};
+
+static void debug_sub_811B654(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s8 selection;
+
+ switch (task->data[0])
+ {
+ case 0:
+ Menu_DrawStdWindowFrame(0, 0, 24, 19);
+ debug_sub_811B310();
+ task->data[0]++;
+ break;
+ case 1:
+ if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ break;
+ }
+ if (gMain.newKeys & 0x20)
+ {
+ eSlotMachine->unk01--;
+ if ((s8)eSlotMachine->unk01 < 0) // Why? It's unsigned
+ eSlotMachine->unk01 = 5;
+ debug_sub_811B2E8();
+ break;
+ }
+ if (gMain.newKeys & 0x10)
+ {
+ eSlotMachine->unk01++;
+ if (eSlotMachine->unk01 > 5)
+ eSlotMachine->unk01 = 0;
+ debug_sub_811B2E8();
+ break;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ task->data[0] = 3;
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 9, 5);
+ Menu_PrintText(Str_841B25C, 1, 1);
+ Menu_PrintText(Str_841B264, 1, 3);
+ break;
+ }
+ if (gMain.newKeys & 4)
+ {
+ unk_debug_bss_1_2 = 0;
+ unk_debug_bss_1_3 = 0;
+ Menu_EraseScreen();
+ Menu_DrawStdWindowFrame(0, 0, 10, 19);
+ Menu_PrintText(Str_841B254, 1, 1);
+ Menu_PrintItems(2, 3, 8, (void *)_841B270);
+ InitMenu(0, 1, 3, 8, 0, 9);
+ task->data[0]++;
+ }
+ if (gMain.newKeys & 8)
+ {
+ unk_debug_bss_1_4 = 1;
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ }
+ break;
+ case 2:
+ selection = Menu_ProcessInput();
+ if (selection == -2)
+ break;
+ if (selection != -1)
+ {
+ unk_debug_bss_1_2 = 1;
+ _841B270[selection].func();
+ }
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ break;
+ case 3:
+ if (gMain.newAndRepeatedKeys & 0x80)
+ {
+ eSlotMachine->coins += 100;
+ if (eSlotMachine->coins > 9999)
+ eSlotMachine->coins = 9999;
+ break;
+ }
+ if (gMain.newAndRepeatedKeys & 0x40)
+ {
+ eSlotMachine->coins -= 100;
+ if (eSlotMachine->coins <= 0)
+ eSlotMachine->coins = 9999;
+ break;
+ }
+ if (gMain.newAndRepeatedKeys & 0x20)
+ {
+ eSlotMachine->coins -= 1000;
+ if (eSlotMachine->coins <= 0)
+ eSlotMachine->coins = 9999;
+ break;
+ }
+ if (gMain.newAndRepeatedKeys & 0x10)
+ {
+ eSlotMachine->coins += 1000;
+ if (eSlotMachine->coins > 9999)
+ eSlotMachine->coins = 9999;
+ break;
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ Menu_EraseScreen();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static const u8 Str_841B2B0[] = _("·カウントエラーがおきました");
+static const u8 Str_841B2BF[] = _("·リールそうさで エラーが おきました");
+static const u8 Str_841B2D3[] = _("·フラグオフエラーが おきました");
+static const u8 Str_841B2E4[] = _("·ボーナスこやくの エラーが おきました");
+
+static void debug_sub_811B894(void)
+{
+ if (eSlotMachine->matchedSymbols & 0x180)
+ {
+ eSlotMachine->unk90++;
+ if (eSlotMachine->unk90 > 9999)
+ eSlotMachine->unk90 = 9999;
+ if (eSlotMachine->unk90 != eSlotMachine->unk88)
+ {
+ Menu_PrintText(Str_841B2B0, 4, 15);
+ unk_debug_bss_1_4 = 0;
+ }
+ if (!(eSlotMachine->unk04 & 0x80))
+ {
+ Menu_PrintText(Str_841B2D3, 4, 17);
+ unk_debug_bss_1_4 = 0;
+ }
+ }
+ else if (eSlotMachine->matchedSymbols != 0)
+ {
+ if ((eSlotMachine->unk04 & 0x80) && !(eSlotMachine->matchedSymbols & 3))
+ {
+ Menu_PrintText(Str_841B2E4, 4, 2);
+ unk_debug_bss_1_4 = 0;
+ }
+ }
+ if (eSlotMachine->matchedSymbols == 0 && eSlotMachine->bet == 3 && !(eSlotMachine->unk04 & 0x80))
+ {
+ u8 sym_0_1 = GetTagOfReelSymbolOnScreenAtPos(0, 1);
+ u8 sym_0_2 = GetTagOfReelSymbolOnScreenAtPos(0, 2);
+ u8 sym_0_3 = GetTagOfReelSymbolOnScreenAtPos(0, 3);
+
+ u8 sym_1_1 = GetTagOfReelSymbolOnScreenAtPos(1, 1);
+ u8 sym_1_2 = GetTagOfReelSymbolOnScreenAtPos(1, 2);
+ u8 sym_1_3 = GetTagOfReelSymbolOnScreenAtPos(1, 3);
+
+ u8 sym_2_1 = GetTagOfReelSymbolOnScreenAtPos(2, 1);
+ u8 sym_2_2 = GetTagOfReelSymbolOnScreenAtPos(2, 2);
+ u8 sym_2_3 = GetTagOfReelSymbolOnScreenAtPos(2, 3);
+
+ if ((sym_0_1 == 0 && sym_1_1 == 1 && sym_2_1 == 0)
+ || (sym_0_2 == 0 && sym_1_2 == 1 && sym_2_2 == 0)
+ || (sym_0_3 == 0 && sym_1_3 == 1 && sym_2_3 == 0)
+ || (sym_0_1 == 0 && sym_1_2 == 1 && sym_2_3 == 0)
+ || (sym_0_3 == 0 && sym_1_2 == 1 && sym_2_1 == 0)
+ || (sym_0_1 == 1 && sym_1_1 == 0 && sym_2_1 == 1)
+ || (sym_0_2 == 1 && sym_1_2 == 0 && sym_2_2 == 1)
+ || (sym_0_3 == 1 && sym_1_3 == 0 && sym_2_3 == 1)
+ || (sym_0_1 == 1 && sym_1_2 == 0 && sym_2_3 == 1)
+ || (sym_0_3 == 1 && sym_1_2 == 0 && sym_2_1 == 1))
+ {
+ Menu_PrintText(Str_841B2BF, 4, 0);
+ unk_debug_bss_1_4 = 0;
+ }
+ }
+}
+
+#endif
diff --git a/src/engine/sound.c b/src/sound.c
index 159ad3f70..159ad3f70 100644
--- a/src/engine/sound.c
+++ b/src/sound.c
diff --git a/src/engine/sprite.c b/src/sprite.c
index cf35e12a3..a9d84e01a 100644
--- a/src/engine/sprite.c
+++ b/src/sprite.c
@@ -1,8 +1,10 @@
#include "global.h"
+#include "debug.h"
#include "sprite.h"
#include "main.h"
#include "menu_cursor.h"
#include "palette.h"
+#include "sprite.h"
#define MAX_SPRITE_COPY_REQUESTS 64
@@ -822,6 +824,12 @@ static void RequestSpriteFrameImageCopy(u16 index, u16 tileNum, const struct Spr
gSpriteCopyRequests[gSpriteCopyRequestCount].size = images[index].size;
gSpriteCopyRequestCount++;
}
+#if DEBUG
+ else
+ {
+ Crash(sDmaOverErrorMsg);
+ }
+#endif
}
void RequestSpriteCopy(const void *src, u8 *dest, u16 size)
@@ -833,6 +841,12 @@ void RequestSpriteCopy(const void *src, u8 *dest, u16 size)
gSpriteCopyRequests[gSpriteCopyRequestCount].size = size;
gSpriteCopyRequestCount++;
}
+#if DEBUG
+ else
+ {
+ Crash(sDmaOverErrorMsg);
+ }
+#endif
}
// these two functions are unused.
diff --git a/src/field/start_menu.c b/src/start_menu.c
index 381c19bb7..f2d53eb7f 100644
--- a/src/field/start_menu.c
+++ b/src/start_menu.c
@@ -1,15 +1,17 @@
#include "global.h"
+#include "battle_tower.h"
#include "start_menu.h"
#include "event_data.h"
-#include "field_map_obj_helpers.h"
#include "field_player_avatar.h"
#include "field_weather.h"
#include "fieldmap.h"
#include "item_menu.h"
#include "load_save.h"
+#include "m4a.h"
#include "main.h"
#include "map_obj_lock.h"
#include "menu.h"
+#include "new_game.h"
#include "option_menu.h"
#include "palette.h"
#include "pokedex.h"
@@ -44,6 +46,11 @@ enum {
MENU_ACTION_PLAYER_LINK
};
+#if DEBUG
+static u32 _debugStartMenu_0 __attribute__((unused));
+static u32 _debugStartMenu_1 __attribute__((unused));
+#endif
+
static u8 (*saveDialogCallback)(void);
static u8 saveDialogTimer; //Number of frames to keep the window on screen after save was completed
static bool8 savingComplete;
@@ -132,6 +139,107 @@ static bool32 sub_80719FC(u8 *ptr);
static void sub_8071B54(void);
static void Task_8071B64(u8 taskId);
+#if DEBUG
+
+void debug_sub_8075D9C(void);
+
+u8 debug_sub_8075C30(void)
+{
+ CloseMenu();
+ debug_sub_8075D9C();
+ return 1;
+}
+
+extern const u8 gUnknown_Debug_839B6D8[];
+
+void debug_sub_8075C40(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 savedIme;
+ s32 i;
+
+ switch (data[0])
+ {
+ case 0:
+ m4aSoundVSyncOff();
+ data[0]++;
+ break;
+ case 1:
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_TM2CNT_L = 0;
+ REG_TM2CNT = 0x830000;
+ for (i = 0; i < 0xC350; i++)
+ {
+ DmaSet(
+ 0,
+ gScanlineEffectRegBuffers,
+ &REG_WIN0H,
+ ((DMA_ENABLE | DMA_START_HBLANK | DMA_16BIT | DMA_REPEAT | DMA_SRC_INC | DMA_DEST_RELOAD) << 16) | 1);
+ DmaStop(0);
+ }
+ REG_TM2CNT_H = 0;
+ _debugStartMenu_0 = REG_TM2CNT_L;
+ REG_TM2CNT_L = 0;
+ REG_IME = savedIme;
+ _debugStartMenu_1 = i;
+ m4aSoundVSyncOn();
+ data[0]++;
+ break;
+ case 2:
+ PlaySE(0x15);
+ ConvertIntToDecimalStringN(gStringVar1, _debugStartMenu_1, 1, 8);
+ ConvertIntToDecimalStringN(gStringVar2, _debugStartMenu_0, 1, 8);
+ Menu_DisplayDialogueFrame();
+ Menu_PrintText(gUnknown_Debug_839B6D8, 2, 15);
+ data[0]++;
+ break;
+ case 3:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ Menu_EraseScreen();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void debug_sub_8075D9C(void)
+{
+ CreateTask(debug_sub_8075C40, 10);
+ ScriptContext2_Enable();
+}
+
+void debug_sub_8075DB4(struct BattleTowerEReaderTrainer *ereaderTrainer, const u8 *b, u32 trainerId)
+{
+ s32 i;
+ s32 r3;
+
+ ereaderTrainer->trainerClass = trainerId % 77;
+ write_word_to_mem(trainerId, ereaderTrainer->trainerId);
+ StringCopy8(ereaderTrainer->name, b);
+ r3 = 7;
+ for (i = 0; i < 6; i++)
+ {
+ ereaderTrainer->greeting[i] = gSaveBlock1.easyChats.unk2B28[i];
+ ereaderTrainer->farewellPlayerLost[i] = r3;
+ ereaderTrainer->farewellPlayerWon[i] = r3 + 6;
+ r3++;
+ }
+ for (i = 0; i < 3; i++)
+ sub_803AF78(&gPlayerParty[i], &ereaderTrainer->party[i]);
+ SetEReaderTrainerChecksum(ereaderTrainer);
+}
+
+void unref_sub_8070F90(void)
+{
+ FlagSet(FLAG_SYS_POKEDEX_GET);
+ FlagSet(FLAG_SYS_POKEMON_GET);
+ FlagSet(FLAG_SYS_POKENAV_GET);
+}
+
+#endif
static void BuildStartMenuActions(void)
{
diff --git a/src/field/starter_choose.c b/src/starter_choose.c
index 418488774..418488774 100644
--- a/src/field/starter_choose.c
+++ b/src/starter_choose.c
diff --git a/src/engine/string_util.c b/src/string_util.c
index 7316f533a..7316f533a 100644
--- a/src/engine/string_util.c
+++ b/src/string_util.c
diff --git a/src/strings.c b/src/strings.c
index 06bbadb8f..0f599db72 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -173,7 +173,8 @@ const u8 gOtherText_None[] = _("NONE");
const u8 gOtherText_ThreeQuestions2[] = _("???");
-const u8 gOtherText_FiveQuestionsAndSlash[] = _("?????$/");
+const u8 gOtherText_FiveQuestions[] = _("?????");
+const u8 gOtherText_Slash[] = _("/");
const u8 gOtherText_OneDash[] = _("-");
const u8 gOtherText_TwoDashes[] = _("--");
@@ -267,7 +268,9 @@ const u8 gContestStatsText_Spicy[] = _("SPICY");
const u8 gContestStatsText_Dry[] = _("DRY");
const u8 gContestStatsText_Sweet[] = _("SWEET");
const u8 gContestStatsText_Bitter[] = _("BITTER");
-const u8 gContestStatsText_Sour[] = _("SOUR$TASTY$FEEL"); // tasty is unused, feel might not be
+const u8 gContestStatsText_Sour[] = _("SOUR");
+const u8 gContestStatsText_Tasty[] = _("TASTY");
+const u8 gContestStatsText_Feel[] = _("FEEL");
const u8 gContestStatsText_StowCase[] = _("Stow CASE.");
const u8 gContestStatsText_ThrowAwayPrompt[] = _("Throw away this\n{STR_VAR_1}?");
@@ -1096,7 +1099,8 @@ const u8 gOtherText_None[] = _("KEINES");
const u8 gOtherText_ThreeQuestions2[] = _("???");
-const u8 gOtherText_FiveQuestionsAndSlash[] = _("?????$/");
+const u8 gOtherText_FiveQuestions[] = _("?????");
+const u8 gOtherText_Slash[] = _("/");
const u8 gOtherText_OneDash[] = _("-");
const u8 gOtherText_TwoDashes[] = _("--");
@@ -1190,7 +1194,9 @@ const u8 gContestStatsText_Spicy[] = _("SCHARF");
const u8 gContestStatsText_Dry[] = _("TROCKEN");
const u8 gContestStatsText_Sweet[] = _("SÜSS");
const u8 gContestStatsText_Bitter[] = _("BITTER");
-const u8 gContestStatsText_Sour[] = _("SAUER$LECKER$WÜRZE");
+const u8 gContestStatsText_Sour[] = _("SAUER");
+const u8 gContestStatsText_Tasty[] = _("LECKER");
+const u8 gContestStatsText_Feel[] = _("WÜRZE");
const u8 gContestStatsText_StowCase[] = _("BOX verstauen.");
const u8 gContestStatsText_ThrowAwayPrompt[] = _("{STR_VAR_1}\nwegwerfen?");
diff --git a/src/engine/task.c b/src/task.c
index 7bd2b5937..3e8a5588c 100644
--- a/src/engine/task.c
+++ b/src/task.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "debug.h"
#include "task.h"
#define ACTIVE_SENTINEL 0x10
@@ -11,8 +12,9 @@ struct Task gTasks[ACTIVE_SENTINEL];
static void InsertTask(u8 newTaskId);
static u8 FindFirstActiveTask();
-// Unused string
-const u8 sTaskOverString[] = _("TASK OVER\nタスクがオーバーしました");
+const u8 gError_NoTasksLeft[] = _(
+ "TASK OVER\n"
+ "タスクがオーバーしました");
void ResetTasks()
{
@@ -49,6 +51,10 @@ u8 CreateTask(TaskFunc func, u8 priority)
}
}
+#if DEBUG
+ Crash(gError_NoTasksLeft);
+#endif
+
return 0;
}
diff --git a/src/engine/text.c b/src/text.c
index fe18a6d79..234e6085d 100644
--- a/src/engine/text.c
+++ b/src/text.c
@@ -234,12 +234,12 @@ static const u8 sBrailleGlyphs[] = INCBIN_U8("graphics/fonts/font6_braille.1bpp"
static const u32 sDownArrowTiles[] = INCBIN_U32("graphics/fonts/down_arrow.4bpp");
// clang-format off
-#include "../data/text/type1_map.h"
-#include "../data/text/type3_map.h"
-#include "../data/text/font1_widths.h"
-#include "../data/text/font4_widths.h"
-#include "../data/text/font0_widths.h"
-#include "../data/text/font3_widths.h"
+#include "data/text/type1_map.h"
+#include "data/text/type3_map.h"
+#include "data/text/font1_widths.h"
+#include "data/text/font4_widths.h"
+#include "data/text/font0_widths.h"
+#include "data/text/font3_widths.h"
// clang-format on
const u16 gUnknownPalette_81E6692[] = INCBIN_U16("graphics/fonts/unknown_81E6692.gbapal");
diff --git a/src/engine/text_window.c b/src/text_window.c
index ade349f4e..ade349f4e 100644
--- a/src/engine/text_window.c
+++ b/src/text_window.c
diff --git a/src/engine/tileset_anim.c b/src/tileset_anim.c
index abd38edad..abd38edad 100644
--- a/src/engine/tileset_anim.c
+++ b/src/tileset_anim.c
diff --git a/src/engine/time_events.c b/src/time_events.c
index 4bd732788..4bd732788 100644
--- a/src/engine/time_events.c
+++ b/src/time_events.c
diff --git a/src/scene/title_screen.c b/src/title_screen.c
index 202b752a6..a1c8e081d 100644
--- a/src/scene/title_screen.c
+++ b/src/title_screen.c
@@ -8,6 +8,7 @@
#include "m4a.h"
#include "main.h"
#include "main_menu.h"
+#include "overworld.h"
#include "palette.h"
#include "reset_rtc_screen.h"
#include "sound.h"
@@ -353,6 +354,9 @@ static void Task_TitleScreenPhase1(u8);
static void Task_TitleScreenPhase2(u8);
static void Task_TitleScreenPhase3(u8);
static void CB2_GoToMainMenu(void);
+#if DEBUG
+static void CB2_GoToTestMenu(void);
+#endif
static void CB2_GoToClearSaveDataScreen(void);
static void CB2_GoToResetRtcScreen(void);
static void CB2_GoToCopyrightScreen(void);
@@ -829,6 +833,13 @@ static void Task_TitleScreenPhase3(u8 taskId)
BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
SetMainCallback2(CB2_GoToResetRtcScreen);
}
+#if DEBUG
+ else if (gMain.heldKeys == SELECT_BUTTON)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ SetMainCallback2(CB2_GoToTestMenu);
+ }
+#endif
else
{
REG_BG2Y = 0;
@@ -855,6 +866,14 @@ static void CB2_GoToMainMenu(void)
SetMainCallback2(CB2_InitMainMenu);
}
+#if DEBUG
+static void CB2_GoToTestMenu(void)
+{
+ if (!UpdatePaletteFade())
+ SetMainCallback2(CB2_InitTestMenu);
+}
+#endif
+
static void CB2_GoToCopyrightScreen(void)
{
if (!UpdatePaletteFade())
diff --git a/src/engine/trade.c b/src/trade.c
index 4bd39c4ef..36e6fc757 100644
--- a/src/engine/trade.c
+++ b/src/trade.c
@@ -4495,8 +4495,8 @@ static __attribute__((naked)) void sub_804B41C(void)
}
#endif
-static void sub_804B790(void)
// In-game trade init
+void sub_804B790(void)
{
u8 otName[11];
switch (gMain.state)
diff --git a/src/field/trader.c b/src/trader.c
index 64bd708f6..885557d5a 100644
--- a/src/field/trader.c
+++ b/src/trader.c
@@ -108,7 +108,7 @@ void CreateAvailableDecorationsMenu(u8 taskId)
{
if (trader->unk1[i] > DECOR_REGISTEEL_DOLL)
{
- Menu_PrintText(gOtherText_FiveQuestionsAndSlash, 1, numDecorations * 2 + 2);
+ Menu_PrintText(gOtherText_FiveQuestions, 1, numDecorations * 2 + 2);
}
else
{
diff --git a/src/engine/trainer_card.c b/src/trainer_card.c
index b49628bfa..8d16aa9bf 100644
--- a/src/engine/trainer_card.c
+++ b/src/trainer_card.c
@@ -5,6 +5,7 @@
#include "field_effect.h"
#include "graphics.h"
#include "link.h"
+#include "m4a.h"
#include "main.h"
#include "menu.h"
#include "money.h"
@@ -52,7 +53,6 @@ extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
EWRAM_DATA struct TrainerCard gTrainerCards[4] = {0};
-extern const u8 gBadgesTiles[];
extern const u16 gUnknown_083B5F0C[];
extern const u16 gBadgesPalette[];
extern const u16 gUnknown_083B5F4C[];
@@ -63,6 +63,34 @@ const u8 gBadgesTiles[] = INCBIN_U8("graphics/trainer_card/badges.4bpp");
// XXX: what is this?
u8 *const ewram_ = gSharedMem;
+#if DEBUG
+const struct TrainerCard sTestTrainerCard =
+{
+ .gender = FEMALE,
+ .stars = 4,
+ .hasPokedex = TRUE,
+ .var_3 = TRUE,
+ .var_4 = TRUE,
+ .firstHallOfFameA = 999,
+ .firstHallOfFameB = 99,
+ .firstHallOfFameC = 99,
+ .pokedexSeen = 411,
+ .trainerId = 12345,
+ .playTimeHours = 99,
+ .playTimeMinutes = 99,
+ .linkBattleWins = 9999,
+ .linkBattleLosses = 9999,
+ .battleTowerWins = 9999,
+ .battleTowerLosses = 9999,
+ .contestsWithFriends = 999,
+ .pokeblocksWithFriends = 0xFFFF,
+ .pokemonTrades = 0xFFFF,
+ .money = 99999,
+ .var_28 = {1, 2, 3, 4},
+ .playerName = _("てすと"), // "test"
+};
+#endif
+
bool8 TrainerCard_Init(struct Task *);
bool8 TrainerCard_WaitForFadeInToFinish(struct Task *);
bool8 TrainerCard_WaitForKeys(struct Task *);
@@ -176,8 +204,15 @@ static void TrainerCard_Back_PrintPokemonTrades_Label(void);
static void TrainerCard_Back_PrintPokemonTrades(void);
void unref_sub_8094588(u16 left, u16 top);
+#if DEBUG
+static u8 gDebug_03000748;
+#endif
+
void TrainerCard_ShowPlayerCard(Callback arg1)
{
+#if DEBUG
+ gDebug_03000748 = 0;
+#endif
TrainerCard_InitScreenForPlayer(arg1);
SetMainCallback2(sub_8093174);
ewram0_2.language = GAME_LANGUAGE;
@@ -185,11 +220,41 @@ void TrainerCard_ShowPlayerCard(Callback arg1)
void TrainerCard_ShowLinkCard(u8 playerIndex, Callback arg2)
{
+#if DEBUG
+ gDebug_03000748 = 0;
+#endif
TrainerCard_InitScreenForLinkPlayer(playerIndex, arg2);
SetMainCallback2(sub_8093174);
ewram0_2.language = gLinkPlayers[gLinkPlayerMapObjects[playerIndex].linkPlayerId].language;
}
+#if DEBUG
+void debug_sub_80A0710(Callback callback)
+{
+ gDebug_03000748 = TRUE;
+ TrainerCard_InitScreenForPlayer(callback);
+ SetMainCallback2(sub_8093174);
+ ewram0_2.language = GAME_LANGUAGE;
+}
+
+void debug_sub_80A073C(Callback callback)
+{
+ memcpy(&gTrainerCards[0], &sTestTrainerCard, sizeof(struct TrainerCard));
+ gDebug_03000748=TRUE;
+ TrainerCard_InitScreenForLinkPlayer(0, callback);
+ SetMainCallback2(sub_8093174);
+ ewram0_2.language = GAME_LANGUAGE;
+}
+
+void debug_sub_80A0780()
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ memcpy(&gTrainerCards[i], &sTestTrainerCard, sizeof(struct TrainerCard));
+}
+#endif
+
static void sub_8093174(void)
{
switch (gMain.state)
@@ -538,6 +603,19 @@ static void TrainerCard_FillFlags(void)
}
}
}
+
+#if DEBUG
+ if (gDebug_03000748 != 0)
+ {
+ ewram0_2.showHallOfFame = TRUE;
+ ewram0_2.showLinkBattleStatus = TRUE;
+ ewram0_2.showBattleTowerStatus = TRUE;
+ ewram0_2.showContestRecord = TRUE;
+ ewram0_2.showMixingRecord = TRUE;
+ ewram0_2.showTradingRecord = TRUE;
+ memset(ewram0_2.ownedBadges, TRUE, sizeof(ewram0_2.ownedBadges));
+ }
+#endif
}
void sub_80937A4()
@@ -630,6 +708,17 @@ bool8 TrainerCard_WaitForKeys(struct Task *task)
}
return TRUE;
}
+#if DEBUG
+ else if (gDebug_03000748 && gMain.newKeys & R_BUTTON)
+ {
+ ewram0_2.starCount++;
+ ewram0_2.starCount %= 5;
+ TrainerCard_LoadPalettes();
+ if (ewram0_2.backSideShown == 0)
+ TrainerCard_DrawStars();
+ }
+#endif
+
return FALSE;
}
@@ -1334,7 +1423,11 @@ static void TrainerCard_Front_PrintPokedexCount(void)
{
u8 buffer[16];
- if (!ewram0_2.showPokedexCount)
+ if (
+#if DEBUG
+ gDebug_03000748 == 0 &&
+#endif
+ !ewram0_2.showPokedexCount)
{
TrainerCard_ClearPokedexLabel();
}
diff --git a/src/field/trainer_see.c b/src/trainer_see.c
index 3034b2b65..2913a0a5a 100644
--- a/src/field/trainer_see.c
+++ b/src/trainer_see.c
@@ -2,7 +2,7 @@
#include "trainer_see.h"
#include "battle_setup.h"
#include "field_effect.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_player_avatar.h"
#include "script.h"
#include "sprite.h"
diff --git a/src/engine/trig.c b/src/trig.c
index e16a69e63..e16a69e63 100644
--- a/src/engine/trig.c
+++ b/src/trig.c
diff --git a/src/field/tv.c b/src/tv.c
index 36a6331b0..17e98f940 100644
--- a/src/field/tv.c
+++ b/src/tv.c
@@ -22,7 +22,7 @@
#include "battle.h"
#include "link.h"
#include "constants/easy_chat.h"
-#include "field_map_obj.h"
+#include "event_object_movement.h"
#include "field_specials.h"
#include "item.h"
#include "constants/items.h"
@@ -3032,7 +3032,7 @@ void DoTVShowTodaysSmartShopper(void)
break;
case 1:
TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
- StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name);
+ StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[0]));
sub_80BF088(2, smartShopper->itemAmounts[0]);
sTVShowState += (Random() % 4) + 1;
break;
@@ -3052,7 +3052,7 @@ void DoTVShowTodaysSmartShopper(void)
sTVShowState = 10;
break;
case 6:
- StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[1])->name);
+ StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[1]));
sub_80BF088(2, smartShopper->itemAmounts[1]);
if (smartShopper->itemIds[2] != 0)
sTVShowState = 7;
@@ -3062,7 +3062,7 @@ void DoTVShowTodaysSmartShopper(void)
sTVShowState = 9;
break;
case 7:
- StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[2])->name);
+ StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[2]));
sub_80BF088(2, smartShopper->itemAmounts[2]);
if (smartShopper->priceReduced == 1)
sTVShowState = 8;
@@ -3087,7 +3087,7 @@ void DoTVShowTodaysSmartShopper(void)
break;
case 11:
TVShowConvertInternationalString(gStringVar1, smartShopper->playerName, smartShopper->language);
- StringCopy(gStringVar2, ItemId_GetItem(smartShopper->itemIds[0])->name);
+ StringCopy(gStringVar2, ItemId_GetName(smartShopper->itemIds[0]));
if (smartShopper->priceReduced == 1)
sTVShowState = 8;
else
@@ -3219,7 +3219,7 @@ void DoTVShowPokemonTodaySuccessfulCapture(void)
sTVShowState = 2;
break;
case 2:
- StringCopy(gStringVar2, ItemId_GetItem(pokemonToday->ball)->name);
+ StringCopy(gStringVar2, ItemId_GetName(pokemonToday->ball));
sub_80BF088(2, pokemonToday->var12);
if (pokemonToday->var12 < 4)
sTVShowState = 3;
diff --git a/src/unk_text_8095904.c b/src/unk_text_8095904.c
new file mode 100644
index 000000000..4b190bdaa
--- /dev/null
+++ b/src/unk_text_8095904.c
@@ -0,0 +1,266 @@
+#include "global.h"
+#include "text.h"
+#include "string_util.h"
+
+// static types
+
+// static declarations
+
+// rodata
+
+extern const u32 gFont3LatinGlyphs[];
+
+// text
+
+#ifdef NONMATCHING
+void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer)
+{
+ u16 strlen = StringLength(src);
+ if (bgOverride == 0)
+ {
+ u16 i;
+ for (i = 0; i < strlen; i++)
+ {
+ const u8 *glyphs = (const u8 *)(gFont3LatinGlyphs + ((src[i] & 0xfff0) * 16) + ((src[i] & 0xf) * 8));
+ CpuCopy16(glyphs, dest, 32);
+ CpuCopy16(glyphs + 0x200, dest + width, 32);
+ dest += 32;
+ }
+ }
+ else
+ {
+ u16 i; // sp18
+ u16 r9 = 0;
+ u8 bgHi = bg << 4;
+ u16 size = strlen * 32;
+ for (i = 0; i < 2; i++)
+ {
+ u16 j;
+ for (j = 0; j < strlen; j++) // r5
+ {
+ const u32 *glyphs = (const u8 *)(gFont3LatinGlyphs + (i * 0x80) + ((src[j] & 0xfff0) * 16) + ((src[j] & 0xf) * 8));
+
+ u16 k; // r6
+ for (k = 0; k < 32; k++)
+ {
+ u8 r3 = *glyphs & 0xf0;
+ u8 r2 = *glyphs & 0x0f;
+ if (r3 == 0)
+ {
+ r3 = bgHi;
+ }
+ if (r2 == 0)
+ {
+ r2 = bg;
+ }
+ buffer[r9++] = r3 | r2;
+ glyphs++;
+ }
+ }
+ CpuCopy16(buffer, dest, size);
+ dest += width;
+ r9 = 0;
+ }
+ }
+}
+#else
+__attribute__((naked)) void sub_8095904(const u8 *src, u8 *dest, u8 bgOverride, u16 width, u8 bg, u8 *buffer)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x1C\n"
+ "\tstr r0, [sp]\n"
+ "\tadds r7, r1, 0\n"
+ "\tadds r4, r2, 0\n"
+ "\tldr r0, [sp, 0x3C]\n"
+ "\tlsls r4, 24\n"
+ "\tlsrs r4, 24\n"
+ "\tlsls r3, 16\n"
+ "\tlsrs r3, 16\n"
+ "\tstr r3, [sp, 0x4]\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tldr r0, [sp]\n"
+ "\tbl StringLength\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tmov r8, r0\n"
+ "\tcmp r4, 0\n"
+ "\tbne _08095988\n"
+ "\tmovs r5, 0\n"
+ "\tcmp r5, r8\n"
+ "\tbcs _08095A2E\n"
+ "_0809593E:\n"
+ "\tldr r1, [sp]\n"
+ "\tadds r0, r1, r5\n"
+ "\tldrb r2, [r0]\n"
+ "\tldr r0, _08095980 @ =0x0000fff0\n"
+ "\tands r0, r2\n"
+ "\tlsls r0, 6\n"
+ "\tmovs r1, 0xF\n"
+ "\tands r2, r1\n"
+ "\tlsls r2, 5\n"
+ "\tadds r0, r2\n"
+ "\tldr r1, _08095984 @ =gFont3LatinGlyphs\n"
+ "\tadds r4, r0, r1\n"
+ "\tadds r0, r4, 0\n"
+ "\tadds r1, r7, 0\n"
+ "\tmovs r2, 0x10\n"
+ "\tbl CpuSet\n"
+ "\tmovs r2, 0x80\n"
+ "\tlsls r2, 2\n"
+ "\tadds r0, r4, r2\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tadds r1, r7, r3\n"
+ "\tmovs r2, 0x10\n"
+ "\tbl CpuSet\n"
+ "\tadds r7, 0x20\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, r8\n"
+ "\tbcc _0809593E\n"
+ "\tb _08095A2E\n"
+ "\t.align 2, 0\n"
+ "_08095980: .4byte 0x0000fff0\n"
+ "_08095984: .4byte gFont3LatinGlyphs\n"
+ "_08095988:\n"
+ "\tmovs r0, 0\n"
+ "\tmov r9, r0\n"
+ "\tldr r1, [sp, 0x8]\n"
+ "\tlsls r0, r1, 28\n"
+ "\tlsrs r0, 24\n"
+ "\tstr r0, [sp, 0xC]\n"
+ "\tmov r2, r8\n"
+ "\tlsls r0, r2, 21\n"
+ "\tmovs r1, 0\n"
+ "\tlsrs r0, 1\n"
+ "\tstr r0, [sp, 0x10]\n"
+ "_0809599E:\n"
+ "\tmovs r5, 0\n"
+ "\tldr r3, [sp, 0x4]\n"
+ "\tadds r3, r7, r3\n"
+ "\tstr r3, [sp, 0x14]\n"
+ "\tadds r0, r1, 0x1\n"
+ "\tstr r0, [sp, 0x18]\n"
+ "\tcmp r5, r8\n"
+ "\tbcs _08095A12\n"
+ "\tmovs r2, 0xF\n"
+ "\tmov r12, r2\n"
+ "\tlsls r1, 9\n"
+ "\tldr r0, _08095A40 @ =gFont3LatinGlyphs\n"
+ "\tadds r1, r0\n"
+ "\tmov r10, r1\n"
+ "_080959BA:\n"
+ "\tldr r3, [sp]\n"
+ "\tadds r0, r3, r5\n"
+ "\tldrb r1, [r0]\n"
+ "\tldr r0, _08095A44 @ =0x0000fff0\n"
+ "\tands r0, r1\n"
+ "\tlsls r0, 6\n"
+ "\tmov r2, r12\n"
+ "\tands r1, r2\n"
+ "\tlsls r1, 5\n"
+ "\tadds r0, r1\n"
+ "\tmov r3, r10\n"
+ "\tadds r4, r0, r3\n"
+ "\tmovs r6, 0\n"
+ "\tadds r5, 0x1\n"
+ "_080959D6:\n"
+ "\tldrb r0, [r4]\n"
+ "\tmovs r3, 0xF0\n"
+ "\tands r3, r0\n"
+ "\tmov r2, r12\n"
+ "\tands r2, r0\n"
+ "\tcmp r3, 0\n"
+ "\tbne _080959E6\n"
+ "\tldr r3, [sp, 0xC]\n"
+ "_080959E6:\n"
+ "\tcmp r2, 0\n"
+ "\tbne _080959EC\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "_080959EC:\n"
+ "\tmov r0, r9\n"
+ "\tadds r1, r0, 0x1\n"
+ "\tlsls r1, 16\n"
+ "\tlsrs r1, 16\n"
+ "\tmov r9, r1\n"
+ "\tldr r1, [sp, 0x40]\n"
+ "\tadds r0, r1, r0\n"
+ "\torrs r3, r2\n"
+ "\tstrb r3, [r0]\n"
+ "\tadds r4, 0x1\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x1F\n"
+ "\tbls _080959D6\n"
+ "\tlsls r0, r5, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, r8\n"
+ "\tbcc _080959BA\n"
+ "_08095A12:\n"
+ "\tldr r0, [sp, 0x40]\n"
+ "\tadds r1, r7, 0\n"
+ "\tldr r3, [sp, 0x10]\n"
+ "\tlsrs r2, r3, 16\n"
+ "\tbl CpuSet\n"
+ "\tldr r7, [sp, 0x14]\n"
+ "\tmovs r0, 0\n"
+ "\tmov r9, r0\n"
+ "\tldr r1, [sp, 0x18]\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r1, r0, 16\n"
+ "\tcmp r1, 0x1\n"
+ "\tbls _0809599E\n"
+ "_08095A2E:\n"
+ "\tadd sp, 0x1C\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_08095A40: .4byte gFont3LatinGlyphs\n"
+ "_08095A44: .4byte 0x0000fff0");
+}
+#endif
+
+void unref_sub_8095A48(const u8 *src, u8 *dest, u8 bgOverride, u8 width, u8 *buffer)
+{
+ u8 tmpBuffer[5];
+ bool8 r6 = FALSE;
+ while (!r6)
+ {
+ u16 i;
+ for (i = 0; i < 4; i++)
+ {
+ if (*src == EOS)
+ {
+ if (i == 0)
+ {
+ return;
+ }
+ r6 = TRUE;
+ break;
+ }
+ else
+ {
+ tmpBuffer[i] = *src++;
+ }
+ }
+ while (i < 4)
+ {
+ tmpBuffer[i++] = 0;
+ }
+ tmpBuffer[i] = EOS;
+ sub_8095904(tmpBuffer, dest, bgOverride, 0x80, width, buffer);
+ dest += 0x100;
+ }
+}
diff --git a/src/field/use_pokeblock.c b/src/use_pokeblock.c
index 42020c49a..8ea93aab8 100644
--- a/src/field/use_pokeblock.c
+++ b/src/use_pokeblock.c
@@ -104,7 +104,6 @@ static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL;
EWRAM_DATA u8 gPokeblockMonID = 0;
EWRAM_DATA s16 gPokeblockGain = 0;
-extern u16 gKeyRepeatStartDelay;
extern u16 gSpecialVar_ItemId; // FIXME: remove after merge of #349 Pokeblock
static void launch_c3_walk_stairs_and_run_once(void (*const)(void));
diff --git a/src/engine/util.c b/src/util.c
index 582b9f806..582b9f806 100644
--- a/src/engine/util.c
+++ b/src/util.c
diff --git a/src/field/wallclock.c b/src/wallclock.c
index 1f743a61a..1f743a61a 100644
--- a/src/field/wallclock.c
+++ b/src/wallclock.c
diff --git a/src/field/wild_encounter.c b/src/wild_encounter.c
index 79542422e..19778e29b 100644
--- a/src/field/wild_encounter.c
+++ b/src/wild_encounter.c
@@ -3698,13 +3698,13 @@ const u16 gRoute119WaterTileData[] =
extern u16 gSpecialVar_Result;
extern u8 S_RepelWoreOff[];
-EWRAM_DATA static u8 sWildEncountersDisabled = 0;
+EWRAM_DATA u8 sWildEncountersDisabled = 0;
EWRAM_DATA static u32 sFeebasRngValue = 0;
#define NUM_FEEBAS_SPOTS 6
-static u16 FeebasRandom(void);
-static void FeebasSeedRng(u16 seed);
+u16 FeebasRandom(void);
+void FeebasSeedRng(u16 seed);
static bool8 IsWildLevelAllowedByRepel(u8 level);
static void ApplyFluteEncounterRateMod(u32 *encRate);
@@ -3791,17 +3791,30 @@ static bool8 CheckFeebas(void)
return FALSE;
}
-static u16 FeebasRandom(void)
+u16 FeebasRandom(void)
{
sFeebasRngValue = 12345 + 0x41C64E6D * sFeebasRngValue;
return sFeebasRngValue >> 16;
}
-static void FeebasSeedRng(u16 seed)
+void FeebasSeedRng(u16 seed)
{
sFeebasRngValue = seed;
}
+#if DEBUG
+u16 debug_sub_8092344(u8 arg0)
+{
+ if (arg0 == 0)
+ return 131;
+ if (arg0 == 1)
+ return 167;
+ if (arg0 == 2)
+ return 149;
+ return 0;
+}
+#endif
+
static u8 ChooseWildMonIndex_Land(void)
{
u8 rand = Random() % 100;
@@ -4042,6 +4055,24 @@ static bool8 DoWildEncounterRateDiceRoll(u16 encounterRate)
return FALSE;
}
+#if DEBUG
+u16 debug_sub_809283C(u16 attempts)
+{
+ u16 retval = 0;
+ u16 i = 0;
+
+ while (i < attempts)
+ {
+ if (DoWildEncounterRateDiceRoll(320) == TRUE)
+ retval++;
+
+ i++;
+ }
+
+ return retval;
+}
+#endif
+
static bool8 DoWildEncounterTest(u32 encounterRate, bool8 ignoreAbility)
{
encounterRate *= 16;
diff --git a/sym_bss.txt b/sym_bss.txt
index 5e22693fd..01f690085 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -1,39 +1,50 @@
-. = ALIGN(4); src/engine/main.o(.bss);
-. = ALIGN(4); src/engine/sprite.o(.bss);
-. = ALIGN(4); src/engine/text.o(.bss);
-. = ALIGN(4); src/engine/string_util.o(.bss);
-. = ALIGN(4); src/engine/link.o(.bss);
-. = ALIGN(4); src/engine/rtc.o(.bss);
-. = ALIGN(4); src/field/daycare.o(.bss);
-. = ALIGN(4); src/engine/trade.o(.bss);
-. = ALIGN(4); src/scene/berry_blender.o(.bss);
-. = ALIGN(4); src/engine/play_time.o(.bss);
-. = ALIGN(4); src/field/overworld.o(.bss);
-. = ALIGN(4); src/field/field_camera.o(.bss);
-. = ALIGN(4); src/field/field_map_obj.o(.bss);
-. = ALIGN(4); src/field/field_message_box.o(.bss);
-. = ALIGN(4); src/engine/text_window.o(.bss);
-. = ALIGN(4); src/engine/script.o(.bss);
-. = ALIGN(4); src/field/start_menu.o(.bss);
-. = ALIGN(4); src/engine/menu.o(.bss);
-. = ALIGN(4); src/engine/tileset_anim.o(.bss);
-. = ALIGN(4); src/engine/sound.o(.bss);
-. = ALIGN(4); src/field/field_weather.o(.bss);
-. = ALIGN(4); src/field/field_effect.o(.bss);
-. = ALIGN(4); src/field/item_menu.o(.bss);
-. = ALIGN(4); src/field/shop.o(.bss);
-. = ALIGN(4); src/engine/record_mixing.o(.bss);
-. = ALIGN(4); src/field/tv.o(.bss);
+. = ALIGN(4); src/main.o(.bss);
+. = ALIGN(4); src/sprite.o(.bss);
+. = ALIGN(4); src/text.o(.bss);
+. = ALIGN(4); src/string_util.o(.bss);
+. = ALIGN(4); src/link.o(.bss);
+. = ALIGN(4); src/rtc.o(.bss);
+. = ALIGN(4); src/daycare.o(.bss);
+. = ALIGN(4); src/trade.o(.bss);
+. = ALIGN(4); src/berry_blender.o(.bss);
+. = ALIGN(4); src/play_time.o(.bss);
+. = ALIGN(4); src/overworld.o(.bss);
+. = ALIGN(4); src/field_camera.o(.bss);
+. = ALIGN(4); src/event_object_movement.o(.bss);
+. = ALIGN(4); src/field_message_box.o(.bss);
+. = ALIGN(4); src/text_window.o(.bss);
+. = ALIGN(4); src/script.o(.bss);
+. = ALIGN(4); src/start_menu.o(.bss);
+. = ALIGN(4); src/debug/start_menu_debug.o(.bss);
+. = ALIGN(4); src/menu.o(.bss);
+. = ALIGN(4); src/tileset_anim.o(.bss);
+. = ALIGN(4); src/sound.o(.bss);
+. = ALIGN(4); src/field_weather.o(.bss);
+. = ALIGN(4); src/debug/tomomichi_debug_menu.o(.bss);
+. = ALIGN(4); src/debug/nohara_debug_menu.o(.bss);
+. = ALIGN(4); src/field_effect.o(.bss);
+. = ALIGN(4); src/trainer_card.o(.bss);
+. = ALIGN(4); src/item_menu.o(.bss);
+#if DEBUG
+unk_debug_bss_3 = .;
+ . += 0x4;
+#endif
+. = ALIGN(4); src/shop.o(.bss);
+. = ALIGN(4); src/record_mixing.o(.bss);
+. = ALIGN(4); src/tv.o(.bss);
. = ALIGN(4); src/battle/battle_anim_80CA710.o(.bss);
. = ALIGN(4); src/easy_chat_2.o(.bss);
. = ALIGN(4); src/pokenav_before.o(.bss);
-. = ALIGN(4); src/field/mauville_man.o(.bss);
-. = ALIGN(4); src/field/menu_helpers.o(.bss);
-. = ALIGN(4); src/scene/contest_painting.o(.bss);
-. = ALIGN(4); src/field/pokeblock.o(.bss);
-. = ALIGN(4); src/field/field_specials.o(.bss);
-. = ALIGN(4); src/pokemon/learn_move.o(.bss);
-. = ALIGN(4); src/field/player_pc.o(.bss);
+. = ALIGN(4); src/mauville_man.o(.bss);
+. = ALIGN(4); src/mail.o(.bss);
+. = ALIGN(4); src/menu_helpers.o(.bss);
+. = ALIGN(4); src/slot_machine.o(.bss);
+. = ALIGN(4); src/contest_painting.o(.bss);
+. = ALIGN(4); src/pokeblock.o(.bss);
+. = ALIGN(4); src/field_specials.o(.bss);
+. = ALIGN(4); src/learn_move.o(.bss);
+. = ALIGN(4); src/player_pc.o(.bss);
+. = ALIGN(4); src/debug/nakamura_debug_menu.o(.bss);
. = ALIGN(4); src/libs/m4a_1.o(.bss);
. = ALIGN(4); src/libs/agb_flash.o(.bss);
. = ALIGN(4); src/libs/siirtc.o(.bss);
diff --git a/sym_common.txt b/sym_common.txt
index 0bc9fd80c..aec64ebf0 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -6,8 +6,14 @@
// main.c
+#if DEBUG
+/*. += 0x18;*/
+#endif
SYMBOL(gKeyRepeatStartDelay, 4)
SYMBOL(gLinkTransferringData, 4)
+#if DEBUG
+. += 0x8;
+#endif
SYMBOL(gMain, 1088)
SYMBOL(gKeyRepeatContinueDelay, 4)
SYMBOL(gSoftResetDisabled, 4)
@@ -72,7 +78,7 @@ SYMBOL(gLinkCallback, 4)
SYMBOL(gSavedLinkPlayers, 112)
SYMBOL(gShouldAdvanceLinkState, 4)
SYMBOL(gLinkTestBlockChecksums, 8)
-. += 0x4;
+SYMBOL(gUnknown_Debug_30030E0, 4)
SYMBOL(gBlockRequestType, 4)
. += 0x8;
SYMBOL(gLastSendQueueCount, 4)
@@ -106,6 +112,20 @@ SYMBOL(gBattleTextBuff3, 16)
SYMBOL(gBattle_BG1_X, 4)
SYMBOL(gBattle_WIN0H, 4)
. += 0x8;
+
+#if DEBUG
+gUnknown_Debug_03004360 = .;
+ . += 0x10;
+gUnknown_Debug_03004370 = .;
+ . += 0x30;
+gUnknown_Debug_030043A0 = .;
+ . += 0x4;
+gUnknown_Debug_030043A4 = .;
+ . += 0x4;
+gUnknown_Debug_030043A8 = .;
+ . += 0x8;
+#endif
+
SYMBOL(gPreBattleCallback1, 4)
gBattleMainFunc = .;
. += 0xC;
@@ -139,7 +159,7 @@ SYMBOL(gEggHatchData, 4)
// load_save.c
SYMBOL(gFlashMemoryPresent, 4)
-// ???
+// trade.c
SYMBOL(gUnknown_03004824, 4)
SYMBOL(gUnknown_03004828, 4)
. += 0x4;
@@ -166,9 +186,14 @@ SYMBOL(gUnknown_03004880, 24)
SYMBOL(gUnknown_03004898, 4)
SYMBOL(gUnknown_0300489C, 4)
-// field_map_obj.c
+// event_object_movement.c
SYMBOL(gMapObjects, 576)
+#if DEBUG
+gUnknown_Debug_03004BC0 = .;
+. += 0x4;
+#endif
+
// field_control_avatar.c
SYMBOL(gSelectedMapObject, 4)
@@ -178,9 +203,19 @@ SYMBOL(gPokemonItemUseCallback, 4)
// start_menu.c
SYMBOL(gMenuCallback, 4)
+#if DEBUG
+gUnknown_Debug_03004BD0 = .;
+. += 0x4;
+#endif
+
// sound.c
SYMBOL(gDisableMusic, 4)
+#if DEBUG
+unk_debug_common_2 = .;
+. += 0x8;
+#endif
+
// battle_anim.c
SYMBOL(gSoundAnimFramesToWait, 4)
SYMBOL(gBattleAnimArgs, 16)
@@ -189,6 +224,15 @@ SYMBOL(gAnimSpriteIndexArray, 16)
// task.c
SYMBOL(gTasks, 640)
+#if DEBUG
+unk_debug_common_1 = .;
+. += 0x4;
+unk_3004E94 = .;
+. += 0x4;
+unk_3004E98 = .;
+. += 0x8;
+#endif
+
// mori_debug_menu.c
SYMBOL(gUnknown_03004DA0, 32)
@@ -204,17 +248,32 @@ SYMBOL(gUnknown_03005CE4, 4)
SYMBOL(gUnknown_03005CE8, 4)
SYMBOL(gUnknown_03005CEC, 4)
-// ???
+// pokemon_summary_screen.o
SYMBOL(gUnknown_03005CF0, 4)
+
// huh?
. = ALIGN(16);
+
+// item_menu.c
gFieldItemUseCallback = .;
. += 0x10;
gBagPocketScrollStates = .;
. += 0x14;
SYMBOL(gCurrentBagPocketItemSlots, 4)
+
+// contest.c
SYMBOL(gContestRngValue, 4)
+#if DEBUG
+unk_debug_common_0 = .;
+. += 0x4;
+
+// watanabe_debug_menu.c
+byte_3005E30 = .;
+. += 0x20;
+
+#endif
+
// record_mixing.c
SYMBOL(gUnknown_03005D2C, 4)
@@ -224,10 +283,16 @@ SYMBOL(gSoundTestCryNum, 4)
// tv.c
SYMBOL(gUnknown_03005D38, 4)
+#if DEBUG
+. += 0x54;
+#else
. += 0x64; // huge gap?
+#endif
-// ???
+// mauville_man.c
SYMBOL(gUnknown_03005DA0, 0x48)
+
+// cute_sketch.c
SYMBOL(gUnknown_03005DE8, 4)
SYMBOL(gUnknown_03005DEC, 4)
SYMBOL(gUnknown_03005DF0, 4)
@@ -249,7 +314,12 @@ SYMBOL(gUnknown_03005E90, 4)
// evolution_scene.c
SYMBOL(gCB2_AfterEvolution, 4)
-// ???
+#if DEBUG
+gUnknown_Debug_03005FB8 = .;
+. += 0x4;
+#endif
+
+// pokedex_cry_screen.c
SYMBOL(gUnknown_03005E98, 4)
// save.c
@@ -262,13 +332,17 @@ SYMBOL(gFastSaveSection, 4)
SYMBOL(gUnknown_03005EB4, 4)
SYMBOL(gSaveFileStatus, 4)
SYMBOL(gGameContinueCallback, 4)
+#if DEBUG
+. += 0xC;
+#else
. += 0x10;
+#endif
// intro.c
SYMBOL(gIntroFrameCounter, 4)
SYMBOL(gMultibootProgramStruct, 44)
-// ???
+// battle_anim_813F0F4.c
SYMBOL(gUnknown_03005F0C, 4)
SYMBOL(gUnknown_03005F10, 4)
gUnknown_03005F14 = .;
@@ -286,9 +360,16 @@ SYMBOL(gUnknown_03005F3C, 4)
SYMBOL(gUnknown_03005F40, 4)
SYMBOL(gPokeblockFeedPokeSpriteCopy, 68)
SYMBOL(gUnknown_03005F94, 4)
+#if DEBUG
+SYMBOL(gUnknown_03005FA0, 32)
+#else
SYMBOL(gUnknown_03005FA0, 48)
+#endif
// m4a_2.c
+#if DEBUG
+. += 0x10;
+#endif
SYMBOL(gSoundInfo, 4016)
SYMBOL(gPokemonCrySongs, 104)
SYMBOL(gPokemonCryMusicPlayers, 128)
diff --git a/sym_ewram.txt b/sym_ewram.txt
index f6b4852a8..52f205779 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1,11 +1,11 @@
-. = ALIGN(4); src/engine/main.o(ewram_data);
-. = ALIGN(4); src/engine/sprite.o(ewram_data);
-. = ALIGN(4); src/engine/text.o(ewram_data);
-. = ALIGN(4); src/engine/string_util.o(ewram_data);
+. = ALIGN(4); src/main.o(ewram_data);
+. = ALIGN(4); src/sprite.o(ewram_data);
+. = ALIGN(4); src/text.o(ewram_data);
+. = ALIGN(4); src/string_util.o(ewram_data);
. += 0x2E8;
-. = ALIGN(4); src/engine/link.o(ewram_data);
+. = ALIGN(4); src/link.o(ewram_data);
. = ALIGN(4); src/rom3.o(ewram_data);
/* battle */
@@ -32,23 +32,31 @@ gUnknown_02023A04 = .; /* 2023A04 */
gUnknown_02023A14 = .; /* 2023A14 */
. += 0x4C;
-gBattleBufferA = .; /* 2023A60 */
+#if DEBUG
+
+gUnknown_02023A14_4C = .;
+ . += 0x4;
+
+gUnknown_02023A14_50 = .;
. += 0x2;
-gUnknown_02023A62 = .; /* 2023A62 */
- . += 0x1;
+gUnknown_Debug_2023A76 = .;
+gUnknown_Debug_2023A76_ = .;
+ . += 0x8C;
-gUnknown_02023A63 = .; /* 2023A63 */
- . += 0x1;
+gUnknown_Debug_2023B02 = .;
+ . += 0x60;
-gUnknown_02023A64 = .; /* 2023A64 */
- . += 0x7FC;
+gUnknown_Debug_2023B62 = .;
+ . += 0x1A2;
-gBattleBufferB = .; /* 2024260 */
- . += 0x4;
+#endif
-gUnknown_02024264 = .; /* 2024264 */
- . += 0x7FC;
+gBattleBufferA = .; /* 2023A60 */
+ . += 0x800;
+
+gBattleBufferB = .; /* 2024260 */
+ . += 0x800;
gActiveBank = .; /* 2024A60 */
. += 0x4;
@@ -98,7 +106,7 @@ gUnknown_02024ACC = .; /* 2024ACC */
gUnknown_02024AD0 = .; /* 2024AD0 */
. += 0x110;
-gObjectBankIDs = .; /* 2024BE0 */
+gBankSpriteIds = .; /* 2024BE0 */
. += 0x4;
gCurrMovePos = .; /* 2024BE4 */
@@ -293,172 +301,100 @@ gMoveToLearn = .; /* 2024E82 */
gBattleMonForms = .; /* 2024E84 */
. += 0x4;
-. = ALIGN(4); src/pokemon/pokemon_1.o(ewram_data);
-. = ALIGN(4); src/pokemon/pokemon_2.o(ewram_data);
-. = ALIGN(4); src/engine/load_save.o(ewram_data);
-. = ALIGN(4); src/engine/trade.o(ewram_data);
-. = ALIGN(4); src/scene/berry_blender.o(ewram_data);
-. = ALIGN(4); src/scene/new_game.o(ewram_data);
-. = ALIGN(4); src/field/overworld.o(ewram_data);
-. = ALIGN(4); src/field/fieldmap.o(ewram_data);
-. = ALIGN(4); src/field/field_camera.o(ewram_data);
-. = ALIGN(4); src/field/field_player_avatar.o(ewram_data);
-. = ALIGN(4); src/field/field_message_box.o(ewram_data);
-. = ALIGN(4); src/engine/script.o(ewram_data);
-. = ALIGN(4); src/field/scrcmd.o(ewram_data);
-. = ALIGN(4); src/field/field_control_avatar.o(ewram_data);
-. = ALIGN(4); src/field/event_data.o(ewram_data);
-. = ALIGN(4); src/field/party_menu.o(ewram_data);
-. = ALIGN(4); src/field/start_menu.o(ewram_data);
-. = ALIGN(4); src/engine/menu.o(ewram_data);
-. = ALIGN(4); src/engine/tileset_anim.o(ewram_data);
-. = ALIGN(4); src/engine/palette.o(ewram_data);
-. = ALIGN(4); src/engine/sound.o(ewram_data);
+. = ALIGN(4); src/pokemon_1.o(ewram_data);
+. = ALIGN(4); src/pokemon_2.o(ewram_data);
+. = ALIGN(4); src/load_save.o(ewram_data);
+. = ALIGN(4); src/trade.o(ewram_data);
+. = ALIGN(4); src/berry_blender.o(ewram_data);
+. = ALIGN(4); src/new_game.o(ewram_data);
+. = ALIGN(4); src/overworld.o(ewram_data);
+. = ALIGN(4); src/fieldmap.o(ewram_data);
+. = ALIGN(4); src/field_camera.o(ewram_data);
+. = ALIGN(4); src/field_player_avatar.o(ewram_data);
+. = ALIGN(4); src/field_message_box.o(ewram_data);
+. = ALIGN(4); src/script.o(ewram_data);
+. = ALIGN(4); src/scrcmd.o(ewram_data);
+. = ALIGN(4); src/field_control_avatar.o(ewram_data);
+. = ALIGN(4); src/event_data.o(ewram_data);
+. = ALIGN(4); src/party_menu.o(ewram_data);
+. = ALIGN(4); src/start_menu.o(ewram_data);
+. = ALIGN(4); src/menu.o(ewram_data);
+. = ALIGN(4); src/tileset_anim.o(ewram_data);
+. = ALIGN(4); src/palette.o(ewram_data);
+. = ALIGN(4); src/sound.o(ewram_data);
. = ALIGN(4); src/battle/battle_anim.o(ewram_data);
. = ALIGN(4); src/rom_8077ABC.o(ewram_data);
-. = ALIGN(4); src/scene/title_screen.o(ewram_data);
-. = ALIGN(4); src/field/field_weather.o(ewram_data);
+. = ALIGN(4); src/title_screen.o(ewram_data);
+. = ALIGN(4); src/field_weather.o(ewram_data);
. = ALIGN(4); src/battle/battle_setup.o(ewram_data);
-. = ALIGN(4); src/field/wild_encounter.o(ewram_data);
-. = ALIGN(4); src/field/field_effect.o(ewram_data);
+. = ALIGN(4); src/cable_club.o(ewram_data);
+. = ALIGN(4); src/debug/taya_debug_window.o(ewram_data);
+. = ALIGN(4); src/wild_encounter.o(ewram_data);
+. = ALIGN(4); src/field_effect.o(ewram_data);
. = ALIGN(4); src/scanline_effect.o(ewram_data);
-. = ALIGN(4); src/pokemon/pokemon_menu.o(ewram_data);
-. = ALIGN(4); src/pokemon/pokedex.o(ewram_data);
-. = ALIGN(4); src/engine/trainer_card.o(ewram_data);
-. = ALIGN(4); src/pokemon/pokemon_storage_system.o(ewram_data);
-
-/* still pokemon_storage_system */
-
- . = ALIGN(4);
-gUnknown_02038470 = .; /* 2038470 */
- . += 0x3;
-
-gUnknown_02038473 = .; /* 2038473 */
- . += 0x1;
-
-gUnknown_02038474 = .; /* 2038474 */
- . += 0x4;
-
-gUnknown_02038478 = .; /* 2038478 */
- . += 0x4;
-
-gUnknown_0203847C = .; /* 203847C */
- . += 0x1;
-
-gUnknown_0203847D = .; /* 203847D */
- . += 0x1;
-
-gUnknown_0203847E = .; /* 203847E */
- . += 0x1;
-
-gUnknown_0203847F = .; /* 203847F */
- . += 0x1;
-
-gUnknown_02038480 = .; /* 2038480 */
- . += 0x64;
-
-gUnknown_020384E4 = .; /* 20384E4 */
- . += 0x1;
-
-gUnknown_020384E5 = .; /* 20384E5 */
- . += 0x1;
-
-gUnknown_020384E6 = .; /* 20384E6 */
- . += 0x1;
-
-gUnknown_020384E7 = .; /* 20384E7 */
- . += 0x1;
-
-gUnknown_020384E8 = .; /* 20384E8 */
- . += 0x1;
-
-gUnknown_020384E9 = .; /* 20384E9 */
- . += 0x1;
-
-gUnknown_020384EA = .; /* 20384EA */
- . += 0x2;
-
-gUnknown_020384EC = .; /* 20384EC */
- . += 0x4;
-
-. = ALIGN(4); src/pokemon/pokemon_summary_screen.o(ewram_data);
-. = ALIGN(4); src/field/script_movement.o(ewram_data);
-. = ALIGN(4); src/field/map_name_popup.o(ewram_data);
-. = ALIGN(4); src/field/item_menu.o(ewram_data);
+. = ALIGN(4); src/pokemon_menu.o(ewram_data);
+. = ALIGN(4); src/pokedex.o(ewram_data);
+. = ALIGN(4); src/trainer_card.o(ewram_data);
+. = ALIGN(4); src/pokemon_storage_system.o(ewram_data);
+. = ALIGN(4); src/pokemon_storage_system_2.o(ewram_data);
+. = ALIGN(4); src/pokemon_storage_system_3.o(ewram_data);
+. = ALIGN(4); src/pokemon_storage_system_4.o(ewram_data);
+. = ALIGN(4); src/pokemon_storage_system_5.o(ewram_data);
+. = ALIGN(4); src/pokemon_summary_screen.o(ewram_data);
+. = ALIGN(4); src/script_movement.o(ewram_data);
+. = ALIGN(4); src/map_name_popup.o(ewram_data);
+. = ALIGN(4); src/item_menu.o(ewram_data);
. = ALIGN(4); src/contest.o(ewram_data);
-. = ALIGN(4); src/field/shop.o(ewram_data);
-. = ALIGN(4); src/field/fldeff_escalator.o(ewram_data);
-. = ALIGN(4); src/field/money.o(ewram_data);
-. = ALIGN(4); src/engine/record_mixing.o(ewram_data);
+. = ALIGN(4); src/shop.o(ewram_data);
+. = ALIGN(4); src/fldeff_escalator.o(ewram_data);
+. = ALIGN(4); src/debug/watanabe_debug_menu.o(ewram_data);
+. = ALIGN(4); src/money.o(ewram_data);
+. = ALIGN(4); src/record_mixing.o(ewram_data);
. = ALIGN(4); src/debug/sound_check_menu.o(ewram_data);
-. = ALIGN(4); src/field/secret_base.o(ewram_data);
-. = ALIGN(4); src/field/tv.o(ewram_data);
-. = ALIGN(4); src/field/pc_screen_effect.o(ewram_data);
-. = ALIGN(4); src/field/rotating_gate.o(ewram_data);
-. = ALIGN(4); src/field/safari_zone.o(ewram_data);
+. = ALIGN(4); src/secret_base.o(ewram_data);
+. = ALIGN(4); src/tv.o(ewram_data);
+. = ALIGN(4); src/pc_screen_effect.o(ewram_data);
+. = ALIGN(4); src/rotating_gate.o(ewram_data);
+. = ALIGN(4); src/safari_zone.o(ewram_data);
. = ALIGN(4); src/easy_chat_2.o(ewram_data);
-
-/* pokenav */
-
- . = ALIGN(4);
-gUnknown_020388B0 = .; /* 20388B0 */
- . += 0x4;
-
-gUnknown_020388B4 = .; /* 20388B4 */
- . += 0x4;
-
-. = ALIGN(4); src/pokemon/mon_markings.o(ewram_data);
-. = ALIGN(4); src/field/mauville_man.o(ewram_data);
-. = ALIGN(4); src/field/menu_helpers.o(ewram_data);
-. = ALIGN(4); src/field/region_map.o(ewram_data);
-. = ALIGN(4); src/field/decoration.o(ewram_data);
+. = ALIGN(4); src/pokenav.o(ewram_data);
+. = ALIGN(4); src/mon_markings.o(ewram_data);
+. = ALIGN(4); src/mauville_man.o(ewram_data);
+. = ALIGN(4); src/menu_helpers.o(ewram_data);
+. = ALIGN(4); src/region_map.o(ewram_data);
+. = ALIGN(4); src/decoration.o(ewram_data);
. = ALIGN(4); src/battle/battle_ai.o(ewram_data);
. = ALIGN(4); src/rom6.o(ewram_data);
-. = ALIGN(4); src/field/pokeblock.o(ewram_data);
-. = ALIGN(4); src/field/field_specials.o(ewram_data);
-
-/* pokedex_area_screen */
-
- . = ALIGN(4);
-gUnknown_02039260 = .; /* 2039260 */
- . += 0x2;
-
-gUnknown_02039262 = .; /* 2039262 */
- . += 0x2;
-
-gUnknown_02039264 = .; /* 2039264 */
- . += 0x2;
-
-gUnknown_02039266 = .; /* 2039266 */
- . += 0x2;
-
-gUnknown_02039268 = .; /* 2039268 */
- . += 0x2;
-
-gUnknown_0203926A = .; /* 203926A */
- . += 0x2;
-
+. = ALIGN(4); src/pokeblock.o(ewram_data);
+. = ALIGN(4); src/field_specials.o(ewram_data);
+. = ALIGN(4); src/pokedex_area_screen.o(ewram_data);
+. = ALIGN(4); src/roulette.o(ewram_data);
. = ALIGN(4); src/battle/battle_message.o(ewram_data);
-. = ALIGN(4); src/field/choose_party.o(ewram_data);
-. = ALIGN(4); src/scene/cable_car.o(ewram_data);
-. = ALIGN(4); src/engine/save.o(ewram_data);
-. = ALIGN(4); src/engine/mystery_event_script.o(ewram_data);
-. = ALIGN(4); src/field/roamer.o(ewram_data);
-. = ALIGN(4); src/field/use_pokeblock.o(ewram_data);
-. = ALIGN(4); src/field/player_pc.o(ewram_data);
-. = ALIGN(4); src/scene/intro.o(ewram_data);
-. = ALIGN(4); src/scene/hall_of_fame.o(ewram_data);
-. = ALIGN(4); src/scene/credits.o(ewram_data);
-. = ALIGN(4); src/field/lottery_corner.o(ewram_data);
-. = ALIGN(4); src/field/berry_tag_screen.o(ewram_data);
-. = ALIGN(4); src/engine/mystery_event_menu.o(ewram_data);
-. = ALIGN(4); src/engine/save_failed_screen.o(ewram_data);
-. = ALIGN(4); src/pokemon/pokeblock_feed.o(ewram_data);
-. = ALIGN(4); src/scene/intro_credits_graphics.o(ewram_data);
+. = ALIGN(4); src/choose_party.o(ewram_data);
+. = ALIGN(4); src/cable_car.o(ewram_data);
+. = ALIGN(4); src/save.o(ewram_data);
+. = ALIGN(4); src/mystery_event_script.o(ewram_data);
+. = ALIGN(4); src/roamer.o(ewram_data);
+. = ALIGN(4); src/use_pokeblock.o(ewram_data);
+. = ALIGN(4); src/player_pc.o(ewram_data);
+. = ALIGN(4); src/intro.o(ewram_data);
+. = ALIGN(4); src/hall_of_fame.o(ewram_data);
+. = ALIGN(4); src/credits.o(ewram_data);
+. = ALIGN(4); src/lottery_corner.o(ewram_data);
+. = ALIGN(4); src/berry_tag_screen.o(ewram_data);
+. = ALIGN(4); src/mystery_event_menu.o(ewram_data);
+. = ALIGN(4); src/save_failed_screen.o(ewram_data);
+. = ALIGN(4); src/pokeblock_feed.o(ewram_data);
+. = ALIGN(4); src/debug/nakamura_debug_menu.o(ewram_data);
+. = ALIGN(4); src/intro_credits_graphics.o(ewram_data);
/* ??? */
+#if DEBUG
+ . = ALIGN(8);
+#else
. = ALIGN(16);
+#endif
gTileBuffer = .; /* 2039360 */
. += 0x100;
@@ -468,4 +404,4 @@ gUnknown_02039460 = .; /* 2039460 */
gUnknown_02039760 = .; /* 2039760 */
. += 0xC00;
-. = ALIGN(4); src/engine/menu_cursor.o(ewram_data);
+. = ALIGN(4); src/menu_cursor.o(ewram_data);